Skip to content

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

  1. Status check on PRs - The workflow result appears as a check on the pull request page.
  2. Actions tab - Open the repository Actions tab to view workflow runs.
  3. 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:

  1. Open the failed workflow run in the Actions tab.
  2. Scroll to the Artifacts section.
  3. Download test-report and open index.html in a browser.

The report shows failing tests with stack traces and assertion messages.