Contributing
Thank you for contributing to bst-ci! This repository provides shared, reusable GitHub Actions workflows and build-matrix orchestration scripts for BuildStream-based desktop image builds across tuna-os (such as tuna-os/tromso and tuna-os/xfce-linux).
Development and Local Verificationβ
All workflows and scripts in this repository can be verified locally without requiring BuildStream, Podman, or a live chunked build runner.
1. Running Unit Testsβ
Unit tests cover the build matrix planning logic (scripts/ci-build-matrix.py) and static .bst element linting (scripts/lint_bst.py).
Prerequisites:
- Python 3.10+
pytestandPyYAML
pip install pytest pyyaml
pytest tests/pytest/ -v
2. Workflow and YAML Lintingβ
Workflows in .github/workflows/ are linted using actionlint and yamllint. Ensure any modified YAML files pass local linting:
yamllint .github/workflows/
actionlint
3. Static .bst Element Lintingβ
scripts/lint_bst.py performs structural checks and junction cross-reference verification on .bst files without fetching external junction repositories:
# Structural check on an element tree
python3 scripts/lint_bst.py path/to/elements
# Check unconfirmed dependencies on newly added elements
python3 scripts/lint_bst.py path/to/elements --check-new path/to/elements/new-element.bst
Guidelines for Changesβ
- Preserve Interface Contracts: Before modifying
inputs:oroutputs:in.github/workflows/multirunner-build.yml, verify compatibility against consumer repositories (tuna-os/tromsoandtuna-os/xfce-linux). - DCO Sign-off: All commits must include a
Signed-off-by:line (git commit -s). - No Direct Merges: Open a Pull Request for review.