GitHub PR Checks
UniTrack can post the quality-gate verdict back to GitHub as a commit status, so the result of a build shows up directly on the pull request next to the other checks.
1. What gets posted
After each ingest that carries a commit and a repoUrl, GitHubStatusService publishes a
status against that commit:
-
state — success or failure, from the quality-gate verdict;
-
description — a short summary including the coverage delta vs the baseline;
-
context —
unitrack/quality-gateby default; -
target URL — a deep link to the run page on your UniTrack server.
2. Configuration
Enable and configure under unitrack.github (see Configuration):
| Property | Meaning |
|---|---|
|
Master switch for status publishing. |
|
A GitHub token with |
|
GitHub API base; change for GitHub Enterprise. |
|
Public URL of this UniTrack server, used to build the target link. |
|
The status context label shown on the PR. Default |
unitrack:
github:
enabled: true
token: ${GITHUB_TOKEN}
server-base-url: https://unitrack.example.com
These are global defaults. enabled, the status context, and pr-comment can each be
overridden per project from its Settings page — e.g. enable GitHub
for one repo only, or use a different status context. The token always stays global and is
never set per project.
3. Pull-request comment
In addition to the commit status, UniTrack posts (and updates in place) a results-table comment on the pull request associated with the run’s commit — the Codecov-style summary developers see without leaving the PR:
## UniTrack — ✅ gate passed
| Metric | Value |
|---|---|
| Tests | 128 passed · 0 failed · 2 skipped (130 total) |
| Coverage | 84.3% (+1.2pp) |
| Quality gate | PASSED |
It resolves the PR from the commit SHA, and uses a hidden marker to update its own comment
on later pushes instead of posting duplicates. New failures and slower tests
(regression / perf regression)
are added as rows when present. Disable with unitrack.github.pr-comment=false while keeping
the commit status. Requires the token to have pull-request write (issues/pull_requests)
permission.
When a load-test upload carries a commit on an open PR, a separate perf comment (its own marker, upserted independently of the test report) is posted with the run’s p95 latency, throughput, error rate and samples, plus the perf-gate verdict per rule vs the baseline:
## UniTrack — load test — ❌ perf gate failed
| Metric | Value |
|---|---|
| p95 latency | 210 ms |
| Throughput | 120.5 rps |
| Error rate | 0.00% |
| Samples | 300 |
### Gate vs baseline #41
| Rule | Status | Detail |
|---|---|---|
| latency-p95 | ❌ | p95 210ms vs baseline 100ms (+110.0%, max +15.0%) |
| error-rate | ✅ | 0.00% errors (max 1.00%) |
4. Requirements
-
The upload must include both
commitandrepoUrlso UniTrack knows which commit on which repository to annotate. The upload script sets these from the standard GitHub Actions environment variables. -
The configured token must have permission to write commit statuses on the target repo.
5. GitLab
The same exists for GitLab merge requests. Set unitrack.gitlab.enabled=true and a token with
api scope (UNITRACK_GITLAB_TOKEN); for self-hosted GitLab override
unitrack.gitlab.api-url. When a project’s repo URL is a GitLab one, UniTrack posts a commit
status (success/failed) and, when the run carries an MR number, a results note on that
merge request — mirroring the GitHub commit status + PR comment.