summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorK900 <me@0upti.me>2023-11-14 09:39:58 +0300
committerAAGaming <aagaming@riseup.net>2023-12-29 18:34:19 -0500
commit31a6202da96922162f8a567c137e3313a554d8d3 (patch)
treeec50478ce37fc434620e5bbee5c1037b958d4683 /.github/workflows
parent3565c3c9b452495ee41aeb1913af63fa0a21971a (diff)
downloaddecky-loader-31a6202da96922162f8a567c137e3313a554d8d3.tar.gz
decky-loader-31a6202da96922162f8a567c137e3313a554d8d3.zip
refactor(ci): reorganize CI to build tagged artifacts
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml194
-rw-r--r--.github/workflows/release.yml156
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