forgejo-release/action.yml

117 lines
3.5 KiB
YAML
Raw Permalink Normal View History

2023-04-01 12:12:56 +03:00
# SPDX-License-Identifier: MIT
2023-03-29 18:16:26 +03:00
name: 'Forgejo release download and upload'
author: 'Forgejo authors'
description: |
2023-03-29 18:16:26 +03:00
Upload or download the assets of a release to a Forgejo instance.
inputs:
url:
description: 'URL of the Forgejo instance'
repo:
description: 'owner/project relative to the URL'
tag:
description: 'Tag of the release'
title:
description: 'Title of the release (defaults to tag)'
sha:
description: 'SHA of the release'
2023-03-29 18:16:26 +03:00
token:
description: 'Forgejo application token'
required: true
release-dir:
description: 'Directory in whichs release assets are uploaded or downloaded'
required: true
2023-03-30 00:59:02 +03:00
release-notes:
description: 'Release notes'
2023-03-29 18:16:26 +03:00
direction:
2024-10-29 12:59:58 +02:00
description: 'Can either be `download` or `upload`'
2023-03-29 18:16:26 +03:00
required: true
2023-05-23 14:04:53 +03:00
gpg-private-key:
description: 'GPG Private Key to sign the release artifacts'
gpg-passphrase:
description: 'Passphrase of the GPG Private Key'
download-retry:
description: 'Number of times to retry if the release is not ready (default 1)'
download-latest:
description: 'Download the latest release'
default: 'false'
2023-03-29 18:16:26 +03:00
verbose:
description: 'Increase the verbosity level'
default: 'false'
override:
2024-10-29 12:59:58 +02:00
description: 'Override an existing release by the same `{tag}`'
default: 'false'
2024-01-03 20:23:39 +02:00
prerelease:
description: 'Mark Release as Pre-Release'
default: 'false'
2024-10-29 17:08:41 +02:00
release-notes-assistant:
description: 'Generate release notes with Release Notes Assistant'
default: 'false'
2024-01-03 20:23:39 +02:00
runs:
using: "composite"
steps:
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
shell: bash
2023-03-29 18:16:26 +03:00
- run: |
export FORGEJO="${{ inputs.url }}"
2023-03-30 09:52:59 +03:00
if test -z "$FORGEJO"; then
export FORGEJO="${{ env.GITHUB_SERVER_URL }}"
2023-03-30 09:52:59 +03:00
fi
# A trailing / will mean http://forgejo//api/v1 is used
# and it always 401 as of v1.19, because of the double slash
FORGEJO=${FORGEJO%%/}
2024-10-29 17:08:41 +02:00
export SCHEME=${FORGEJO%://*}
export HOST=${FORGEJO#*://}
2023-05-23 14:04:39 +03:00
2023-03-29 18:16:26 +03:00
export REPO="${{ inputs.repo }}"
2023-03-30 09:52:59 +03:00
if test -z "$REPO"; then
export REPO="${{ github.repository }}"
fi
2023-05-23 14:04:39 +03:00
2023-03-29 18:16:26 +03:00
export TAG="${{ inputs.tag }}"
2023-03-30 15:18:23 +03:00
if test -z "$TAG"; then
export TAG="${{ github.ref_name }}"
2023-03-31 01:36:06 +03:00
# until https://code.forgejo.org/forgejo/runner/issues/9 is fixed
# trim refs/tags/
TAG=${TAG##refs/tags/}
2023-03-30 15:18:23 +03:00
fi
2023-05-23 14:04:39 +03:00
export TITLE="${{ inputs.title }}"
export DOWNLOAD_LATEST="${{ inputs.download-latest }}"
2024-01-03 20:23:39 +02:00
export PRERELEASE="${{ inputs.prerelease }}"
2024-10-29 17:08:41 +02:00
export RELEASE_NOTES_ASSISTANT="${{ inputs.release-notes-assistant }}"
2023-03-29 18:16:26 +03:00
export TOKEN="${{ inputs.token }}"
2023-05-23 14:04:39 +03:00
2023-03-29 18:16:26 +03:00
export RELEASE_DIR="${{ inputs.release-dir }}"
2023-05-23 14:04:39 +03:00
export RELEASENOTES=$(cat << 'EOF'
${{ inputs.release-notes }}
EOF
)
2023-03-30 09:52:59 +03:00
export SHA="${{ inputs.sha }}"
if test -z "$SHA"; then
export SHA="${{ github.sha }}"
fi
2023-05-23 14:04:39 +03:00
export OVERRIDE="${{ inputs.override }}"
2023-05-23 14:04:39 +03:00
export VERBOSE="${{ inputs.verbose }}"
export RETRY="${{ inputs.download-retry }}"
2023-05-26 15:48:58 +03:00
export TMP_DIR=$(mktemp -d)
trap "rm -fr $TMP_DIR" EXIT
echo -n "${{ inputs.gpg-private-key }}" > $TMP_DIR/gpg-private-key
export GPG_PRIVATE_KEY=$TMP_DIR/gpg-private-key
echo -n "${{ inputs.gpg-passphrase }}" > $TMP_DIR/gpg-passphrase
export GPG_PASSPHRASE="$TMP_DIR/gpg-passphrase"
2023-03-29 18:16:26 +03:00
forgejo-release.sh ${{ inputs.direction }}
shell: bash