Run Beskid in CI
Use one pinned toolchain release and a committed lockfile. --frozen requires current resolution and forbids a lockfile update. --plain disables animated output.
Prerequisites
Section titled “Prerequisites”Commit the project .bproj manifest and Project.lock. Pin the same immutable Beskid release on every runner. Store package credentials in the CI secret store, not in the repository or command log.
Actions
Section titled “Actions”-
Install the pinned toolchain release.
-
Verify the selected version and target:
Terminal window beskid --versionbeskid up host-target -
Check the case-sensitive
Srcsource root without changing files. Substitute the path when the manifest declares a different source root:Terminal window beskid format Src --check -
Analyze with frozen resolution:
Terminal window beskid analyze --project App.bproj --frozen --plain -
Run tests with frozen resolution and a machine-readable summary:
Terminal window beskid test --project App.bproj --all-targets --frozen --plain --json -
Build the release target with the same resolution policy:
Terminal window beskid build --project App.bproj --target App --release --frozen --plain -
Use only the output from a job in which all prior commands succeeded for publication.
flowchart LR accTitle: Reproducible CI accDescr: A pinned toolchain checks format, resolves a frozen lockfile, analyzes, tests, and AOT-builds before CI publishes an artifact. A[Pinned toolchain] --> B[Format check] B --> C[Frozen analyze] C --> D[Frozen tests] D --> E[Frozen release build] E --> F[Publish artifact]
Diagram text
Section titled “Diagram text”- Install and verify one immutable toolchain release.
- Check formatting before compilation.
- Use
--frozenfor analysis, tests, and the release build. - Publish only after every gate succeeds.
Expected result
Section titled “Expected result”Every gate uses the same toolchain and lockfile. Logs contain stable, non-animated output. The final job retains the native release artifact only after format, analysis, and tests succeed.
Recovery
Section titled “Recovery”If --frozen rejects the project, update and review Project.lock outside CI, then commit it. If the host target differs, select the matching runner or release artifact. If a test fails, retain its JSON summary and do not publish the build.
Next task
Section titled “Next task”Read Projects for manifest and lockfile tasks, or Packages before you publish a package.