This action installs a pre-built datadog-ci binary and uses it to upload JUnitXML files to the Test Optimization product.
Important
v4 requires GitHub Actions Runner 2.327.1 or newer on self-hosted runners. See Migrating from v3 to v4.
name: Test Code
on: [ push ]
jobs:
test:
steps:
- uses: actions/checkout@v7
- run: make tests
- uses: datadog/junit-upload-github-action@v4
with:
api_key: ${{ secrets.DD_API_KEY }}v4 updates its installer dependency from install-datadog-ci-github-action v1 to v2. The new installer uses actions/cache v6, which runs on Node.js 24 and requires GitHub Actions Runner 2.327.1 or newer. No junit-upload-github-action inputs changed between v3.8.0 and v4.0.0.
- GitHub-hosted runners: No runner changes are needed. Update the action reference from
@v3to@v4. - Self-hosted runners: Upgrade the runner to version 2.327.1 or newer before updating the action reference. Node.js 24 does not support macOS 13.4 or earlier or ARM32 hosts.
- Unable to upgrade: Continue using
datadog/junit-upload-github-action@v3.
- uses: datadog/junit-upload-github-action@v3
+ uses: datadog/junit-upload-github-action@v4The Node.js 24 requirement applies to the action runtime and does not change the Node.js version used by your project. See GitHub's Node 20 deprecation notice for details.
The action has the following options:
| Name | Description | Required | Default |
|---|---|---|---|
api_key |
Datadog API key to use to upload the junit files. | True | |
site |
The Datadog site to upload the files to. | False | datadoghq.com |
files |
Path to file or folder containing XML files to upload | False | . |
auto-discovery |
Do a recursive search and automatic XML files discovery in the folders provided in files input (current folder if omitted). Search for filenames that match *junit*.xml, *test*.xml, *TEST-*.xml. |
False | true |
ignored-paths |
A comma-separated list of paths that are ignored when junit files auto-discovery is done. Glob patterns are supported. | False | |
concurrency |
Controls the maximum number of concurrent file uploads | False | 20 |
tags |
Optional extra tags to add to the tests formatted as a comma separated list of tags. Example: foo:bar,data:dog |
False | |
service |
Service name to use with the uploaded test results. | False | |
env |
Optional environment to add to the tests | False | |
logs |
When set to "true" enables forwarding content from the XML reports as Logs. The content inside <system-out>, <system-err>, and <failure> is collected as logs. Logs from elements inside a <testcase> are automatically connected to the test. |
False | |
datadog-ci-version |
Version of datadog-ci to install. Defaults to the pinned datadog-ci release shipped with this action version. Use a major version like v5 to get the latest release within that major version, or a specific tag like v5.6.0 to pin. Legacy npm semver syntax (^, ~, >=, latest) is still supported but deprecated. |
False | v5.24.0 |
github-token |
GitHub token to use for authenticated datadog-ci release resolution. Defaults to the workflow github.token when omitted. |
False | github.token |
extra-args |
Extra args to be passed to the datadog-ci junit upload command. | False |
By default, this action installs the exact datadog-ci release pinned by the action version you use. To receive datadog-ci updates, update datadog/junit-upload-github-action to a newer release or use
the datadog-ci-version configuration to specify the version or range.
This action passes the workflow github.token to the install step by default. That is primarily useful when datadog-ci-version uses a floating release selector such as v5, because GitHub release resolution can then be authenticated.
See RELEASE.md for the local gh-based process used to bump datadog-ci and release this action.