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' - platform: 'macos-latest' # for Intel-based Macs. args: '--target x86_64-apple-darwin' yaak_arch: 'x64' - platform: 'ubuntu-22.04' args: '' yaak_arch: 'x64' - platform: 'windows-latest' args: '' yaak_arch: 'x64' runs-on: ${{ matrix.platform }} timeout-minutes: 40 steps: - name: Checkout yaakapp/app uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: 22 - 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.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - uses: actions/cache@v3 continue-on-error: false with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ src-tauri/target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo- - name: install dependencies (ubuntu only) if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - name: install dependencies (windows only) if: matrix.platform == 'windows-latest' run: cargo install --force trusted-signing-cli --version 0.5.0 - name: Install NPM Dependencies run: npm ci - name: Install Protoc for plugin-runtime uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Run JS build run: npm run build - name: Run lint run: npm run lint - 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.platform == 'macos-latest' && secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_ID: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_ID }} APPLE_PASSWORD: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_SIGNING_IDENTITY }} APPLE_TEAM_ID: ${{ matrix.platform == 'macos-latest' && secrets.APPLE_TEAM_ID }} # Windows signing stuff AZURE_CLIENT_ID: ${{ matrix.platform == 'windows-latest' && secrets.AZURE_CLIENT_ID }} AZURE_CLIENT_SECRET: ${{ matrix.platform == 'windows-latest' && secrets.AZURE_CLIENT_SECRET }} AZURE_TENANT_ID: ${{ matrix.platform == 'windows-latest' && secrets.AZURE_TENANT_ID }} with: tagName: 'v__VERSION__' releaseName: 'Release __VERSION__' releaseBody: '[Changelog __VERSION__](https://yaak.app/blog/__VERSION__)' releaseDraft: true prerelease: false args: ${{ matrix.args }}