EasyxLab
Jazyk: SK Slovenčina

Preklad anglického originálu pomocou AI; referenčnou verziou je originál. Čítať v angličtine

Štúdie / S18

Čo chránia nemenné vydania vo workflow GitHub Actions

Čo chránia nemenné vydania platformy GitHub vo workflow Actions populárnych repozitárov?

Pracovná verziaZverejnené 2026-10-03

Abstrakt

Od 2025-10-28 možno vydanie (release) na platforme GitHub publikovať ako nemenné (immutable): jeho tag Git už nemožno presunúť ani odstrániť. Dokumentácia GitHub tiež autorom akcií hovorí, že tag, ktorý chcú ďalej aktualizovať, napríklad tag hlavnej verzie v1, nesmie byť spojený s vydaním, a navrhuje, aby „recommend that your users specify a major version“ (odporúčali používateľom uvádzať hlavnú verziu). Workflow, ktorý obsahuje uses: owner/action@v1, sa riadi týmto zdokumentovaným, zamýšľaným použitím a nemenné vydania ho nechránia. Dňa 2026-10-03 sme zmerali, čo tento mechanizmus chráni v praxi, a to výlučne cez GitHub API:

  • A: 1 000 repozitárov s najväčším počtom hviezdičiek spomedzi verejných repozitárov, ktoré nie sú forkmi ani archivované a do ktorých bol vykonaný push za posledných 90 dní (hranica 29 565 hviezdičiek);
  • B: 500 náhodne vybraných repozitárov (seed 20261003) z 20 553 takých repozitárov s 1 000–5 000 hviezdičkami.

Workflow v ich predvolených vetvách obsahujú 58 690 vzdialených odkazov uses: v A a 10 472 v B. Každý sme klasifikovali podľa toho, čím je pripnutý: SHA commitu, tagom nemenného vydania, meniteľným tagom alebo vetvou.

Tam, kde autor už publikuje nemenné vydania, nie je chránený takmer žiadny odkaz. Z odkazov cez tag (tag references) na akcie, ktorých najnovšie vydanie je nemenné, ukazuje na chránený tag (protected tag) 312 zo 6 898 (4,5 %) v A (95% interval 2,8–7,1 %, bootstrap cez repozitáre) a 76 z 1 564 (4,9 %) v B. Chránené odkazy sú koncentrované: jeden repozitár ich obsahuje 68 z 312 a vynechanie ktoréhokoľvek jednotlivého repozitára dáva 3,6–4,6 %. Takmer všetky ostatné sú tagy hlavnej verzie, napríklad @v7. Pri 3 238 zo 6 586 (49,2 %) nechránených odkazov v A (interval 43,2–56,0 %) už na rovnaký commit ukazuje tag nemenného vydania, takže prechod naň by nezmenil kód, ktorý sa spúšťa.

Najpoužívanejšie akcie. 28 z 50 (56,0 %) repozitárov akcií, ktoré používa najviac repozitárov v A, publikuje svoje najnovšie vydanie ako nemenné. Vlastné akcie GitHub (first party): 12 z 28 (42,9 %) pre actions/* (áno: setup-node, setup-python, setup-go, setup-java; nie: checkout, cache, upload-artifact, download-artifact, github-script) a 3 zo 6 (50,0 %) pre github/*.

Ochranu nesie pripínanie cez SHA, a to v menšine repozitárov. Spolu je v A pripnutých cez SHA 32 978 z 58 690 (56,2 %) vzdialených odkazov (interval 50,7–61,7 %) a v B 4 812 z 10 472 (46,0 %) (interval 29,0–60,1 %; 37,7 % bez jeho najväčšieho repozitára, open-telemetry/opentelemetry-python, ktorý obsahuje 1 392 odkazov). Typický repozitár pripína málo: medián podielu SHA v jednotlivých repozitároch je 5,0 % v A a 0,0 % v B. Všetky vzdialené odkazy zapísané v súboroch workflow sú pripnuté cez SHA najviac pri 263 z 891 (29,5 %) repozitárov v A a pri 174 z 891 (19,5 %), ak vynecháme 89 repozitárov, ktoré volajú aj lokálne akcie, ktoré sme nečítali; v B najviac pri 65 z 398 (16,3 %), resp. pri 55 z 398 (13,8 %). Nemenné tagy: 0,6 % odkazov v A, 0,8 % v B.

Uzamykanie závislostí na úrovni workflow (workflow-level dependency locking), oznámené 2026-03-26 s poznámkou „Public preview 3-6 months“, nebolo ku dňu 2026-10-03 dostupné: jeho položky v roadmape sú otvorené a nedokumentuje ho žiadny záznam v changelogu ani referenčná dokumentácia syntaxe workflow. Tieto čísla opisujú stav pred jeho zavedením.

Predchádzajúce práce. datosh/pinned-actions sleduje pripínanie cez SHA pri 10 000 repozitároch s najväčším počtom hviezdičiek („only 7%“ pripína úplne, apríl 2026; v jeho archíve 506 zo 6 290 repozitárov používajúcich Actions, 8,0 %) a v apríli 2026 pridal kontrolu, či je najnovšie vydanie nemenné; joshjohanning/ensure-immutable-actions (od 2025-11) kontroluje, či odkazy vo workflow používajú nemenné vydania. Odborné články namerali v roku 2022 pripínanie cez SHA pri 1–2 % odkazov; práca z NDSS 2026 zistila, že 16,2 % repozitárov odkazuje na každú akciu tretej strany cez SHA alebo cez tag overeného tvorcu. Našich 29,5 % sa od 8,0 % pri datosh líši hlavne populáciou (1 000 najpopulárnejších s nedávnou aktivitou, nie 10 000 najpopulárnejších) a dátumom; prvých 1 000 položiek samotného datosh dáva 100 zo 781 (12,8 %). Pokiaľ sa nám podarilo zistiť, H1 (koľko odkazov cez tag chránia nemenné vydania) ani 49,2 % s nemenným tagom na rovnakom commite doteraz nikto nemeral. Článok a zdroje: https://easybyte.es/lab/studies/s18/paper/.

Automatizácia a kontrola. Štúdiu vykonali agenti AI a napísali text. Prácu skontroloval nezávislý recenzent AI; jeho zistenia boli zapracované (METHOD.md, oddiel Deviations).

Konflikt záujmov. EasyByte vyvíja attest-lint a môže vydať scripts/uses_check.py, klasifikátor použitý v tejto štúdii, ako bezplatný nástroj. Na rozdiel od ensure-immutable-actions, ktorý navrhuje pripnutie cez SHA, uvádza pre každý posuvný tag tag nemenného vydania na rovnakom commite.

Citovať túto štúdiu

Citácia
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}
}