bump version string #99
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
| # .github/workflows/release.yml | |
| name: 'Release: Build and Upload Tauri App' | |
| on: | |
| push: | |
| tags: | |
| - 'v[0-9]+.[0-9]+.[0-9]+*' | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: 'Tag to build (e.g., v2.1.0)' | |
| required: true | |
| type: string | |
| jobs: | |
| build-tauri: | |
| # Use a strategy matrix to build on both windows and macos | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: | |
| - os: macos-latest # Apple Silicon (ARM64) | |
| target: aarch64-apple-darwin | |
| - os: macos-15-intel # Intel (x86_64) | |
| target: x86_64-apple-darwin | |
| - os: ubuntu-latest # Linux (x86_64) | |
| target: x86_64-unknown-linux-gnu | |
| - os: windows-latest # Windows (x86_64) | |
| target: x86_64-pc-windows-msvc | |
| runs-on: ${{ matrix.platform.os }} | |
| steps: | |
| # 1. Checkout the repository code | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| # 2. Install Node.js | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 # Using LTS version 18, which is very stable | |
| # 3. Install Rust toolchain | |
| - name: Install Rust stable | |
| uses: dtolnay/rust-toolchain@stable | |
| # Pin webkit to older version to avoid EGL_BAD_PARAMETER in AppImage | |
| - name: Install Linux dependencies | |
| if: matrix.platform.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| # Pin libwebkit2gtk to 2.44.x to avoid EGL issues on Fedora/Arch | |
| sudo apt-get install -y libglib2.0-dev libgtk-3-dev libappindicator3-dev librsvg2-dev patchelf libpipewire-0.3-dev libgbm-dev | |
| sudo apt-get install -y --allow-downgrades \ | |
| libwebkit2gtk-4.1-dev=2.44.* \ | |
| libwebkit2gtk-4.1-0=2.44.* \ | |
| gir1.2-webkit2-4.1=2.44.* \ | |
| libjavascriptcoregtk-4.1-dev=2.44.* \ | |
| libjavascriptcoregtk-4.1-0=2.44.* \ | |
| gir1.2-javascriptcoregtk-4.1=2.44.* | |
| # | |
| # - name: Workaround for AppImage project migration | |
| # if: matrix.platform.os == 'ubuntu-latest' | |
| # run: | | |
| # mkdir -p ~/.cache/tauri-bundler/ | |
| # wget -O ~/.cache/tauri-bundler/AppRun-x86_64 https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage | |
| # chmod +x ~/.cache/tauri-bundler/AppRun-x86_64 | |
| # 4. Install pnpm | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| # 5. Install frontend dependencies | |
| - name: Install app dependencies | |
| run: pnpm install | |
| working-directory: ./app | |
| # 6. Build the frontend | |
| - name: Build frontend | |
| run: pnpm build | |
| working-directory: ./app | |
| # 7. Build the observe CLI and stage it as a named sidecar for Tauri | |
| - name: Build observe CLI | |
| run: cargo build --release --manifest-path cli/Cargo.toml | |
| - name: Stage observe CLI sidecar | |
| shell: bash | |
| run: | | |
| mkdir -p app/desktop/binaries | |
| if [[ "${{ runner.os }}" == "Windows" ]]; then | |
| cp cli/target/release/observe.exe "app/desktop/binaries/observe-${{ matrix.platform.target }}.exe" | |
| else | |
| cp cli/target/release/observe "app/desktop/binaries/observe-${{ matrix.platform.target }}" | |
| fi | |
| # 8. Build the Tauri application and create a GitHub release | |
| - name: Build and release Tauri app | |
| uses: tauri-apps/tauri-action@v0 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
| TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
| with: | |
| # Desktop Tauri project location | |
| projectPath: ./app/desktop | |
| # Config for the GitHub Release | |
| tagName: ${{ inputs.tag || github.ref_name }} # Uses input tag (manual) or pushed tag (auto) | |
| releaseName: 'Observer AI ${{ inputs.tag || github.ref_name }}' | |
| releaseBody: | | |
| This is an automated release. | |
| See the assets below to download the application for your operating system. | |
| # Creates a draft release. You must manually publish it after the workflow is done. | |
| # This is safer as it allows you to review and add changelogs. | |
| releaseDraft: true | |
| # Set to true if your tag is a pre-release like v1.0.0-beta.1 | |
| prerelease: false |