Trunk Flaky Tests integrates with your CI provider by adding an upload step in each of your testing CI jobs via the Trunk Uploader CLI. Before you start on these steps, see the Test Frameworks docs for instructions on producing JUnit XML output for your test runner, supported by virtually all test frameworks, which is what Trunk ingests.Documentation Index
Fetch the complete documentation index at: https://trunk-4cab4936-mintlify-migrate-docs-changes-1778515731.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Checklist
By the end of this guide, you should achieve the following.- Get your Trunk organization slug and token
- Set your slug and token as a variable in CI
- Configure your CI to upload to Trunk
- Validate your uploads in Trunk
Trunk Organization Slug and Token
Before setting up uploads to Trunk, you must sign in to app.trunk.io and obtain your Trunk organization slug and token.Trunk Slug
You can find your organization slug under Settings > Organization > Manage > Organization Name > Slug. You’ll save this as a variable in CI in a later step.Trunk Token
You can find your token under Settings > Organization > Manage > Organization API Token > View Organization API Token > View. Since this is a secret, do not leak it publicly. Ensure you get your organization token, not your project/repo token.Add the Trunk Token as a Secret
Store the Trunk slug and API token obtained in the previous step in your CI provider as a secret, environment variable, or an equivalent concept and name themTRUNK_ORG_SLUG and TRUNK_TOKEN respectively.
Upload to Trunk
Add anUpload Test Results step after running tests in each of your CI jobs that run tests. This should be minimally all jobs that run on pull requests, as well as from jobs that run on your main or stable branches, for example,main, master, or develop.
Example Upload Script
The following is an example of a script to upload test results after your tests run. Note: you must either runtrunk from the repo root when uploading test results or pass a --repo-root argument.
To find out how to produce the report files the uploader needs, see the instructions for your test framework in the frameworks docs.
You can install the Trunk CLI locally like this:
- Linux (x64)
- Linux (arm64)
- macOS (arm64)
- macOS (x64)
trunk flakytests validate command like this:
Environment Variables
Set these environment variables before runningtrunk flaky-tests upload on unsupported CI systems:
Config Requirement:
CUSTOM must be set to true for environment varaibles to take effect and override the auto-detection of CI.All other variables are optional but recommended.| Variable | Description | Example |
|---|---|---|
CUSTOM | Set to true to indicate this CI system is not one of our supported providers | CUSTOM=true |
JOB_URL | Direct link to the CI job/build page. This is the link users will click when viewing test failure logs in Trunk. | https://ci.example.com/builds/12345 |
JOB_NAME | Name of the CI job or test suite | unit-tests |
AUTHOR_EMAIL | Email address of the commit author | dev@example.com |
AUTHOR_NAME | Full name of the commit author | Jane Developer |
COMMIT_BRANCH | Git branch being tested | main |
COMMIT_MESSAGE | Commit message for the tested commit | Fix authentication bug |
PR_NUMBER | Pull request number (if applicable) | 123 |
PR_TITLE | Pull request title (if applicable) | Add new feature |
About JOB_URL
TheJOB_URL variable controls where the “Logs” link in Trunk Flaky Tests points to. When users click “Logs” on a test failure, they’ll be taken to this URL to view the complete CI job output.
Best practice: Provide the most specific link possible:
- ✅ Direct link to the specific job/build where the test ran
- ✅ Link that shows the full logs and test output
- ❌ Link to a dashboard or workflow overview (less helpful for debugging)
For GitHub Actions users: While GitHub Actions is auto-detected, you can override the default workflow URL with a direct job URL. See GitHub Actions - Getting Direct Links to Job Logs for instructions.
Stale files
Ensure you report every test run in CI and clean up stale files produced by your test framework. If you’re reusing test runners and using a glob like**/junit.xml to upload tests, stale files not cleaned up will be included in the current test run, throwing off detection of flakiness. You should clean up all your results files after every upload step.
Have questions?Join us and 1500+ fellow engineers on Slack to get help with Trunk.