mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-27 04:06:10 +01:00
111 lines
3.8 KiB
YAML
111 lines
3.8 KiB
YAML
|
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: Create the release notes
|
||
|
id: release-notes
|
||
|
run: |
|
||
|
anchor=${{ steps.tag-version.outputs.value }}
|
||
|
anchor=${anchor//./-}
|
||
|
cat >> "$GITHUB_OUTPUT" <<EOF
|
||
|
value<<ENDVAR
|
||
|
See https://codeberg.org/forgejo/forgejo/src/branch/forgejo/RELEASE-NOTES.md#$anchor
|
||
|
ENDVAR
|
||
|
EOF
|
||
|
|
||
|
- 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: ${{ steps.release-notes.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 }}
|