CI/CD
This project uses GitHub Actions for continuous integration and delivery.
Workflows
| Workflow | File | Purpose |
|---|---|---|
| Build & Test | .github/workflows/build.yml |
Formatting checks, compilation, and tests |
| Triage Label | .github/workflows/triage_label.yml |
Labels newly opened issues with needs-triage |
| Design Approval | .github/workflows/check_design_approval.yml |
Flags PRs without a linked design/approved issue |
| Stale PRs | .github/workflows/stale_not_approved.yml |
Marks and eventually closes stale, non-approved PRs |
Build & Test
The Build & Test workflow runs spotlessCheck, assemble, and test on pushes and pull
requests that touch code-relevant files.
Documentation-only changes are skipped via path filters.
If a new commit is pushed while a run is already in progress for the same branch, the older run is automatically canceled.
Triage Label
When an issue is opened, the Triage Label workflow automatically adds the needs-triage label so
new issues are easy to find and route.
Design Approval
On every pull request (opened, edited, synchronized, or reopened), the Design Approval workflow checks that the PR links to an issue carrying the design/approved label.
PRs that lack such a linked issue are flagged via the needs-approved-issue label.
Because the workflow is triggered by changes to the PR, it will not rerun if a non-design/approved issue gets the design/approved label.
In these cases, either a maintainer can force rerun the check or you can make a dummy change to the PR body (like adding a newline) and it will trigger the workflow.
Stale PRs
A scheduled daily job marks pull requests carrying the needs-approved-issue label as stale
after 14 days of inactivity and closes them after 60 days. PRs labeled pinned or security are
exempt. Issues are never affected.
Reading CI Results
- Status check on PRs - The workflow result appears as a check on the pull request page.
- Actions tab - Open the repository Actions tab to view workflow runs.
- Test report artifact - Every run uploads an HTML test report artifact retained for 14 days.
Troubleshooting
Formatting Check Failed
The spotlessCheck step enforces Google Java Format. To fix locally:
./gradlew spotlessApply
This reformats source files in place. Commit the changes and push again.
Test Failure
Check the uploaded test report artifact:
- Open the failed workflow run in the Actions tab.
- Scroll to the Artifacts section.
- Download test-report and open
index.htmlin a browser.
The report shows failing tests with stack traces and assertion messages.