Modify release job and correct metainfo #1
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: 🏭 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 | ||
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: "[email protected]" | ||
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: "--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: "[email protected]" | ||
message: "release: update release metadata to latest" |