diff --git a/.forgejo/workflows/integration.yml b/.forgejo/workflows/integration.yml index 8e2b422..ba79cf2 100644 --- a/.forgejo/workflows/integration.yml +++ b/.forgejo/workflows/integration.yml @@ -1,11 +1,9 @@ -on: - pull_request: - push: - branches: - - "**" +on: [ pull_request, push ] + env: - FORGEJO_VERSION: 11.0.10 # renovate: datasource=docker depName=data.forgejo.org/forgejo/forgejo + FORGEJO_VERSION: 11.0.9 # renovate: datasource=docker depName=code.forgejo.org/forgejo/forgejo + jobs: integration: @@ -14,7 +12,7 @@ jobs: - uses: actions/checkout@v6 - id: forgejo - uses: https://code.forgejo.org/actions/setup-forgejo@v3.1.3 + uses: https://code.forgejo.org/actions/setup-forgejo@v3.1.0 with: user: testuser password: admin1234 @@ -70,7 +68,7 @@ jobs: testdata/forgejo-release-test.sh test_run testuser otherrepo - if: always() - name: "[RUNNER] and [FORGEJO] logs" + name: '[RUNNER] and [FORGEJO] logs' run: | runner_logs="${{ steps.forgejo.outputs.runner-logs }}" if test -f "$runner_logs"; then diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml deleted file mode 100644 index e3c5bca..0000000 --- a/.forgejo/workflows/release.yml +++ /dev/null @@ -1,23 +0,0 @@ -on: - push: - tags: - - v* - -jobs: - publish: - runs-on: docker - - steps: - # needs to be in a different dir, so binary and rna cache don't conflict - - uses: https://data.forgejo.org/actions/checkout@v6 - with: - path: forgejo-release - - - name: publish release - uses: ./forgejo-release - with: - direction: upload - override: ${{ vars.OVERRIDE || 'false' }} - verbose: ${{ vars.VERBOSE || 'false' }} - release-notes-assistant: true - skip-assets: true diff --git a/.forgejo/workflows/tests.yml b/.forgejo/workflows/tests.yml index d521c77..f00722b 100644 --- a/.forgejo/workflows/tests.yml +++ b/.forgejo/workflows/tests.yml @@ -1,27 +1,10 @@ -on: - pull_request: - push: - branches: - - "**" - +on: [ pull_request, push ] jobs: tests: runs-on: docker - container: - image: data.forgejo.org/oci/node:24-trixie - steps: - uses: actions/checkout@v6 - - name: lint action-docs - run: | - npx --yes action-docs -u - git diff --quiet || { - echo "[ERROR] Please apply the changes action-docs suggests:" - git diff --color=always - exit 1 - } - - name: Unit tests of the supporting script forgejo-release.sh run: | testdata/forgejo-release-test.sh test_system_tea_bin diff --git a/README.md b/README.md index f73f620..f00e8bc 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,13 @@ Upload or download the assets of a release to a Forgejo instance. | name | description | required | default | | --- | --- | --- | --- | -| `url` |

URL of the Forgejo instance

| `false` | `${{ env.FORGEJO_SERVER_URL }}` | -| `repo` |

owner/project relative to the URL

| `false` | `${{ forge.repository }}` | -| `tag` |

Tag of the release

| `false` | `${{ forge.ref_name }}` | +| `url` |

URL of the Forgejo instance

| `false` | `${{ env.GITHUB_SERVER_URL }}` | +| `repo` |

owner/project relative to the URL

| `false` | `${{ github.repository }}` | +| `tag` |

Tag of the release

| `false` | `${{ github.ref_name }}` | | `title` |

Title of the release (defaults to tag)

| `false` | `""` | -| `sha` |

SHA of the release

| `false` | `${{ forge.sha }}` | -| `token` |

Forgejo application token (must have write:repository)

| `false` | `${{ forge.token }}` | -| `release-dir` |

Directory in which release assets are uploaded or downloaded

| `false` | `dist/release` | +| `sha` |

SHA of the release

| `false` | `${{ github.sha }}` | +| `token` |

Forgejo application token (must have `write:repository`)

| `false` | `${{ secrets.GITHUB_TOKEN }}` | +| `release-dir` |

Directory in whichs release assets are uploaded or downloaded

| `true` | `""` | | `release-notes` |

Release notes

| `false` | `""` | | `direction` |

Can either be download or upload

| `true` | `""` | | `gpg-private-key` |

GPG Private Key to sign the release artifacts

| `false` | `""` | @@ -28,7 +28,6 @@ Upload or download the assets of a release to a Forgejo instance. | `prerelease` |

Mark Release as Pre-Release

| `false` | `false` | | `release-notes-assistant` |

Generate release notes with Release Notes Assistant

| `false` | `false` | | `hide-archive-link` |

Hide the archive links

| `false` | `false` | -| `skip-assets` |

Skip uploading release assets

| `false` | `false` | ## Examples @@ -43,7 +42,7 @@ jobs: runs-on: docker steps: - uses: actions/checkout@v4 - - uses: actions/forgejo-release@v2.9.1 + - uses: actions/forgejo-release@v2.7.3 with: direction: upload url: https://my-forgejo-instance.net @@ -64,7 +63,7 @@ jobs: runs-on: docker steps: - uses: actions/checkout@v4 - - uses: actions/forgejo-release@v2.9.1 + - uses: actions/forgejo-release@v2.7.3 with: direction: download url: https://my-forgejo-instance.net @@ -84,5 +83,5 @@ Using [action-docs](https://github.com/npalm/action-docs): ```shell # Edit the action.yml file and run: -npx action-docs --update-readme +action-docs --update-readme ``` diff --git a/action.yml b/action.yml index adbcc1b..f6725c7 100644 --- a/action.yml +++ b/action.yml @@ -19,11 +19,11 @@ inputs: description: 'SHA of the release' default: '${{ forge.sha }}' token: - description: 'Forgejo application token (must have `write:repository`)' + description: 'Forgejo application token' default: '${{ forge.token }}' release-dir: - description: 'Directory in which release assets are uploaded or downloaded' - default: 'dist/release' + description: 'Directory in whichs release assets are uploaded or downloaded' + required: true release-notes: description: 'Release notes' direction: @@ -37,25 +37,22 @@ inputs: description: 'Number of times to retry if the release is not ready (default 1)' download-latest: description: 'Download the latest release' - default: 'false' + default: false verbose: description: 'Increase the verbosity level' - default: 'false' + default: false override: description: 'Override an existing release by the same `{tag}`' - default: 'false' + default: false prerelease: description: 'Mark Release as Pre-Release' - default: 'false' + default: false release-notes-assistant: description: 'Generate release notes with Release Notes Assistant' - default: 'false' + default: false hide-archive-link: description: 'Hide the archive links' - default: 'false' - skip-assets: - description: Skip uploading release assets - default: 'false' + default: false runs: using: "composite" @@ -116,7 +113,5 @@ runs: echo -n "${{ inputs.gpg-passphrase }}" > $TMP_DIR/gpg-passphrase export GPG_PASSPHRASE="$TMP_DIR/gpg-passphrase" - export SKIP_ASSETS="${{ inputs.skip-assets }}" - forgejo-release.sh ${{ inputs.direction }} shell: bash diff --git a/forgejo-release.sh b/forgejo-release.sh index 88539b1..83ce24d 100755 --- a/forgejo-release.sh +++ b/forgejo-release.sh @@ -18,7 +18,6 @@ if ${VERBOSE:-false}; then set -x; fi : ${HIDE_ARCHIVE_LINK:=false} : ${RETRY:=1} : ${DELAY:=10} -: ${SKIP_ASSETS:=false} RELEASE_NOTES_ASSISTANT_VERSION=v1.5.1 # renovate: datasource=forgejo-releases depName=forgejo/release-notes-assistant registryUrl=https://code.forgejo.org @@ -85,11 +84,9 @@ upload_release() { # It is expanded using "${assets[@]}" which preserves the separation of arguments and not split whitespace containing values. # For reference, see https://github.com/koalaman/shellcheck/wiki/SC2086#exceptions local assets=() - if [ "$SKIP_ASSETS" == 'false' ]; then - for file in "$RELEASE_DIR"/*; do - assets=("${assets[@]}" -a "$file") - done - fi + for file in "$RELEASE_DIR"/*; do + assets=("${assets[@]}" -a "$file") + done if $PRERELEASE || echo "${TAG}" | grep -qi '\-rc'; then releaseType="--prerelease" echo "Uploading as Pre-Release" @@ -210,7 +207,7 @@ download() { ( mkdir -p $RELEASE_DIR cd $RELEASE_DIR - if [[ ${DOWNLOAD_LATEST} = "true" ]]; then + if [[ ${DOWNLOAD_LATEST} == "true" ]]; then echo "Downloading the latest release" api GET repos/$REPO/releases/latest >"$TMP_DIR"/assets.json elif [[ ${DOWNLOAD_LATEST} == "false" ]]; then diff --git a/testdata/nested-upload-download/.forgejo/workflows/test.yml b/testdata/nested-upload-download/.forgejo/workflows/test.yml index 2ebfbe7..83be00c 100644 --- a/testdata/nested-upload-download/.forgejo/workflows/test.yml +++ b/testdata/nested-upload-download/.forgejo/workflows/test.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v6 - id: forgejo - uses: https://code.forgejo.org/actions/setup-forgejo@v3.1.3 + uses: https://code.forgejo.org/actions/setup-forgejo@v3.1.0 with: user: testuser password: admin1234 diff --git a/testdata/upload-download/.forgejo/workflows/test.yml b/testdata/upload-download/.forgejo/workflows/test.yml index 518e019..a9c357d 100644 --- a/testdata/upload-download/.forgejo/workflows/test.yml +++ b/testdata/upload-download/.forgejo/workflows/test.yml @@ -92,35 +92,5 @@ jobs: - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} run: | diff -u upload-dir-v3 download-dir-v3 - - - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - id: release-upload-v4 - uses: SELF@vTest - with: - direction: upload - tag: v4.0 - token: FORGEJO_TEST_TOKEN - skip-assets: true - verbose: true - - - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - id: release-download-v4 - uses: SELF@vTest - with: - direction: download - tag: v4.0 - token: FORGEJO_TEST_TOKEN - release-dir: download-dir-v4 - - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - run: | - if [ ! -d download-dir-v4 ]; then - echo "Missing download dir" - exit 1 - fi - if [ ! -z "$( ls -A download-dir-v4 )" ]; then - echo "Unexpected download files: $( ls -A download-dir-v4 )" - exit 1 - fi - - if: failure() run: docker logs forgejo