Release #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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-22.04 | |
outputs: | |
tag_name: ${{ steps.ready_tag.outputs.tag_name }} | |
steps: | |
- name: Checkout 🧰 | |
uses: actions/checkout@v4 | |
- name: Install semver-tool asdf | |
uses: asdf-vm/actions/install@v3 | |
with: | |
tool_versions: | | |
semver 3.4.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/[email protected] | |
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-22.04 | |
needs: [create_tag, build] | |
steps: | |
- name: Fetch package artifact ⬇️ | |
uses: actions/download-artifact@v4 | |
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 |