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 | |
| 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')
| -rw-r--r-- | .github/workflows/build.yml | 194 | ||||
| -rw-r--r-- | .github/workflows/release.yml | 156 |
2 files changed, 157 insertions, 193 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0440e582..e7881726 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,30 +3,9 @@ name: Builder on: push: pull_request: + workflow_call: # schedule: # - cron: '0 13 * * *' # run at 1 PM UTC - 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: build: @@ -34,11 +13,6 @@ jobs: runs-on: ubuntu-22.04 steps: - - name: Print input - run : | - echo "release: ${{ github.event.inputs.release }}\n" - echo "bump: ${{ github.event.inputs.bump }}\n" - - name: Checkout 🧰 uses: actions/checkout@v3 with: @@ -110,169 +84,3 @@ jobs: uses: actions/upload-artifact@v3 with: path: ./backend/dist/PluginLoader - - release: - name: Release stable version of the package - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'release' }} - needs: build - runs-on: ubuntu-latest - - 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: Fetch package artifact ⬇️ - uses: actions/download-artifact@v3 - if: ${{ !env.ACT }} - with: - name: PluginLoader - path: dist - - - 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" - 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 - 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 && github.event_name == 'workflow_dispatch' && !env.ACT }} - with: - tag: ${{ steps.ready_tag.outputs.tag_name }} - message: Pre-release ${{ steps.ready_tag.outputs.tag_name }} - - - name: Release 📦 - uses: softprops/action-gh-release@v1 - if: ${{ github.event_name == 'workflow_dispatch' && !env.ACT }} - with: - name: Release ${{ steps.ready_tag.outputs.tag_name }} - tag_name: ${{ steps.ready_tag.outputs.tag_name }} - files: ./backend/dist/PluginLoader - prerelease: false - generate_release_notes: true - - prerelease: - name: Release the pre-release version of the package - if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'prerelease' }} - needs: build - runs-on: ubuntu-latest - - 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: Fetch package artifact ⬇️ - uses: actions/download-artifact@v3 - if: ${{ !env.ACT }} - with: - name: PluginLoader - path: dist - - - 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" - 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 - printf "vOUT: v${OUT}\n" - 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 && github.event_name == 'workflow_dispatch' && !env.ACT }} - with: - tag: ${{ steps.ready_tag.outputs.tag_name }} - message: Pre-release ${{ steps.ready_tag.outputs.tag_name }} - - - name: Release 📦 - uses: softprops/action-gh-release@v1 - if: ${{ github.event_name == 'workflow_dispatch' && !env.ACT }} - with: - name: Prerelease ${{ steps.ready_tag.outputs.tag_name }} - tag_name: ${{ steps.ready_tag.outputs.tag_name }} - files: ./backend/dist/PluginLoader - prerelease: true - generate_release_notes: true 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 |
