Studier / S18
Hvad uforanderlige udgivelser beskytter i GitHub Actions-workflows
Hvad beskytter GitHubs uforanderlige udgivelser (immutable releases) i Actions-workflows i populære repositorier?
Resumé
Siden 2025-10-28 kan en GitHub-udgivelse (release) offentliggøres som uforanderlig (immutable): dens Git-tag kan så ikke længere flyttes eller slettes. GitHubs dokumentation fortæller desuden forfattere af actions, at et tag, de vil blive ved med at opdatere, såsom hovedversionstagget v1, ikke må være knyttet til en udgivelse, og foreslår, at de »recommend that your users specify a major version« (anbefaler deres brugere at angive en hovedversion). Et workflow, der skriver uses: owner/action@v1, følger denne dokumenterede, tilsigtede brug, og uforanderlige udgivelser beskytter det ikke. Vi målte, hvad mekanismen beskytter i praksis, den 2026-10-03, udelukkende via GitHubs API:
- A: de 1.000 repositorier med flest stjerner blandt offentlige repositorier, der ikke er forks, ikke er arkiverede og har modtaget et push inden for de seneste 90 dage (grænse 29.565 stjerner);
- B: 500 repositorier udtrukket tilfældigt (seed 20261003) blandt de 20.553 sådanne repositorier med 1.000–5.000 stjerner.
Deres workflows på standardbranchen indeholder 58.690 eksterne uses:-referencer i A og 10.472 i B. Hver reference blev klassificeret efter, om den er pinnet med commit-SHA, med tagget for en uforanderlig udgivelse, med et foranderligt tag eller med en branch.
Hvor forfatteren allerede offentliggør uforanderlige udgivelser, er næsten ingen reference beskyttet. Af tagreferencerne til actions, hvis seneste udgivelse er uforanderlig, peger 312 af 6.898 (4,5 %; 95 %-KI 2,8–7,1 %, bootstrap over repositorier) på et beskyttet tag (protected tag) i A, og 76 af 1.564 (4,9 %) i B. De beskyttede er koncentrerede: ét repositorium står for 68 af de 312, og udelades et vilkårligt enkelt repositorium, giver det 3,6–4,6 %. Næsten alle de øvrige er hovedversionstags som @v7. For 3.238 af 6.586 (49,2 %) af de ubeskyttede referencer i A (KI 43,2–56,0 %) peger et tag for en uforanderlig udgivelse allerede på samme commit, så et skift til det ville ikke ændre den kode, der køres.
De mest brugte actions. 28 af de 50 action-repositorier (56,0 %), der bruges af flest repositorier i A, offentliggør deres seneste udgivelse som uforanderlig. GitHubs egne: 12 af 28 (42,9 %) for actions/* (ja: setup-node, setup-python, setup-go, setup-java; nej: checkout, cache, upload-artifact, download-artifact, github-script) og 3 af 6 (50,0 %) for github/*.
Beskyttelsen kommer fra SHA-pinning, i et mindretal af repositorierne. Samlet er 32.978 af 58.690 eksterne referencer (56,2 %; KI 50,7–61,7 %) i A pinnet med SHA, og 4.812 af 10.472 (46,0 %; KI 29,0–60,1 %; 37,7 % uden dets største repositorium, open-telemetry/opentelemetry-python, som står for 1.392 referencer) i B. Det typiske repositorium pinner få: medianen for SHA-andelen pr. repositorium er 5,0 % i A og 0,0 % i B. Alle eksterne referencer, der står i workflowfilerne, er pinnet med SHA i højst 263 af 891 repositorier (29,5 %) i A, og i 174 af 891 (19,5 %), hvis man ser bort fra de 89, der også kalder lokale actions, som vi ikke læste; i B i højst 65 af 398 (16,3 %) eller 55 af 398 (13,8 %). Uforanderlige tags: 0,6 % af referencerne i A, 0,8 % i B.
Låsning af afhængigheder på workflowniveau (workflow-level dependency locking), som blev annonceret 2026-03-26 med »Public preview 3-6 months« (offentlig forhåndsversion om 3–6 måneder), var ikke udgivet den 2026-10-03: de tilhørende punkter på GitHubs roadmap er åbne, og hverken en post i changeloggen eller referencen for workflowsyntaks dokumenterer den. Disse tal beskriver tilstanden, før den udgives.
Tidligere arbejde. datosh/pinned-actions følger SHA-pinning i de 10.000 repositorier med flest stjerner (»only 7%«, dvs. kun 7 %, pinner fuldt ud, april 2026; 506 af 6.290 repositorier, der bruger Actions, 8,0 %, i dets arkiv) og tilføjede i april 2026 en kontrol af, om den seneste udgivelse er uforanderlig; joshjohanning/ensure-immutable-actions (siden 2025-11) kontrollerer, om referencerne i workflows bruger uforanderlige udgivelser. Videnskabelige artikler målte i 2022 SHA-pinning i 1–2 % af referencerne; en artikel på NDSS 2026 fandt, at 16,2 % af repositorierne refererer til enhver action fra tredjepart med SHA eller med et tag fra en verificeret skaber. Vores 29,5 % adskiller sig fra de 8,0 % hos datosh primært på grund af populationen (top 1.000 med nylig aktivitet, ikke top 10.000) og datoen; de første 1.000 poster hos datosh selv giver 100 af 781 (12,8 %). Så vidt vi har kunnet finde, var H1 (hvor mange tagreferencer uforanderlige udgivelser beskytter) og de 49,2 % med et uforanderligt tag på samme commit ikke blevet målt før. Artikel og kilder: https://easybyte.es/lab/studies/s18/paper/.
Automatisering og gennemgang. AI-agenter gennemførte studiet og skrev teksten. En uafhængig AI-reviewer kontrollerede arbejdet; dens fund er indarbejdet (METHOD.md, afsnittet Deviations).
Interessekonflikter. EasyByte udvikler attest-lint og kan komme til at frigive scripts/uses_check.py, den klassifikator, der er brugt her, som et gratis værktøj. I modsætning til ensure-immutable-actions, der foreslår pinning med SHA, angiver det for hvert flytbart tag det tag for en uforanderlig udgivelse, der peger på samme commit.
Citér dette studie
EasyxLab (2026). What immutable releases protect in GitHub Actions workflows. Study S18. EasyByte Hub S. Coop. Mad. https://github.com/easybytehub/easyxlab/tree/main/studies/s18-actions-immutable-releases@techreport{easyxlab_s18,
title = {What immutable releases protect in GitHub Actions workflows},
author = {{EasyxLab}},
institution = {EasyByte Hub S. Coop. Mad.},
number = {S18},
year = {2026},
url = {https://github.com/easybytehub/easyxlab/tree/main/studies/s18-actions-immutable-releases}
}