Skip to main content

CI Metadata

TestFly detects well-known CI/CD environments and captures structured metadata about the pipeline run. This metadata is embedded in:

  • target/testfly-metrics.json — top-level ci object
  • target/testfly-report.html — Build Metadata card with a link back to the pipeline
  • target/surefire-reports/TEST-TestFly.xml — <properties> block for tooling that parses JUnit XML

No manual configuration is required in most cases.


Supported providers​

ProviderDetection variable
GitHub ActionsGITHUB_ACTIONS
JenkinsJENKINS_URL
GitLab CIGITLAB_CI
CircleCICIRCLECI
Travis CITRAVIS
TeamCityTEAMCITY_VERSION
Bitbucket PipelinesBITBUCKET_BUILD_NUMBER
Generic CICI

Captured fields​

FieldExampleNotes
providerGitHub ActionsHuman-readable CI name
buildNumber42Display build number
buildId123456789Internal run/pipeline ID
branchfeature/ci-metaPull-request branch is preferred when available
commitShaabc123defFull SHA from the CI env, if provided
commitMessageAdd CI metadataOnly available on GitLab/Bitbucket
buildUrlhttps://github.com/.../actions/runs/123Link back to the pipeline
jobNameunit-testsCI job/stage name
pullRequest7PR/MR identifier, when present
repositorytestfly/testflyRepo slug or URL
actorhagulUser that triggered the build
agentNameagent-01Runner/agent name
environmentstagingDeployment environment name, if set

Fields that are unavailable for a provider are omitted rather than shown as empty.


Configuration​

Capture is enabled automatically when a CI environment is detected. To disable it explicitly:

testfly.yml
ci:
captureMetadata: false

To force it on even outside CI:

testfly.yml
ci:
captureMetadata: true

Provider variable mapping​

GitHub Actions​

FieldEnvironment variable
ProviderGITHUB_ACTIONS
Build NumberGITHUB_RUN_NUMBER
Build IDGITHUB_RUN_ID
BranchGITHUB_HEAD_REF (PR) or GITHUB_REF_NAME
Commit SHAGITHUB_SHA
RepositoryGITHUB_REPOSITORY
ActorGITHUB_ACTOR
Job NameGITHUB_JOB
Agent NameRUNNER_NAME
Build URLSynthesized from GITHUB_SERVER_URL, GITHUB_REPOSITORY, GITHUB_RUN_ID

Jenkins​

FieldEnvironment variable
ProviderJENKINS_URL
Build NumberBUILD_NUMBER
Build IDBUILD_ID
BranchGIT_BRANCH (strips refs/heads/ prefix)
Commit SHAGIT_COMMIT
Build URLBUILD_URL
Job NameJOB_NAME
Pull RequestCHANGE_ID
Agent NameNODE_NAME

GitLab CI​

FieldEnvironment variable
ProviderGITLAB_CI
Build NumberCI_PIPELINE_IID
Build IDCI_PIPELINE_ID
BranchCI_COMMIT_REF_NAME
Commit SHACI_COMMIT_SHA
Commit MessageCI_COMMIT_MESSAGE
Build URLCI_PIPELINE_URL
Job NameCI_JOB_NAME
Pull RequestCI_MERGE_REQUEST_IID
RepositoryCI_PROJECT_PATH
ActorGITLAB_USER_LOGIN
Agent NameCI_RUNNER_DESCRIPTION
EnvironmentCI_ENVIRONMENT_NAME

CircleCI​

FieldEnvironment variable
ProviderCIRCLECI
Build NumberCIRCLE_BUILD_NUM
Build IDCIRCLE_WORKFLOW_ID
BranchCIRCLE_BRANCH
Commit SHACIRCLE_SHA1
Build URLCIRCLE_BUILD_URL
Job NameCIRCLE_JOB
Pull RequestCIRCLE_PR_NUMBER
RepositoryCIRCLE_REPOSITORY_URL
ActorCIRCLE_USERNAME

Travis CI​

FieldEnvironment variable
ProviderTRAVIS
Build NumberTRAVIS_BUILD_NUMBER
Build IDTRAVIS_BUILD_ID
BranchTRAVIS_BRANCH
Commit SHATRAVIS_COMMIT
Build URLTRAVIS_BUILD_WEB_URL
Job NameTRAVIS_JOB_NAME
Pull RequestTRAVIS_PULL_REQUEST (false → omitted)
RepositoryTRAVIS_REPO_SLUG
ActorTRAVIS_PULL_REQUEST_AUTHOR

TeamCity​

FieldEnvironment variable
ProviderTEAMCITY_VERSION
Build NumberBUILD_NUMBER
Build IDTEAMCITY_BUILD_ID
BranchBRANCH_NAME
Commit SHABUILD_VCS_NUMBER
Build URLBUILD_URL
Job NameTEAMCITY_BUILDCONF_NAME
Agent NameAGENT_NAME

Bitbucket Pipelines​

FieldEnvironment variable
ProviderBITBUCKET_BUILD_NUMBER
Build NumberBITBUCKET_BUILD_NUMBER
Build IDBITBUCKET_PIPELINE_UUID
BranchBITBUCKET_BRANCH
Commit SHABITBUCKET_COMMIT
Commit MessageBITBUCKET_COMMIT_MESSAGE
Build URLBITBUCKET_BUILD_URL
Job NameBITBUCKET_STEP_UUID
Pull RequestBITBUCKET_PR_ID
RepositoryBITBUCKET_REPO_FULL_NAME

Consuming metadata downstream​

Metrics JSON​

target/testfly-metrics.json
{
"ci": {
"provider": "GitHub Actions",
"buildNumber": "42",
"branch": "main",
"commitSha": "abc123",
"buildUrl": "https://github.com/hakanngul/testfly/actions/runs/123"
}
}

JUnit XML​

target/surefire-reports/TEST-TestFly.xml
<testsuite ...>
<properties>
<property name="provider" value="GitHub Actions"/>
<property name="buildNumber" value="42"/>
...
</properties>
...
</testsuite>

These properties are picked up by Jenkins, GitHub Actions test reporters, SonarQube, and many other CI tools.