name: Generate Artifacts on: push: tags: [ v* ] jobs: build-artifacts: permissions: contents: write name: Build strategy: fail-fast: false matrix: include: - platform: 'macos-latest' # for Arm-based Macs (M1 and above). args: '--target aarch64-apple-darwin' yaak_arch: 'arm64' os: 'macos' targets: 'aarch64-apple-darwin' - platform: 'macos-latest' # for Intel-based Macs. args: '--target x86_64-apple-darwin' yaak_arch: 'x64' os: 'macos' targets: 'x86_64-apple-darwin' - platform: 'ubuntu-22.04' args: '' yaak_arch: 'x64' os: 'ubuntu' targets: '' - platform: 'ubuntu-22.04-arm' args: '' yaak_arch: 'arm64' os: 'ubuntu' targets: '' - platform: 'windows-latest' args: '' yaak_arch: 'x64' os: 'windows' targets: '' # Windows ARM64 - platform: 'windows-latest' args: '--target aarch64-pc-windows-msvc' yaak_arch: 'arm64' os: 'windows' targets: 'aarch64-pc-windows-msvc' runs-on: ${{ matrix.platform }} timeout-minutes: 40 steps: - name: Checkout yaakapp/app uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 - name: install Rust stable uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.targets }} - uses: Swatinem/rust-cache@v2 with: workspaces: 'src-tauri' shared-key: ci cache-on-failure: true - name: install dependencies (Linux only) if: matrix.os == 'ubuntu' run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils - name: Install Protoc for plugin-runtime uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install trusted-signing-cli (Windows only) if: matrix.os == 'windows' shell: pwsh run: | $ErrorActionPreference = 'Stop' $dir = "$env:USERPROFILE\trusted-signing" New-Item -ItemType Directory -Force -Path $dir | Out-Null $url = "https://github.com/Levminer/trusted-signing-cli/releases/download/0.8.0/trusted-signing-cli.exe" $exe = Join-Path $dir "trusted-signing-cli.exe" Invoke-WebRequest -Uri $url -OutFile $exe echo $dir >> $env:GITHUB_PATH & $exe --version - run: npm ci - run: npm run lint - name: Run JS Tests run: npm test - name: Run Rust Tests run: cargo test --all working-directory: src-tauri - name: Set version run: npm run replace-version env: YAAK_VERSION: ${{ github.ref_name }} - uses: tauri-apps/tauri-action@v0 env: YAAK_TARGET_ARCH: ${{ matrix.yaak_arch }} ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} # Apple signing stuff APPLE_CERTIFICATE: ${{ matrix.os == 'macos' && secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ matrix.os == 'macos' && secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_ID: ${{ matrix.os == 'macos' && secrets.APPLE_ID }} APPLE_PASSWORD: ${{ matrix.os == 'macos' && secrets.APPLE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ matrix.os == 'macos' && secrets.APPLE_SIGNING_IDENTITY }} APPLE_TEAM_ID: ${{ matrix.os == 'macos' && secrets.APPLE_TEAM_ID }} # Windows signing stuff AZURE_CLIENT_ID: ${{ matrix.os == 'windows' && secrets.AZURE_CLIENT_ID }} AZURE_CLIENT_SECRET: ${{ matrix.os == 'windows' && secrets.AZURE_CLIENT_SECRET }} AZURE_TENANT_ID: ${{ matrix.os == 'windows' && secrets.AZURE_TENANT_ID }} with: tagName: 'v__VERSION__' releaseName: 'Release __VERSION__' releaseBody: '[Changelog __VERSION__](https://yaak.app/blog/__VERSION__)' releaseDraft: true prerelease: true args: '${{ matrix.args }} --config ./src-tauri/tauri.release.conf.json'