|
7 | 7 | - 'v*' |
8 | 8 | pull_request: |
9 | 9 | branches: [ "main" ] |
| 10 | + workflow_dispatch: |
| 11 | + inputs: |
| 12 | + version: |
| 13 | + description: 'Release version/tag, e.g. v0.1.0-alpha.1' |
| 14 | + required: true |
| 15 | + default: 'v0.1.0-alpha.1' |
| 16 | + prerelease: |
| 17 | + description: 'Mark this release as prerelease' |
| 18 | + required: true |
| 19 | + type: boolean |
| 20 | + default: true |
10 | 21 |
|
11 | 22 | jobs: |
12 | 23 | build: |
@@ -44,13 +55,36 @@ jobs: |
44 | 55 |
|
45 | 56 | release: |
46 | 57 | needs: build |
47 | | - if: startsWith(github.ref, 'refs/tags/v') |
| 58 | + if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch' |
48 | 59 | runs-on: ubuntu-latest |
49 | 60 | permissions: |
50 | 61 | contents: write |
51 | 62 | steps: |
52 | 63 | - uses: actions/checkout@v4 |
53 | 64 |
|
| 65 | + - name: Resolve release metadata |
| 66 | + id: release_meta |
| 67 | + shell: bash |
| 68 | + run: | |
| 69 | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then |
| 70 | + TAG_NAME="${{ inputs.version }}" |
| 71 | + PRERELEASE="${{ inputs.prerelease }}" |
| 72 | + else |
| 73 | + TAG_NAME="${GITHUB_REF_NAME}" |
| 74 | + if [[ "${TAG_NAME}" == *"-alpha"* ]] || [[ "${TAG_NAME}" == *"-beta"* ]] || [[ "${TAG_NAME}" == *"-rc"* ]]; then |
| 75 | + PRERELEASE="true" |
| 76 | + else |
| 77 | + PRERELEASE="false" |
| 78 | + fi |
| 79 | + fi |
| 80 | +
|
| 81 | + if [[ "${TAG_NAME}" != v* ]]; then |
| 82 | + TAG_NAME="v${TAG_NAME}" |
| 83 | + fi |
| 84 | +
|
| 85 | + echo "tag_name=${TAG_NAME}" >> "$GITHUB_OUTPUT" |
| 86 | + echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT" |
| 87 | +
|
54 | 88 | - name: Download APK |
55 | 89 | uses: actions/download-artifact@v4 |
56 | 90 | with: |
|
59 | 93 | - name: Create Release |
60 | 94 | uses: ncipollo/release-action@v1 |
61 | 95 | with: |
| 96 | + tag: ${{ steps.release_meta.outputs.tag_name }} |
| 97 | + name: ${{ steps.release_meta.outputs.tag_name }} |
| 98 | + prerelease: ${{ steps.release_meta.outputs.prerelease }} |
62 | 99 | artifacts: "app-release.apk" |
63 | 100 | token: ${{ secrets.GITHUB_TOKEN }} |
64 | 101 | generateReleaseNotes: true |
0 commit comments