name: 'Tauri GUI Build' on: push: branches: [ master ] pull_request: jobs: test-tauri: strategy: fail-fast: false matrix: platform: [macos-latest, windows-latest, ubuntu-20.04] runs-on: ${{ matrix.platform }} defaults: run: working-directory: ./theseus_gui steps: - uses: actions/checkout@v3 - name: Rust setup (mac) if: startsWith(matrix.platform, 'macos') uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy targets: aarch64-apple-darwin - name: Rust setup if: "!startsWith(matrix.platform, 'macos')" uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './src-tauri -> target' - name: Sync node version and setup cache uses: actions/setup-node@v3 with: node-version: 16 cache: 'yarn' cache-dependency-path: "theseus_gui" - name: install dependencies (ubuntu only) if: startsWith(matrix.platform, 'ubuntu') run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - name: install frontend dependencies run: yarn install --immutable --immutable-cache --check-cache - name: build app (macos) uses: tauri-apps/tauri-action@v0 id: build_os_mac 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_PASSWORD: ${{ secrets.APPLE_PASSWORD }} TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} with: args: --target universal-apple-darwin - name: build app uses: tauri-apps/tauri-action@v0 id: build_os if: "!startsWith(matrix.platform, 'macos')" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - name: upload ${{ matrix.platform }} uses: actions/upload-artifact@v3 if: startsWith(matrix.platform, 'macos') with: name: ${{ matrix.platform }} path: "${{ join(fromJSON(steps.build_os_mac.outputs.artifactPaths), '\n') }}" - name: upload ${{ matrix.platform }} uses: actions/upload-artifact@v3 if: "!startsWith(matrix.platform, 'macos')" with: name: ${{ matrix.platform }} path: "${{ join(fromJSON(steps.build_os.outputs.artifactPaths), '\n') }}"