Skip to content

Continuous Integration ​

Local development is driven by the root Makefile, and pull request checks are handled by GitHub Actions workflows that mirror the same targets.

txt
.github/workflows/
├── bindings.yml      # CPI binding freshness check
├── build-docs.yml    # VitePress build + link check
├── deploy-docs.yml   # GitHub Pages deploy
├── lint.yml          # Pre-commit + Prettier
├── semantic-pr.yml   # Conventional Commits enforcement
└── test.yml          # Assemble + Mollusk tests

Makefile ​

The root Makefile contains relevant common operations. Run make with no arguments to execute the default all target (lint + test).

Configuration ​

CI configuration is in the cfg/ directory:

txt
cfg/
├── cspell.yml            # Spell-checker config
├── dictionary.txt        # Custom dictionary
├── lychee.toml           # Link-checker config
├── markdownlint.yml      # Markdown linting rules
├── pre-commit-lint.yml   # Pre-commit hook definitions
└── yamllint.yml          # YAML linting rules

Linting ​

make lint runs two steps: pre-commit followed by Prettier.

Pre-commit ​

The pre-commit harness at cfg/pre-commit-lint.yml orchestrates most of the individual linters. Each hook references its own config file from the cfg/ directory (e.g. --config-file cfg/yamllint.yml, --config cfg/cspell.yml). Adding a new linter or updating a rule only requires touching files in cfg/.

Prettier ​

Prettier runs separately via make docs-prettier because it is easier to invoke directly with npx than through a pre-commit hook.

GitHub Actions ​

Several workflows run on pull requests or pushes to main:

Bindings ​

Regenerates CPI FFI bindings from Agave C headers using bindgen and checks that the committed interface/src/cpi_bindings.rs is up to date. The Agave repository URL and revision are configured as environment variables in the workflow file. Runs on every pull request.

Build docs ​

Builds the VitePress site and checks for broken links with lychee. Runs on every pull request.

Deploy docs ​

Builds and deploys the documentation to GitHub Pages on pushes to main.

Lint ​

Runs the same pre-commit harness as make lint plus Prettier on every pull request.

Semantic PR ​

Enforces Conventional Commits title format with a required ENG-* scope on every pull request.

Test ​

Assembles the program and runs the Mollusk test suite on every pull request.