← all organisations

ministryofjustice / Practices

Continuous integration, dependency management, testing and commit discipline, measured from the repositories themselves.

Every claim here is measured against the file tree at HEAD and the commit history, for the 1,180 live repositories with real history. Archived repositories are excluded from the scorecards: judging a 2013 prototype against a 2026 standard tells you nothing useful.

Practice at a glance

85%
of live repos run GitHub Actions
1000 of 1180
46%
have Dependabot configured
the documented dependency policy
96%
have a README
basic discoverability
86%
carry a licence file
MIT is the GDS default

What stands out

85% of the live estate runs GitHub Actions.

RFC-123 made GitHub Actions the preferred CI platform, and the file system agrees: 1000 of 1180 live repositories carry a workflow.

Jenkins and Travis are archaeology here.

22 repositories carry a Jenkinsfile and 142 a .travis.yml, but among live repositories that falls to 7 and 11 respectively. GOV.UK does still run Jenkins for deployment where the manual says platform integration requires it - that machinery simply is not in these public repositories.

55% of merge commits came through the GitHub PR button.

The manual is explicit: merge via the GitHub UI so the PR number lands in the merge commit. 228.4k of 411.7k merge commits carry that signature, which is unusually high discipline for an estate this old and this large.

Conventional Commits never took hold.

Only 3.9% of commits use the feat:/fix: prefix convention, against 20% that reference a ticket identifier. GOV.UK's manual does not mandate Conventional Commits, and the history shows a house style of plain-English subjects averaging 42 characters.

64% of repositories default to main.

863 still default to master - almost entirely archived repositories frozen before the 2020 rename became standard.

Continuous integration

CI platform, whole estate

Counted across all repositories with history, including archived ones, so the historical platforms are visible.

GitHub ActionsGitHub Actions: 1.3k1.3kJenkins (Jenkinsfile)Jenkins (Jenkinsfile): 2222Travis CITravis CI: 142142CircleCICircleCI: 312312

Repository hygiene

Community health and documented conventions

Live repositories only. Bars are coloured by adoption: green above 75%, yellow above 45%, pink above 20%, red below.

READMEREADME: 1129 of 1180 (95.7%)96%1129/1180Licence fileMIT by GDS conventionLicence file: 1013 of 1180 (85.8%)86%1013/1180ci.yml workflowthe documented filenameci.yml workflow: 4 of 1180 (0.3%)0%4/1180.github/dependabot.ymldocumented policy.github/dependabot.yml: 546 of 1180 (46.3%)46%546/1180CODEOWNERSreview routingCODEOWNERS: 491 of 1180 (41.6%)42%491/1180PR templatePR template: 127 of 1180 (10.8%)11%127/1180CONTRIBUTINGCONTRIBUTING: 75 of 1180 (6.4%)6%75/1180SECURITY.mdvulnerability disclosureSECURITY.md: 4 of 1180 (0.3%)0%4/1180Code of conductCode of conduct: 24 of 1180 (2.0%)2%24/1180CHANGELOGCHANGELOG: 109 of 1180 (9.2%)9%109/1180Architecture decision recordsArchitecture decision records: 43 of 1180 (3.6%)4%43/1180

Tooling and testing

Build, container and test tooling

Live repositories only. Language-specific items are naturally capped by the share of repositories in that language.

DockerfileDockerfile: 695 of 1180 (58.9%)59%695/1180Docker Composelocal devDocker Compose: 442 of 1180 (37.5%)37%442/1180Terraform (.tf)Terraform (.tf): 187 of 1180 (15.8%)16%187/1180Helm chartHelm chart: 5 of 1180 (0.4%)0%5/1180.editorconfig.editorconfig: 257 of 1180 (21.8%)22%257/1180.rubocop.ymlRuby repos mostly.rubocop.yml: 44 of 1180 (3.7%)4%44/1180ESLint configESLint config: 53 of 1180 (4.5%)4%53/1180spec/ directoryRSpec, the GDS choicespec/ directory: 57 of 1180 (4.8%)5%57/1180test/ or tests/test/ or tests/: 205 of 1180 (17.4%)17%205/1180features/ (Cucumber)features/ (Cucumber): 8 of 1180 (0.7%)1%8/1180

How commits are written

Commit message habits

Out of 2.2m commits across the whole estate.

Merge commitsMerge commits: 411.7k411.7k...of which 'Merge pull request #n'...of which 'Merge pull request #n': 228.4k228.4kReference a ticket (ABC-123)Reference a ticket (ABC-123): 437.4k437.4kConventional Commits (feat:, fix:)Conventional Commits (feat:, fix:): 84.2k84.2kRevertsReverts: 12.7k12.7k

Most-referenced ticket prefixes

The trace of the issue trackers GDS has used over fifteen years.

SDITSDIT: 31.5k31.5kNNNN: 19.9k19.9kDDPBDDPB: 15.5k15.5kPIPI: 15.1k15.1kCVSLCVSL: 13.2k13.2kDTDT: 12.8k12.8kHAARHAAR: 10.8k10.8kCPRCPR: 10.3k10.3kSAASAA: 10.3k10.3kTINYTINY: 9k9kMAPMAP: 7.6k7.6kDPR2DPR2: 7.5k7.5kLPALPA: 6.8k6.8kPICPIC: 6.7k6.7kWFPWFP: 6.5k6.5k

Default branch

mainmain: 1.6k1.6kmastermaster: 863863developdevelop: 3333gh-pagesgh-pages: 77devdev: 22spike/LGA-4018-CLAH-forgespike/LGA-4018-CLAH-forge: 11