diff options
| author | K900 <me@0upti.me> | 2023-11-14 09:39:58 +0300 |
|---|---|---|
| committer | AAGaming <aagaming@riseup.net> | 2023-12-29 18:34:19 -0500 |
| commit | 31a6202da96922162f8a567c137e3313a554d8d3 (patch) | |
| tree | ec50478ce37fc434620e5bbee5c1037b958d4683 /.github/workflows/release.yml | |
| parent | 3565c3c9b452495ee41aeb1913af63fa0a21971a (diff) | |
| download | decky-loader-31a6202da96922162f8a567c137e3313a554d8d3.tar.gz decky-loader-31a6202da96922162f8a567c137e3313a554d8d3.zip | |
refactor(ci): reorganize CI to build tagged artifacts
Diffstat (limited to '.github/workflows/release.yml')
| -rw-r--r-- | .github/workflows/release.yml | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..1136054d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,156 @@ +name: Release + +on: + workflow_dispatch: + inputs: + release: + type: choice + description: Release the asset + default: 'none' + options: + - none + - prerelease + - release + bump: + type: choice + description: Semver to bump + default: 'none' + options: + - none + - patch + - minor + - major + +permissions: + contents: write + +jobs: + create_tag: + name: Tag a new version of the package + runs-on: ubuntu-latest + outputs: + tag_name: ${{ steps.ready_tag.outputs.tag_name }} + + steps: + - name: Checkout 🧰 + uses: actions/checkout@v3 + + - name: Install semver-tool asdf + uses: asdf-vm/actions/install@v1 + with: + tool_versions: | + semver 3.3.0 + + - name: Get latest release + uses: rez0n/actions-github-release@main + id: latest_release + with: + token: ${{ secrets.GITHUB_TOKEN }} + repository: "SteamDeckHomebrew/decky-loader" + type: "nodraft" + + - name: Prepare tag ⚙️ + id: ready_tag + run: | + export VERSION=${{ steps.latest_release.outputs.release }} + echo "VERS: $VERSION" + if [[ ${{github.event.inputs.release}} == "release" ]]; then + OUT="notsemver" + if [[ "$VERSION" =~ "-pre" ]]; then + printf "is prerelease, bumping to release\n" + OUT=$(semver bump release "$VERSION") + printf "OUT: ${OUT}\n"\ + printf "bumping by selected type.\n" + if [[ "${{github.event.inputs.bump}}" != "none" ]]; then + OUT=$(semver bump ${{github.event.inputs.bump}} "$OUT") + printf "OUT: ${OUT}\n" + else + printf "no type selected, not bumping for release.\n" + fi + elif [[ ! "$VERSION" =~ "-pre" ]]; then + printf "previous tag is a release, bumping by selected type.\n" + if [[ "${{github.event.inputs.bump}}" != "none" ]]; then + OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") + printf "OUT: ${OUT}\n" + else + printf "previous tag is a release, but no bump selected. Defaulting to a patch bump.\n" + OUT=$(semver bump patch "$VERSION") + printf "OUT: ${OUT}\n" + fi + fi + else + OUT="" + if [[ ! "$VERSION" =~ "-pre" ]]; then + printf "pre-release from release, bumping by selected type and prerel\n" + if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then + OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") + printf "OUT: ${OUT}\n" + else + printf "type not selected, defaulting to patch\n" + OUT=$(semver bump patch "$VERSION") + printf "OUT: ${OUT}\n" + fi + OUT="$OUT-pre" + OUT=$(semver bump prerel "$OUT") + printf "OUT: ${OUT}\n" + elif [[ "$VERSION" =~ "-pre" ]]; then + printf "pre-release to pre-release, bumping by selected type and or prerel version\n" + if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then + OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") + printf "OUT: ${OUT}\n" + OUT="$OUT-pre" + printf "OUT: ${OUT}\n" + printf "bumping prerel\n" + OUT=$(semver bump prerel "$OUT") + printf "OUT: ${OUT}\n" + else + printf "type not selected, defaulting to new pre-release only\n" + printf "bumping prerel\n" + OUT=$(semver bump prerel "$VERSION") + printf "OUT: ${OUT}\n" + fi + fi + fi + echo "vOUT: v${OUT}" + echo tag_name=v$OUT >> $GITHUB_OUTPUT + + - name: Push tag 📤 + uses: rickstaa/action-create-tag@v1.3.2 + if: ${{ steps.ready_tag.outputs.tag_name && !env.ACT }} + with: + tag: ${{ steps.ready_tag.outputs.tag_name }} + message: Pre-release ${{ steps.ready_tag.outputs.tag_name }} + + build: + name: Build tagged artifact + uses: ./.github/workflows/build.yml + needs: [create_tag] + + release: + name: Release tagged artifact + runs-on: ubuntu-latest + needs: [create_tag, build] + steps: + - name: Fetch package artifact ⬇️ + uses: actions/download-artifact@v3 + with: + name: PluginLoader + + - name: Pre-release 📦 + if: github.event.inputs.release == 'prerelease' + uses: softprops/action-gh-release@v1 + with: + name: Prerelease ${{ needs.create_tag.outputs.tag_name }} + tag_name: ${{ needs.create_tag.outputs.tag_name }} + files: ./PluginLoader + prerelease: true + generate_release_notes: true + - name: Release 📦 + if: github.event.inputs.release == 'release' + uses: softprops/action-gh-release@v1 + with: + name: Release ${{ needs.create_tag.outputs.tag_name }} + tag_name: ${{ needs.create_tag.outputs.tag_name }} + files: ./PluginLoader + prerelease: false + generate_release_notes: true |
