mirror of
https://code.forgejo.org/actions/forgejo-release.git
synced 2026-03-07 16:33:07 +00:00
feat(ci): Allow uploading single files
This commit is contained in:
parent
e7b60f9ae8
commit
562c553e31
|
|
@ -17,6 +17,7 @@ Upload or download the assets of a release to a Forgejo instance.
|
|||
| `sha` | <p>SHA of the release</p> | `false` | `${{ forge.sha }}` |
|
||||
| `token` | <p>Forgejo application token (must have <code>write:repository</code>)</p> | `false` | `${{ forge.token }}` |
|
||||
| `release-dir` | <p>Directory in which release assets are uploaded or downloaded</p> | `false` | `dist/release` |
|
||||
| `release-files` | <p>Path to one or multiple release asset files to be uploaded (can be used alongside <code>release-dir</code>)</p> | `false` | `""` |
|
||||
| `release-notes` | <p>Release notes</p> | `false` | `""` |
|
||||
| `release-notes-file` | <p>Path to a file containing your release notes (takes priority over <code>release-notes</code>)</p> | `false` | `""` |
|
||||
| `direction` | <p>Can either be <code>download</code> or <code>upload</code></p> | `true` | `""` |
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ inputs:
|
|||
release-dir:
|
||||
description: 'Directory in which release assets are uploaded or downloaded'
|
||||
default: 'dist/release'
|
||||
release-files:
|
||||
description: 'Path to one or multiple release asset files to be uploaded (can be used alongside `release-dir`)'
|
||||
release-notes:
|
||||
description: 'Release notes'
|
||||
release-notes-file:
|
||||
|
|
@ -96,6 +98,7 @@ runs:
|
|||
export TOKEN=${{ inputs.token }}
|
||||
|
||||
export RELEASE_DIR="${{ inputs.release-dir }}"
|
||||
export RELEASE_FILES=(${{ inputs.release-files }})
|
||||
|
||||
export RELEASENOTES=$(cat << 'EOF'
|
||||
${{ inputs.release-notes }}
|
||||
|
|
|
|||
|
|
@ -91,10 +91,17 @@ upload_release() {
|
|||
fi
|
||||
if [ "$SKIP_ASSETS" == 'false' ]; then
|
||||
release_id=$(jq --raw-output .id <"$TMP_DIR"/release.json)
|
||||
for file in "$RELEASE_DIR"/*; do
|
||||
for file in "$RELEASE_DIR"/* "$RELEASE_FILES"; do
|
||||
# https://dev.to/pkutaj/how-to-use-jq-for-uri-encoding-2o5
|
||||
# https://unix.stackexchange.com/questions/94295/shellcheck-is-advising-not-to-use-basename-why/94307#94307
|
||||
# url encode some chars
|
||||
if [ ! "$file" ]; then
|
||||
continue
|
||||
fi
|
||||
if [[ ! -e "$file" ]]; then
|
||||
echo "$file: No such file or directory"
|
||||
exit 1
|
||||
fi
|
||||
asset_name="$(echo -n "${file##*/}" | jq -sRr @uri)"
|
||||
if ! api POST "repos/$REPO/releases/$release_id/assets?name=$asset_name" -H "Content-Type: multipart/form-data" -F "attachment=@$file" >"$TMP_DIR/release-$asset_name.json"; then
|
||||
if ${VERBOSE:-false}; then
|
||||
|
|
|
|||
|
|
@ -122,5 +122,30 @@ jobs:
|
|||
exit 1
|
||||
fi
|
||||
|
||||
- if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
id: release-upload-files
|
||||
uses: SELF@vTest
|
||||
with:
|
||||
direction: upload
|
||||
tag: v/3.0-release-file
|
||||
token: FORGEJO_TEST_TOKEN
|
||||
release-files: |
|
||||
upload-dir-v3/file1-v3.txt
|
||||
upload-dir-v3/file2-v3.txt
|
||||
release-notes: "RELEASE NOTES"
|
||||
verbose: true
|
||||
- if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
id: release-download-with-slash-in-tag
|
||||
uses: SELF@vTest
|
||||
with:
|
||||
direction: download
|
||||
tag: v/3.0
|
||||
token: FORGEJO_TEST_TOKEN
|
||||
release-dir: download-dir-v3-files
|
||||
verbose: true
|
||||
- if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
run: |
|
||||
diff -u upload-dir-v3 download-dir-v3
|
||||
|
||||
- if: failure()
|
||||
run: docker logs forgejo
|
||||
|
|
|
|||
Loading…
Reference in a new issue