name: 'Modrinth App build' on: push: branches: - main tags: - 'v*' paths: - 'apps/app/**' - 'apps/app-frontend/**' - 'packages/app-lib/**' - 'packages/app-macros/**' - 'packages/assets/**' - 'packages/ui/**' - 'packages/utils/**' workflow_dispatch: jobs: build: strategy: fail-fast: false matrix: platform: [macos-latest, windows-latest, ubuntu-20.04] runs-on: ${{ matrix.platform }} 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, x86_64-apple-darwin - name: Rust setup if: "!startsWith(matrix.platform, 'macos')" uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - name: Setup rust cache uses: actions/cache@v4 with: path: target/** key: ${{ runner.os }}-rust-target-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-rust-target- - name: Use Node.js uses: actions/setup-node@v3 with: node-version: 20 - name: Install pnpm via corepack shell: bash run: | corepack enable corepack prepare --activate - name: Get pnpm store directory id: pnpm-cache shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Setup pnpm cache uses: actions/cache@v3 with: path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - 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 libselinux1 - name: Install frontend dependencies run: pnpm install - 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_TEAM_ID: ${{ secrets.APPLE_TEAM_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 working-directory: ./apps/app - 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 }} with: working-directory: ./apps/app - 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') }}"