- Continuous Integration (CI): Multi-platform build and test matrices.
- Security Gates: Deep supply chain analysis and static secret scanning.
- Release Engineering: Packaging of portable desktop and headless bundles with build provenance.
Pipeline Orchestration Overview
The following diagram illustrates how code changes flow through the automated gates from pull request to final release artifact. Workflow Integration Map Sources: .github/workflows/ci.yml#1-16, .github/workflows/security.yml#1-11, .github/workflows/release.yml#1-29, .github/workflows/codeql.yml#1-18Continuous Integration Pipeline
The CI pipeline enforces a strict “no-regression” policy across the supported platform matrix. It pins the Rust toolchain to version1.91.0 [.github/workflows/ci.yml#31-31] and utilizes a specialized Vite+ setup for web components [.github/workflows/ci.yml#35-39].
Key quality jobs include:
- Multi-Platform Matrix: Concurrent builds on
ubuntu-latest,macos-latest, andwindows-latest[.github/workflows/ci.yml#18-23]. - Artifact Hygiene: Scripts like
check-no-vendored-artifacts.shandcheck-runtime-artifacts.shprevent accidental commits of binary blobs or local database files [.github/workflows/ci.yml#182-186]. - CLI Parity: A dedicated job ensures that the
palyraCLI maintains feature parity across platforms by generating and validating a parity matrix [.github/workflows/ci.yml#213-230].
Security Gates and Supply Chain
Palyra employs a defense-in-depth approach to the software supply chain. Every change is subjected to multiple scanners to detect vulnerabilities in dependencies and hardcoded secrets. The security workflow incorporates:- Dependency Auditing: Uses
cargo-auditfor Rust crates andnpm auditfor the web dashboard, with a custom allowlist for dev-only advisories [.github/workflows/security.yml#30-64, .github/workflows/security.yml#95-96]. - Vulnerability Scanning: Integrates Google’s
osv-scannerandcargo-denyto enforce license compliance and block known-vulnerable crate versions [.github/workflows/security.yml#98-104]. - Static Analysis: Continuous
gitleaksdetection [.github/workflows/security.yml#120-123] and scheduled CodeQL analysis for Rust and JavaScript [.github/workflows/codeql.yml#19-25]. - SBOM: Automatic generation of CycloneDX Software Bill of Materials (SBOM) for every release [.github/workflows/security.yml#131-132].
Release Engineering and Distribution
Release engineering transforms the compiled binaries into distributable “Portable Bundles.” The system distinguishes between a Desktop Portable Bundle (including the Tauri-based Control Center) and a Headless Portable Package (optimized for server/CLI usage) [scripts/release/package-portable.ps1#28-33]. The release process includes:- Version Coherence: The
assert-version-coherence.ps1script ensures the repository version matches the release tag [.github/workflows/release.yml#45-45]. - Automated Packaging: The
package-portable.ps1script assembles binaries, web assets, and documentation into platform-specific ZIP archives [scripts/release/package-portable.ps1#9-16]. - Archive Validation: Every package is inspected by
validate-portable-archive.ps1to ensure it contains required binaries (e.g.,palyrad,palyra-browserd,palyra) and is free of forbidden runtime artifacts like.sqliteor.logfiles [scripts/release/validate-portable-archive.ps1#47-69]. - Smoke Testing: A comprehensive
run-release-smoke.ps1script performs a full install/uninstall cycle of the packaged archives to verify CLI exposure and command resolution [scripts/test/run-release-smoke.ps1#40-109].