Skip to content

Merge pull request #343 from egohygiene/copilot/taskfile-full-setup #642

Merge pull request #343 from egohygiene/copilot/taskfile-full-setup

Merge pull request #343 from egohygiene/copilot/taskfile-full-setup #642

Workflow file for this run

name: CI
on:
push:
branches:
- '**'
pull_request:
jobs:
build-and-test:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.94"
components: clippy
- name: Install FFmpeg
run: |
sudo apt-get update
sudo apt-get install -y ffmpeg
- name: Warn on plaintext AI API keys
run: |
matches="$(git ls-files '*.yml' '*.yaml' | xargs grep -nH '^[[:space:]]*api_key[[:space:]]*:' || true)"
if [ -n "$matches" ]; then
echo "$matches"
while IFS= read -r line; do
[ -n "$line" ] || continue
echo "::warning title=Plaintext AI API key configuration detected::$line uses api_key; prefer api_key_env"
done <<< "$matches"
fi
- name: Lint (clippy)
run: cargo clippy --workspace -- -D warnings
- name: Build
run: cargo build --workspace --verbose
- name: Test
run: cargo test --workspace --verbose
web:
name: Web checks
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'
cache: pnpm
cache-dependency-path: pnpm-lock.yaml
- name: Enable Corepack
run: corepack enable
- name: Install web dependencies
run: pnpm install --frozen-lockfile
- name: Check web formatting
run: pnpm web:format
- name: Lint web sources
run: pnpm web:lint
- name: Typecheck web sources
run: pnpm web:typecheck
- name: Test web app
run: pnpm web:test
- name: Build web app
run: pnpm web:build
- name: Upload web artifact
uses: actions/upload-artifact@v4
with:
name: renderflow-web-dist
path: apps/web/dist
validate-examples:
name: Validate bundled examples
runs-on: ubuntu-latest
needs: build-and-test
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.94"
- name: Build renderflow
run: cargo build --release --package renderflow-cli
- name: Validate hello-world example (dry-run)
working-directory: examples/hello-world
run: ../../target/release/renderflow build --dry-run
- name: Validate transforms example (dry-run)
working-directory: examples/transforms
run: ../../target/release/renderflow build --dry-run
- name: Run library embedding example
run: cargo run -p renderflow --example library_basic
- name: Run plugin registration example
run: cargo run -p renderflow --example plugin_registration
validate-pkgbuild:
name: Validate PKGBUILD git (Arch Linux)
runs-on: ubuntu-latest
container: archlinux:latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: pacman -Syu --noconfirm base-devel namcap
- name: Validate PKGBUILD with namcap
run: namcap pkg/aur/renderflow-git/PKGBUILD
validate-pkgbuild-stable:
name: Validate PKGBUILD stable (Arch Linux)
runs-on: ubuntu-latest
container: archlinux:latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install dependencies
run: pacman -Syu --noconfirm base-devel namcap
- name: Validate PKGBUILD with namcap
run: namcap pkg/aur/renderflow/PKGBUILD
installer-smoke-test:
name: Installer smoke test
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.94"
- name: Build release binary
run: cargo build --release --package renderflow-cli
- name: Prepare local release assets with checksum
run: |
mkdir -p /tmp/renderflow-release
cp target/release/renderflow /tmp/renderflow-release/renderflow-x86_64-unknown-linux-gnu
sha256sum /tmp/renderflow-release/renderflow-x86_64-unknown-linux-gnu > /tmp/renderflow-release/renderflow-x86_64-unknown-linux-gnu.sha256
- name: Install from portable installer script
run: |
mkdir -p /tmp/renderflow-bin
RENDERFLOW_DOWNLOAD_BASE_URL="file:///tmp/renderflow-release" \
RENDERFLOW_INSTALL_DIR="/tmp/renderflow-bin" \
sh scripts/install.sh
/tmp/renderflow-bin/renderflow --version
validate-snap:
name: Validate Snap package
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Snap
uses: snapcore/action-build@v1