Modrinth App release #294
Workflow file for this run
This file contains hidden or 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: Modrinth App build | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- 'v*' | |
paths: | |
- .github/workflows/theseus-release.yml | |
- 'apps/app/**' | |
- 'apps/app-frontend/**' | |
- 'packages/app-lib/**' | |
- 'packages/app-macros/**' | |
- 'packages/assets/**' | |
- 'packages/ui/**' | |
- 'packages/utils/**' | |
workflow_dispatch: | |
inputs: | |
sign-windows-binaries: | |
description: Sign Windows binaries | |
type: boolean | |
default: true | |
required: false | |
jobs: | |
build: | |
name: Build | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [macos-latest, windows-latest, ubuntu-22.04] | |
include: | |
- platform: macos-latest | |
artifact-target-name: universal-apple-darwin | |
- platform: windows-latest | |
artifact-target-name: x86_64-pc-windows-msvc | |
- platform: ubuntu-22.04 | |
artifact-target-name: x86_64-unknown-linux-gnu | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: 📥 Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: 🧰 Setup Rust toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
with: | |
rustflags: '' | |
target: ${{ startsWith(matrix.platform, 'macos') && 'x86_64-apple-darwin' || '' }} | |
- name: 🧰 Install pnpm | |
uses: pnpm/action-setup@v4 | |
- name: 🧰 Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
cache: pnpm | |
- name: 🧰 Install Linux build dependencies | |
if: startsWith(matrix.platform, 'ubuntu') | |
run: | | |
sudo apt-get update | |
sudo apt-get install -yq libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev | |
- name: 🧰 Setup Dasel | |
uses: jaxxstorm/action-install-gh-release@v2.1.0 | |
if: startsWith(github.ref, 'refs/tags/v') | |
with: | |
repo: TomWright/dasel | |
tag: v2.8.1 | |
cache: enable | |
extension-matching: disable | |
rename-to: ${{ startsWith(matrix.platform, 'windows') && 'dasel.exe' || 'dasel' }} | |
chmod: 0755 | |
- name: ⚙️ Set application version | |
if: startsWith(github.ref, 'refs/tags/v') | |
shell: bash | |
env: | |
APP_VERSION: ${{ github.ref_name }} | |
run: | | |
dasel put -f apps/app/Cargo.toml -t string -v "${APP_VERSION#v}" 'package.version' | |
dasel put -f packages/app-lib/Cargo.toml -t string -v "${APP_VERSION#v}" 'package.version' | |
dasel put -f apps/app-frontend/package.json -t string -v "${APP_VERSION#v}" 'version' | |
- name: 🧰 Install dependencies | |
run: pnpm install | |
- name: ✍️ Set up Windows code signing | |
if: startsWith(matrix.platform, 'windows') | |
shell: bash | |
run: | | |
if [ '${{ startsWith(github.ref, 'refs/tags/v') || inputs.sign-windows-binaries }}' = 'true' ]; then | |
choco install jsign --ignore-dependencies # GitHub runners come with a global Java installation already | |
else | |
jq 'del(.bundle.windows.signCommand)' apps/app/tauri-release.conf.json > apps/app/tauri-release.conf.json.new | |
mv apps/app/tauri-release.conf.json.new apps/app/tauri-release.conf.json | |
fi | |
- name: 🗑️ Clean up cached bundles | |
shell: bash | |
run: | | |
rm -rf target/release/bundle | |
rm -rf target/*/release/bundle || true | |
- name: 🔨 Build macOS app | |
run: pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-release.conf.json | |
if: startsWith(matrix.platform, 'macos') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }} | |
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | |
APPLE_ID: ${{ secrets.APPLE_ID }} | |
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
- name: 🔨 Build Linux app | |
run: pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json | |
if: startsWith(matrix.platform, 'ubuntu') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
- name: 🔨 Build Windows app | |
run: | | |
[System.Convert]::FromBase64String("$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64") | Set-Content -Path signer-client-cert.p12 -AsByteStream | |
$env:DIGICERT_ONE_SIGNER_CREDENTIALS = "$env:DIGICERT_ONE_SIGNER_API_KEY|$PWD\signer-client-cert.p12|$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD" | |
$env:JAVA_HOME = "$env:JAVA_HOME_11_X64" | |
pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles 'nsis,updater' | |
Remove-Item -Path signer-client-cert.p12 | |
if: startsWith(matrix.platform, 'windows') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
DIGICERT_ONE_SIGNER_API_KEY: ${{ secrets.DIGICERT_ONE_SIGNER_API_KEY }} | |
DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64 }} | |
DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD }} | |
- name: 📤 Upload app bundles | |
uses: actions/upload-artifact@v4 | |
with: | |
name: App bundle (${{ matrix.artifact-target-name }}) | |
path: | | |
target/release/bundle/** | |
target/*/release/bundle/** |