EasyxLab
Språk: SV Svenska

AI-översättning av det engelska originalet, som är referensversionen. Läs på engelska

Studier / S18

Vad oföränderliga utgåvor skyddar i arbetsflöden i GitHub Actions

Vad skyddar GitHubs oföränderliga utgåvor (immutable releases) i Actions-arbetsflödena i populära repositorier?

ArbetsutkastPublicerad 2026-10-03

Sammanfattning

Sedan 2025-10-28 kan en GitHub-utgåva (release) publiceras som oföränderlig (immutable): dess Git-tagg kan då inte längre flyttas eller raderas. GitHubs dokumentation säger dessutom till författare av actions att en tagg som de vill fortsätta uppdatera, till exempel huvudversionstaggen v1, inte får knytas till en utgåva, och föreslår att de ”recommend that your users specify a major version” (rekommenderar sina användare att ange en huvudversion). Ett arbetsflöde som skriver uses: owner/action@v1 följer den dokumenterade, avsedda användningen, och oföränderliga utgåvor skyddar det inte. Vi mätte vad mekanismen skyddar i praktiken den 2026-10-03, enbart via GitHubs API:

  • A: de 1 000 repositorier som har flest stjärnor bland offentliga repositorier som inte är forkar, inte är arkiverade och har fått en push de senaste 90 dagarna (gräns 29 565 stjärnor);
  • B: 500 repositorier dragna slumpmässigt (slumpfrö 20261003) bland de 20 553 sådana repositorier som har 1 000–5 000 stjärnor.

Deras arbetsflöden i standardgrenen innehåller 58 690 externa uses:-referenser i A och 10 472 i B. Varje referens klassificerades efter om den är pinnad med commit-SHA, med taggen för en oföränderlig utgåva, med en föränderlig tagg eller med en gren.

Där författaren redan publicerar oföränderliga utgåvor är nästan ingen referens skyddad. Av taggreferenserna till actions vars senaste utgåva är oföränderlig pekar 312 av 6 898 (4,5 %; 95 % KI 2,8–7,1 %, bootstrap över repositorier) på en skyddad tagg (protected tag) i A, och 76 av 1 564 (4,9 %) i B. De skyddade är koncentrerade: ett enda repositorium står för 68 av de 312, och om ett valfritt enskilt repositorium utesluts blir det 3,6–4,6 %. Nästan alla övriga är huvudversionstaggar som @v7. För 3 238 av 6 586 (49,2 %) av de oskyddade referenserna i A (KI 43,2–56,0 %) pekar redan en tagg för en oföränderlig utgåva på samma commit, så ett byte till den skulle inte ändra koden som körs.

Mest använda actions. 28 av de 50 action-repositorier (56,0 %) som används av flest repositorier i A publicerar sin senaste utgåva som oföränderlig. GitHubs egna: 12 av 28 (42,9 %) för actions/* (ja: setup-node, setup-python, setup-go, setup-java; nej: checkout, cache, upload-artifact, download-artifact, github-script) och 3 av 6 (50,0 %) för github/*.

Skyddet kommer från SHA-pinning, i en minoritet av repositorierna. Sammantaget är 32 978 av 58 690 externa referenser (56,2 %; KI 50,7–61,7 %) i A pinnade med SHA, och 4 812 av 10 472 (46,0 %; KI 29,0–60,1 %; 37,7 % utan dess största repositorium, open-telemetry/opentelemetry-python, som står för 1 392 referenser) i B. Det typiska repositoriet pinnar få: medianen för SHA-andelen per repositorium är 5,0 % i A och 0,0 % i B. Alla externa referenser som skrivits i arbetsflödesfilerna är pinnade med SHA i högst 263 av 891 repositorier (29,5 %) i A, och i 174 av 891 (19,5 %) om man bortser från de 89 som också anropar lokala actions som vi inte läste; i B i högst 65 av 398 (16,3 %), eller 55 av 398 (13,8 %). Oföränderliga taggar: 0,6 % av referenserna i A, 0,8 % i B.

Låsning av beroenden på arbetsflödesnivå (workflow-level dependency locking), som tillkännagavs 2026-03-26 med ”Public preview 3-6 months” (offentlig förhandsversion om 3–6 månader), hade inte släppts den 2026-10-03: dess punkter i färdplanen är öppna, och ingen post i ändringsloggen eller i referensen för arbetsflödessyntax dokumenterar den. Dessa siffror beskriver läget innan den släpps.

Tidigare arbeten. datosh/pinned-actions följer SHA-pinning i de 10 000 repositorier som har flest stjärnor (”only 7%”, det vill säga bara 7 %, pinnar fullständigt, april 2026; 506 av 6 290 repositorier som använder Actions, 8,0 %, i dess arkiv) och lade i april 2026 till en kontroll av om den senaste utgåvan är oföränderlig; joshjohanning/ensure-immutable-actions (sedan 2025-11) kontrollerar om referenserna i arbetsflöden använder oföränderliga utgåvor. Vetenskapliga artiklar mätte 2022 SHA-pinning hos 1–2 % av referenserna; en artikel vid NDSS 2026 fann att 16,2 % av repositorierna refererar till varje action från tredje part med SHA eller med en tagg från en verifierad skapare. Våra 29,5 % skiljer sig från de 8,0 % hos datosh främst på grund av populationen (topp 1 000 med nylig aktivitet, inte topp 10 000) och datumet; de första 1 000 posterna hos datosh själv ger 100 av 781 (12,8 %). Så långt vi har kunnat finna hade H1 (hur många taggreferenser oföränderliga utgåvor skyddar) och de 49,2 % med en oföränderlig tagg på samma commit inte mätts tidigare. Artikel och källor: https://easybyte.es/lab/studies/s18/paper/.

Automatisering och granskning. AI-agenter genomförde studien och skrev texten. En oberoende AI-granskare kontrollerade arbetet; dess iakttagelser har införts (METHOD.md, avsnittet Deviations).

Intressekonflikter. EasyByte utvecklar attest-lint och kan komma att släppa scripts/uses_check.py, klassificeraren som används här, som ett kostnadsfritt verktyg. Till skillnad från ensure-immutable-actions, som föreslår pinning med SHA, anger det för varje flyttbar tagg den tagg för en oföränderlig utgåva som pekar på samma commit.

Citera den här studien

Referens
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
BibTeX
@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}
}