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-gate by 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

enabled

Master switch for status publishing.

token

A GitHub token with repo:status (or fine-grained commit-status) scope.

api-url

GitHub API base; change for GitHub Enterprise.

server-base-url

Public URL of this UniTrack server, used to build the target link.

context

The status context label shown on the PR. Default unitrack/quality-gate.

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 commit and repoUrl so 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.