mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 21:44:38 +00:00
83 lines
3.1 KiB
YAML
83 lines
3.1 KiB
YAML
---
|
|
name: Build
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
permissions:
|
|
contents: read
|
|
packages: read
|
|
pull-requests: read
|
|
# Required for Sentry to associate commits with releases
|
|
actions: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
build:
|
|
name: Build Tauri App
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: ghcr.io/tinyhumansai/openhuman_ci:rust-1.93.0
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 1
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- name: Cache Rust build artifacts
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
. -> target
|
|
app/src-tauri -> target
|
|
cache-on-failure: true
|
|
|
|
# CEF (Chromium Embedded Framework) runtime is downloaded on-demand by
|
|
# cef-dll-sys + the vendored tauri-cli. Cache it across builds — the
|
|
# payload is ~400MB per platform and fetching every run is painful.
|
|
- name: Cache CEF binary distribution
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: ~/.cache/tauri-cef
|
|
key: cef-ubuntu-22.04-${{ hashFiles('app/src-tauri/Cargo.toml') }}
|
|
restore-keys: |
|
|
cef-ubuntu-22.04-
|
|
|
|
# Note: the vendored CEF-aware tauri-cli, Node 24, and pnpm are all
|
|
# pre-installed in the ghcr.io/tinyhumansai/openhuman_ci image (see
|
|
# .github/Dockerfile), so `cargo tauri build` below resolves to the
|
|
# fork without any per-run compile step.
|
|
- name: Cache pnpm store
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: ~/.local/share/pnpm/store
|
|
key: pnpm-store-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
pnpm-store-${{ runner.os }}-
|
|
- name: Install dependencies
|
|
run: bash scripts/ci-cancel-aware.sh pnpm install --frozen-lockfile
|
|
# Core is linked into the Tauri binary as a path dep — no separate
|
|
# sidecar build / stage step needed.
|
|
- name: Build Tauri app (CEF default)
|
|
working-directory: app
|
|
run: |
|
|
# Skip tsc in beforeBuildCommand — typechecking runs in the dedicated
|
|
# `typecheck` workflow, so doing it again here is duplicated CI time.
|
|
TAURI_CONFIG_OVERRIDE='{"build":{"beforeBuildCommand":"npx vite build"},"plugins":{"updater":{"active":false}}}'
|
|
bash ../scripts/ci-cancel-aware.sh cargo tauri build -c "$TAURI_CONFIG_OVERRIDE" --bundles deb
|
|
env:
|
|
NODE_ENV: production
|
|
# CI builds should point at staging, not production.
|
|
# Without these, APP_ENV is undefined in config.ts and
|
|
# DEFAULT_BACKEND_URL falls through to api.tinyhumans.ai.
|
|
VITE_OPENHUMAN_APP_ENV: staging
|
|
VITE_BACKEND_URL: https://staging-api.tinyhumans.ai
|
|
CARGO_PROFILE_RELEASE_OPT_LEVEL: "1"
|
|
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: "16"
|
|
CARGO_PROFILE_RELEASE_LTO: "false"
|
|
CARGO_PROFILE_RELEASE_STRIP: "true"
|
|
CARGO_PROFILE_RELEASE_DEBUG: "false"
|