Skip to content

Release App

Release App #343

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-22.04
name: Release App
on:
push:
tags:
- "v*"
workflow_dispatch:
jobs:
# draft:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: create draft release
# uses: crabnebula-dev/cloud-release@v0
# with:
# command: release draft ${{ secrets.CN_APP_SLUG }} --framework tauri
# api-key: ${{ secrets.CN_API_KEY }}
publish-tauri:
# needs: draft
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-22.04" # Ubuntu x86_64
# args: "" # TODO CUDA, mkl
# - platform: "windows-latest" # Windows x86_64
# args: "--target x86_64-pc-windows-msvc" # TODO CUDA, mkl? --features "openblas"
# pre-build-args: "" # --openblas
# windows arm: https://github.com/ahqsoftwares/tauri-ahq-store/blob/2fbc2103c222662b3c6ee0cd71fcde664824f0ef/.github/workflows/publish.yml#L136
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 }}
- uses: actions/cache@v3
with:
path: "**/node_modules"
key: ${{ runner.os }}-modules-${{ hashFiles('**/bun.lockb') }}
- name: Cache Homebrew packages
if: matrix.platform == 'macos-latest'
uses: actions/cache@v3
with:
path: |
~/Library/Caches/Homebrew
/usr/local/Cellar/ffmpeg
/usr/local/Cellar/pkg-config
key: ${{ runner.os }}-brew-${{ hashFiles('.github/workflows/release-cli.yml') }}
restore-keys: |
${{ runner.os }}-brew-
- name: Cache Pre Build
id: cache-pre-build
uses: actions/cache@v4
with:
path: |
screenpipe-app-tauri/src-tauri/openblas
screenpipe-app-tauri/src-tauri/clblast
screenpipe-app-tauri/src-tauri/ffmpeg
screenpipe-app-tauri/src-tauri/tesseract-*
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') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install Linux dependencies
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libappindicator3-1 libappindicator3-dev libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install dependencies
if: matrix.platform == 'macos-latest'
run: |
brew install ffmpeg pkg-config
- name: Install frontend dependencies
shell: bash
working-directory: ./screenpipe-app-tauri
run: |
ls .
bun install
# Run pre build
- name: Run pre_build.js on ${{ matrix.platform }}
shell: bash
env:
SKIP_SCREENPIPE_SETUP: true # avoid trying to copy screenpipe binaries, not yet built (next step)
run: |
bun ./scripts/pre_build.js ${{ matrix.pre-build-args }}
ls -R .
working-directory: ./screenpipe-app-tauri
- name: Verify Tesseract Installation
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$env:PATH += ";${{ github.workspace }}\screenpipe-app-tauri\src-tauri\tesseract"
tesseract --version
if ($LASTEXITCODE -ne 0) {
Write-Error "Tesseract is not properly installed or not in PATH"
exit 1
}
- 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
export RUSTFLAGS="-C link-arg=-Wl,-rpath,@executable_path/../Frameworks -C link-arg=-Wl,-rpath,@loader_path/../Frameworks -C link-arg=-Wl,-install_name,@rpath/libscreenpipe.dylib"
# export V8_FLAGS="--max-old-space-size=4096" # https://github.com/denoland/deno_core/issues/916
fi
# cargo build --release ${{ matrix.args }}
# tmp https://github.com/denoland/deno_core/issues/916
cargo build --release ${{ matrix.args }}
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: build-artifacts
path: ./target/aarch64-apple-darwin/release/screenpipe
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
# # Run pre build again to copy the CLI into app
# - name: Run pre_build.js on ${{ matrix.platform }}
# shell: bash
# run: bun ./scripts/pre_build.js ${{ matrix.pre-build-args }}
# working-directory: ./screenpipe-app-tauri
# - name: Identify esaxx usage (Windows)
# if: matrix.platform == 'windows-latest'
# run: |
# cargo tree > cargo_tree_output.txt
# findstr /i "esaxx" cargo_tree_output.txt
# continue-on-error: true
# - name: Install vcpkg
# if: matrix.platform == 'windows-latest'
# uses: lukka/run-vcpkg@v11
# with:
# vcpkgGitCommitId: "5b1214315250939257ef5d62ecdcbca18cf4fb1c"
# - name: Set up MSVC
# if: matrix.platform == 'windows-latest'
# uses: ilammy/msvc-dev-cmd@v1
# - name: Install LLVM and Clang
# if: matrix.platform == 'windows-latest'
# uses: KyleMayes/install-llvm-action@v2
# with:
# version: "10.0"
# - name: Build
# uses: tauri-apps/tauri-action@v0
# env:
# # for updater
# TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
# TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
# # for release
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# # for macos signing
# 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 }}
# APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# # https://tauri.app/v1/guides/distribution/sign-macos
# CI: true
# with:
# args: ${{ matrix.args }}
# projectPath: "./screenpipe-app-tauri"
# tauriScript: bunx tauri -v
# - name: Upload Assets to CrabNebula Cloud
# uses: crabnebula-dev/cloud-release@v0
# with:
# command: release upload ${{ secrets.CN_APP_SLUG }} --framework tauri
# api-key: ${{ secrets.CN_API_KEY }}
# path: ./screenpipe-app-tauri/src-tauri