CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/ci-test-job-conventions

Pure-reference for cross-CI test workflow conventions - when to shard (and how many shards), retry policy (which failures are safe to retry), flake-quarantine integration, artifact retention, per-trigger cadence (per-PR vs per-merge vs nightly), concurrency-cancel patterns, per-job timeouts, secret management, and cross-CI portability. Use as the team's reference for CI test-workflow design across GitHub Actions / GitLab CI / Jenkins / CircleCI; per-CI reporting and per-language reporter / cache-key lookups live in references/.

79

Quality

99%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

junit-and-cache-lookups.mdreferences/

CI JUnit and cache-key lookup tables

Deep reference for ci-test-job-conventions SKILL.md. Consult by CI platform and language once the workflow's shard / retry / cadence decisions are made - these tables carry no design decisions, only the concrete mechanism per platform and per language.

JUnit XML reporting (cross-CI standard)

Every modern CI accepts JUnit XML via either a native plugin or a third-party action:

CIJUnit XML support
GitHub Actionsdorny/test-reporter action
GitLab CIartifacts.reports.junit: (native)
Jenkinsjunit '...' (JUnit Plugin; native)
CircleCIstore_test_results: (native; feeds Insights)

Always emit JUnit XML; the same output feeds every CI's reporting and the downstream junit-xml-analysis parser (in the qa-test-reporting plugin).

Per-language standard reporters

LanguageDefault reporterJUnit XML output
JavaScript (Jest)defaultjest-junit (separate package)
TypeScript(same as JS)(same)
Python (pytest)pytestpytest --junitxml=reports/junit.xml
Java (Maven)Surefiretarget/surefire-reports/*.xml (default)
Java (Gradle)Gradle Testbuild/test-results/test/*.xml (default)
.NETdotnet test--logger "junit;LogFilePath=..."
Gogo testgotestsum --junitfile=junit.xml
Ruby (RSpec)RSpec--format RspecJunitFormatter --out junit.xml

The same JUnit XML feeds every CI's reporting + downstream analysis tools.

Per-language cache strategies

Per-language cache key recommendations:

  • Node: cache key on package-lock.json hash
  • Python: cache key on requirements.txt / poetry.lock hash
  • Java (Maven): cache key on pom.xml hash; cache ~/.m2
  • Java (Gradle): cache ~/.gradle
  • Go: cache ~/go/pkg/mod on go.sum hash
  • Rust: cache ~/.cargo on Cargo.lock hash

Benefits: repeat installs are sub-second vs 30s-2min cold. Trade-off: cache eviction when key changes; extra config to manage.

SKILL.md

tile.json