Merge pull request #343 from egohygiene/copilot/taskfile-full-setup #642
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
| 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 |