name: 'Publish release' author: 'Forgejo authors' description: | Publish release inputs: forgejo: description: 'URL of the Forgejo instance where the release is uploaded (e.g. https://codeberg.org)' required: true from-owner: description: 'the owner from which a release is to be copied (e.g forgejo-integration)' required: true to-owner: description: 'the owner to which a release is to be copied (e.g. forgejo-experimental). It has be an organization in which doer has the required permissions. Or be the same as the doer' required: true repo: description: 'the repository from which a release is to be copied relative to from-owner and to-owner' default: 'forgejo' ref-name: description: 'ref_name of the tag of the release to be copied (e.g. github.ref_name)' required: true doer: description: 'Name of the user authoring the release (e.g. release-team). The user must be authorized to create packages in to-owner and releases in to-owner/repo' required: true token: description: 'application token created on forgejo by the doer, with a scope allowing it to create packages in to-owner and releases in to-owner/repo' required: true gpg-private-key: description: 'GPG Private Key to sign the release artifacts' gpg-passphrase: description: 'Passphrase of the GPG Private Key' verbose: description: 'Increase the verbosity level' default: 'false' runs: using: "composite" steps: - id: hostport run: | url="${{ inputs.forgejo }}" hostport=${url##http*://} hostport=${hostport%%/} echo "value=$hostport" >> "$GITHUB_OUTPUT" - id: tag-version run: | version="${{ inputs.ref-name }}" version=${version##*v} echo "value=$version" >> "$GITHUB_OUTPUT" - name: apt-get install docker.io run: | DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -qq -y docker.io - name: download release uses: https://code.forgejo.org/actions/forgejo-release@v1 with: url: ${{ inputs.forgejo }} repo: ${{ inputs.from-owner }}/${{ inputs.repo }} direction: download release-dir: release download-retry: 60 token: ${{ inputs.token }} verbose: ${{ inputs.verbose }} - name: upload release uses: https://code.forgejo.org/actions/forgejo-release@v1 with: url: ${{ inputs.forgejo }} repo: ${{ inputs.to-owner }}/${{ inputs.repo }} direction: upload release-dir: release release-notes: "See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#${{ steps.tag-version.outputs.value }}" token: ${{ inputs.token }} gpg-private-key: ${{ inputs.gpg-private-key }} gpg-passphrase: ${{ inputs.gpg-passphrase }} verbose: ${{ inputs.verbose }} - name: login to the registry uses: https://github.com/docker/login-action@v2 with: registry: ${{ steps.hostport.outputs.value }} username: ${{ inputs.doer }} password: ${{ inputs.token }} - uses: https://code.forgejo.org/forgejo/forgejo-container-image@v1 env: VERIFY: 'false' with: url: https://${{ steps.hostport.outputs.value }} destination-owner: ${{ inputs.to-owner }} owner: ${{ inputs.from-owner }} suffixes: '-rootless' project: ${{ inputs.repo }} tag: ${{ steps.tag-version.outputs.value }} doer: ${{ inputs.doer }} token: ${{ inputs.token }} verbose: ${{ inputs.verbose }}