Skip to content

Release App

Release App #70

Workflow file for this run

# # Run for macOS
# act -W .github/workflows/release-app.yml --container-architecture linux/amd64 -j publish-tauri -P macos-latest=-self-hosted
# # Run for Linux
# act -W .github/workflows/release-app.yml --container-architecture linux/amd64 -j publish-tauri -P ubuntu-24.04
# Manual release instructions for Mac:
# VERSION=app-0.1.0
# git tag $VERSION
# git push origin $VERSION
# gh release create $VERSION --generate-notes
# export TAURI_SIGNING_PRIVATE_KEY="..."
# export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="..."
# export PKG_CONFIG_PATH="/usr/local/opt/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH"
# export PKG_CONFIG_ALLOW_CROSS=1
# For M1 (aarch64-apple-darwin):
# cargo build --release --features metal --target aarch64-apple-darwin
# cd examples/apps/screenpipe-app-tauri
# bun scripts/pre_build.js
# bun tauri build --target aarch64-apple-darwin -- --features metal
# tar -czf screenpipe-${VERSION}-aarch64-apple-darwin.tar.gz -C ../target/aarch64-apple-darwin/release/bundle/dmg screenpipe_0.1.0_aarch64.dmg
# gh release upload ${VERSION} screenpipe-${VERSION}-aarch64-apple-darwin.tar.gz
# rm screenpipe-${VERSION}-aarch64-apple-darwin.tar.gz
#
# For Intel (x86_64-apple-darwin):
# cd ../../..
# cargo build --release --features metal --target x86_64-apple-darwin
# cd examples/apps/screenpipe-app-tauri
# bun scripts/pre_build.js
# bun tauri build --target x86_64-apple-darwin -- --features metal
# tar -czf screenpipe-${VERSION}-x86_64-apple-darwin.tar.gz -C ../target/x86_64-apple-darwin/release/bundle/dmg screenpipe_0.1.0_x64.dmg
# gh release upload ${VERSION} screenpipe-${VERSION}-x86_64-apple-darwin.tar.gz
# rm screenpipe-${VERSION}-x86_64-apple-darwin.tar.gz
#
name: Release App
on:
# push:
# tags:
# - "v*"
workflow_dispatch:
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
# - platform: "macos-latest" # for Arm based macs (M1 and above).
# args: "--target aarch64-apple-darwin --features metal"
# target: aarch64-apple-darwin
# - platform: "macos-latest" # for Intel based macs.
# args: "--target x86_64-apple-darwin --features metal"
# target: x86_64-apple-darwin
# - platform: "ubuntu-24.04" # Ubuntu x86_64 # TODO focus on mac atm
# args: "" # TODO CUDA
- platform: "windows-latest" # Windows x86_64
args: "--target x86_64-pc-windows-msvc" # TODO CUDA? --features "openblas"
pre-build-args: "" # --openblas
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: setup Bun
uses: oven-sh/setup-bun@v1
# - name: Rust cache
# uses: swatinem/rust-cache@v2
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
target: ${{ matrix.target }}
# - name: Cache Pre Build
# id: cache-pre-build
# uses: actions/cache@v4
# with:
# path: |
# examples/apps/screenpipe-app-tauri/src-tauri/openblas
# examples/apps/screenpipe-app-tauri/src-tauri/clblast
# examples/apps/screenpipe-app-tauri/src-tauri/ffmpeg
# key: ${{ matrix.platform }}-${{ matrix.args }}-pre-build
# - uses: actions/cache@v3
# with:
# path: |
# ~/.cargo/bin/
# ~/.cargo/registry/index/
# ~/.cargo/registry/cache/
# ~/.cargo/git/db/
# target/
# key: ${{ matrix.platform }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Linux dependencies
if: matrix.platform == 'ubuntu-24.04'
run: |
sudo apt-get update
sudo apt-get install -y libappindicator3-1 libappindicator3-dev
- name: Install dependencies
if: matrix.platform == 'macos-latest'
run: |
brew install ffmpeg pkg-config
# - name: Install Windows dependencies
# if: matrix.platform == 'windows-latest'
# run: |
# choco install pkgconfiglite
# choco install ffmpeg
- name: Install frontend dependencies
shell: bash
working-directory: ./examples/apps/screenpipe-app-tauri
run: |
ls .
bun install
# Run pre build
- name: Run pre_build.js on ${{ matrix.platform }}
shell: bash
run: bun ./scripts/pre_build.js ${{ matrix.pre-build-args }}
working-directory: ./examples/apps/screenpipe-app-tauri
- name: Build CLI
shell: bash
run: |
if [[ "${{ matrix.platform }}" == "macos-latest" ]]; then
export PKG_CONFIG_PATH="/usr/local/opt/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_ALLOW_CROSS=1
fi
cargo build --release ${{ matrix.args }}
- name: Build
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:
tagName: v__VERSION__ # the action automatically replaces __VERSION__ with the app version.
releaseName: "v__VERSION__"
releaseBody: "What's new? 🎉📣"
releaseDraft: true
prerelease: true
args: ${{ matrix.args }}
projectPath: "./examples/apps/screenpipe-app-tauri"
tauriScript: bunx tauri -v