opengoal-launcher/.github/workflows/release.yaml
Tyler Wilding 105ea35f28
Some checks failed
📝 Linter / Frontend (push) Has been cancelled
📝 Linter / Backend Formatting (push) Has been cancelled
📝 Linter / Backend Linter (push) Has been cancelled
🧪 Tests / Frontend (push) Has been cancelled
🔨 Build / App (macos-12) (push) Has been cancelled
🔨 Build / App (ubuntu-20.04) (push) Has been cancelled
🔨 Build / App (windows-latest) (push) Has been cancelled
ci: enable verbose logs for tauri build to resolve macOS intermittent failures (#564)
macOS builds are failing intermittently and the logs have no indication
as to why, enabling verbose logs is the recommendation from tauri's
support channels.

Hopefully the next time it happens there's a clue as to why.
2024-09-18 20:31:24 -04:00

224 lines
7.1 KiB
YAML

name: 🏭 Create Release
on:
workflow_dispatch:
inputs:
bump:
description: "Semver Bump Type"
required: true
default: "patch"
type: choice
options:
- "patch"
- "minor"
- "major"
permissions:
contents: write
jobs:
create-tag:
if: github.repository == 'open-goal/launcher'
name: "Create New Tag"
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.version_bump.outputs.new_tag }}
steps:
- uses: actions/checkout@v4
# TODO - still have to use PAT to bypass branch protections
# https://github.com/orgs/community/discussions/13836
with:
token: ${{ secrets.BOT_PAT }}
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- name: Install Rust Stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Install Appstreamcli
run: sudo apt-get update && sudo apt-get install -y appstream
- name: Bump Version
id: version_bump
run: |
yarn version --${{ github.event.inputs.bump }} --no-git-tag-version
NEW_VERSION=$(awk '/version/{gsub(/("|",)/,"",$2);print $2}' package.json)
sed -i "/APP_VERSION/c\version = \""$NEW_VERSION"\" # APP_VERSION" ./src-tauri/Cargo.toml
sed -i "/\"version\":/c\ \"version\": \""$NEW_VERSION"\"" ./src-tauri/tauri.conf.json
cd ./src-tauri
cargo generate-lockfile
cd ..
echo "new_tag=v${NEW_VERSION}" >> $GITHUB_OUTPUT
echo -e "---\nVersion: $NEW_VERSION\nDate: $(date +'%Y-%m-%d')\n---" > metadata/news.yaml
appstreamcli news-to-metainfo metadata/news.yaml metadata/dev.opengoal.OpenGOAL.appdata.xml
rm metadata/news.yaml
- name: Commit Version Bump
uses: EndBug/add-and-commit@v9
with:
default_author: github_actor
author_name: "OpenGOALBot"
author_email: "OpenGOALBot@users.noreply.github.com"
message: "release: bump to version - ${{ steps.version_bump.outputs.new_tag }}"
tag: "${{ steps.version_bump.outputs.new_tag }}"
create-release:
needs: [create-tag]
if: github.repository == 'open-goal/launcher'
name: "Create Release"
runs-on: ubuntu-latest
outputs:
release_id: ${{ steps.get_release_id.outputs.release_id }}
steps:
- uses: actions/checkout@v4
with:
ref: "main"
# Create the release, use `gh` CLI so we can auto generate the notes
- name: Create Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create ${{needs.create-tag.outputs.new_tag}} --generate-notes --draft --repo open-goal/launcher
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- name: Install NPM Dependencies
run: |
yarn install --frozen-lockfile
# Get the internal ID of the release so that Tauri's action can use it to upload assets
- name: Get Release ID
id: get_release_id
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASE_ID=$(TAG_NAME="${{needs.create-tag.outputs.new_tag}}" yarn --silent release-id)
echo "release_id=${RELEASE_ID}" >> $GITHUB_OUTPUT
build-app:
if: github.repository == 'open-goal/launcher'
needs: [create-release]
strategy:
fail-fast: false
matrix:
platform: [ubuntu-20.04, windows-latest, macos-12]
runs-on: ${{ matrix.platform }}
steps:
# NOTE - there is technically a race condition here if multiple releases go out
# but the build needs to have the up to date version files
# In the past this was handled by a two-stage release, but now it's all in one workflow
- uses: actions/checkout@v4
with:
ref: "main"
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- name: Install Rust Stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
name: Cache Rust Build
with:
shared-key: tauri-build-${{ matrix.platform }}
workspaces: src-tauri
- name: Install Linux Dependencies
if: matrix.platform == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf
- name: Install NPM Dependencies
run: |
yarn install --frozen-lockfile
yarn build
- uses: tauri-apps/tauri-action@v0
name: Build Tauri App
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
with:
args: "--verbose --config ./.tauri/release-config.json"
releaseId: ${{needs.create-release.outputs.release_id}}
verify-release:
if: github.repository == 'open-goal/launcher'
needs: [create-release, build-app]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: "main"
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- name: Install NPM Dependencies
run: |
yarn install --frozen-lockfile
# Get the internal ID of the release so that Tauri's action can use it to upload assets
- name: Verify Release Assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_ID: ${{needs.create-release.outputs.release_id}}
EXPECTED_ASSET_NAME_REGEXES: '[".*AppImage", ".*AppImage.tar.gz", ".*AppImage.tar.gz.sig", ".*msi", ".*msi.zip", ".*msi.zip.sig", ".*dmg", ".*app", ".*app.tar.gz", ".*app.tar.gz.sig", "latest.json"]'
run: yarn verify-release-assets
publish-release:
if: github.repository == 'open-goal/launcher'
needs: [create-release, build-app, verify-release]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: "main"
# TODO - still have to use PAT to bypass branch protections
# https://github.com/orgs/community/discussions/13836
token: ${{ secrets.BOT_PAT }}
- name: setup node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- name: update release metadata and publish the release
env:
RELEASE_ID: ${{needs.create-release.outputs.release_id}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
yarn install --frozen-lockfile
yarn update-release-meta
- name: commit release metadata change
uses: EndBug/add-and-commit@v9
with:
default_author: github_actor
author_name: "OpenGOALBot"
author_email: "OpenGOALBot@users.noreply.github.com"
message: "release: update release metadata to latest"