Continuous Integration
GitHub Actions Workflows
Each Action pin uses a full commit SHA. A trailing comment shows the
released version, for example actions/checkout@<sha> # v7.0.1. Someone
can move a tag to point at different code. A commit SHA cannot change.
SHA-pinning protects workflows against a compromised or mistakenly
re-tagged Action release.
CI Workflow
This workflow runs when:
- new commits are pushed to the
mainGit branch; - new Git tags are pushed;
- Pull Requests are created or updated.
It runs three jobs. The Build job compiles SparkleMuffin. The Lint job checks Go and SQL sources. The Test job runs the Go unit and integration tests.
See Compiling, Running Static Analysis, and Running Tests.
Copywrite Workflow
This workflow runs when:
- new commits are pushed to the
mainGit branch; - new Git tags are pushed;
- Pull Requests are created or updated.
It checks that Go source files have a valid license header. It uses copywrite.
Vulnerabilities Workflow
This workflow runs when:
- new commits are pushed to the
mainGit branch; - new Git tags are pushed;
- Pull Requests are created or updated.
It checks Go sources and go.mod for known vulnerabilities. It uses
govulncheck.
Documentation Workflow
This workflow runs when:
- new commits are pushed to the
mainGit branch; - new Git tags are pushed;
- Pull Requests are created or updated.
It generates the HTML documentation with mdBook. Then it checks the
documentation for broken links with lychee.
When new commits reach the main Git branch and the CI workflow succeeds,
this workflow uploads the documentation to GitHub Pages. Find it at
SparkleMuffin Documentation.
Docker Workflow
This workflow runs when:
- new commits are pushed to the
mainGit branch; - new Git tags are pushed.
It builds and tags the SparkleMuffin production Docker images. It pushes them to the GitHub Container Registry (GHCR) at ghcr.io/virtualtam/sparklemuffin.
Dependabot
Dependabot opens a Pull Request once a month to update:
- GitHub Actions, grouped into a single Pull Request;
- Go modules;
- Node.js packages, for the frontend asset pipeline;
- SQLFluff, pinned as a
uvdependency ininternal/repository/pyproject.toml.