Skip to content

Build and Release

Build and Release #32

Workflow file for this run

name: Release
on:
workflow_run:
workflows: ["App Test"]
types:
- completed
jobs:
version-bump:
runs-on: ubuntu-latest
# ignore if commit message contains chore or ci
if: ${{ github.event.workflow_run && github.event.workflow_run.conclusion == 'success' && github.ref == 'refs/heads/main' }}
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Bump npm version
id: versioning
uses: phips28/gh-action-bump-version@master
with:
tag-prefix: 'v'
patch-wording: 'bump-patch,fixes,Fixes,bugfix,Bugfix,patch,hotfix,Hotfix'
minor-wording: 'bump-minor,adds,Adds,new'
major-wording: 'bump-major,MAJOR,removes,Removes,delete,Delete'
skip-commit: true
skip-tag: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update Cargo.toml version
run: |
# get version and remove the v prefix
export newTagNum=$(echo ${{ steps.versioning.outputs.newTag }} | sed 's/v//')
# if not a semver throw an error
if ! [[ $newTagNum =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: The new version is not a semantic version"
exit 1
fi
sed -i 's/version = "[0-9]\+\.[0-9]\+\.[0-9]\+"/version = "'$newTagNum'"/' src-tauri/Cargo.toml
- name: Commit and tag version
run: |
git config --local user.email "[email protected]"
git config --local user.name "Versioning Bot"
git add src-tauri/Cargo.toml
git add package.json
git commit -m "chore: release ${{ steps.versioning.outputs.newTag }}"
git push
- name: Commit and tag version
run: |
git tag -a ${{ steps.versioning.outputs.newTag }} -m "Release ${{ steps.versioning.outputs.newTag }}"
git push --follow-tags
publish-tauri:
needs: version-bump
timeout-minutes: 15
permissions:
contents: write
# ignore if commit message contains chore or ci and make sure version bump job passed
if: ${{ github.event.workflow_run && github.event.workflow_run.conclusion == 'success' && github.ref == 'refs/heads/main' && github.event.workflow_run.jobs.version-bump.conclusion == 'success' }}
strategy:
fail-fast: false
matrix:
settings:
- platform: 'macos-latest' # for Arm based macs (M1 and above).
args: '--target aarch64-apple-darwin'
- platform: 'macos-latest' # for Intel based macs.
args: '--target x86_64-apple-darwin'
- platform: 'ubuntu-22.04' # for Tauri v1 you could replace this with ubuntu-20.04.
args: ''
- platform: 'windows-latest'
args: ''
runs-on: ${{ matrix.settings.platform }}
steps:
- uses: actions/checkout@v4
- name: install dependencies (ubuntu only)
if: matrix.settings.platform == 'ubuntu-22.04' # This must match the platform value defined above.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
# webkitgtk 4.0 is for Tauri v1 - webkitgtk 4.1 is for Tauri v2.
# You can remove the one that doesn't apply to your app to speed up the workflow a bit.
- name: setup node
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'npm' # Set this to npm, yarn or pnpm.
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
targets: ${{ matrix.settings.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './src-tauri -> target'
- name: install frontend dependencies
# If you don't have `beforeBuildCommand` configured you may want to build your frontend here too.
run: npm install # change this to npm or pnpm depending on which one you use.
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
with:
tagName: v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version.
releaseName: 'v__VERSION__'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: false
prerelease: false
args: ${{ matrix.settings.args }}