EasyxLab
Valoda: LV Latviešu

Angļu valodas oriģināla MI tulkojums; atsauces versija ir oriģināls angļu valodā. Lasīt angļu valodā

Pētījumi / S18

Ko aizsargā nemainīgi laidieni GitHub Actions darbplūsmās

Ko GitHub nemainīgie laidieni aizsargā populāru repozitoriju GitHub Actions darbplūsmās (workflows)?

Darba versijaPublicēts 2026-10-03

Kopsavilkums

Kopš 2025-10-28 GitHub laidienu (release) var publicēt kā nemainīgu (immutable): tā Git birku (tag) vairs nevar pārvietot vai dzēst. GitHub dokumentācija darbību (actions) autoriem arī norāda, ka birku, kuru viņi vēlas turpināt atjaunināt, piemēram, galvenās versijas birku v1, nedrīkst saistīt ar laidienu, un iesaka viņiem „ieteikt lietotājiem norādīt galveno versiju“. Darbplūsma (workflow), kurā rakstīts uses: owner/action@v1, ievēro šo dokumentēto, paredzēto lietojumu, un nemainīgie laidieni to neaizsargā. Mēs 2026-10-03 izmērījām, ko šis mehānisms aizsargā praksē, izmantojot tikai GitHub API:

  • A: 1000 repozitoriju ar visvairāk zvaigznēm no publiskiem repozitorijiem, kas nav atzari (forks), nav arhivēti un kuros pēdējo 90 dienu laikā veikts push (slieksnis 29 565 zvaigznes);
  • B: 500 repozitoriju, kas nejauši atlasīti (sēkla 20261003) no 20 553 šādiem repozitorijiem ar 1000–5000 zvaigznēm.

To noklusējuma zara darbplūsmās ir 58 690 attālu uses: atsauču grupā A un 10 472 grupā B. Katra no tām klasificēta kā fiksēta (pinned) ar commit SHA, ar nemainīga laidiena birku, ar maināmu birku vai ar zaru.

Ja autors jau publicē nemainīgus laidienus, gandrīz neviena atsauce nav aizsargāta. No atsaucēm uz to darbību birkām, kuru jaunākais laidiens ir nemainīgs, grupā A 312 no 6898 (4,5 %) norāda uz aizsargātu birku (95 % intervāls 2,8–7,1 %, bootstrap pa repozitorijiem), bet grupā B — 76 no 1564 (4,9 %). Aizsargātās ir koncentrētas: vienā repozitorijā ir 68 no šīm 312, un, izlaižot jebkuru vienu repozitoriju, iegūst 3,6–4,6 %. Gandrīz visas pārējās ir galvenās versijas birkas, piemēram, @v7. 3238 no 6586 (49,2 %) neaizsargātajām atsaucēm grupā A (intervāls 43,2–56,0 %) nemainīga laidiena birka jau norāda uz to pašu commit, tāpēc pāreja uz to nemainītu izpildāmo kodu.

Visbiežāk izmantotās darbības. 28 no 50 (56,0 %) darbību repozitorijiem, ko grupā A izmanto visvairāk repozitoriju, savu jaunāko laidienu publicē kā nemainīgu. Paša GitHub darbības (first party): actions/* — 12 no 28 (42,9 %) (jā: setup-node, setup-python, setup-go, setup-java; nē: checkout, cache, upload-artifact, download-artifact, github-script), github/* — 3 no 6 (50,0 %).

Aizsardzību nodrošina fiksēšana ar SHA, un tikai repozitoriju mazākumā. Kopumā grupā A ar SHA ir fiksētas 32 978 no 58 690 (56,2 %) attālajām atsaucēm (intervāls 50,7–61,7 %), bet grupā B — 4812 no 10 472 (46,0 %) (intervāls 29,0–60,1 %; 37,7 % bez tās lielākā repozitorija open-telemetry/opentelemetry-python, kurā ir 1392 atsauces). Tipisks repozitorijs fiksē maz: SHA īpatsvara mediāna pa repozitorijiem ir 5,0 % grupā A un 0,0 % grupā B. Repozitoriju, kuru darbplūsmu datnēs visas ierakstītās attālās atsauces ir fiksētas ar SHA, grupā A ir ne vairāk kā 263 no 891 (29,5 %), bet 174 no 891 (19,5 %), ja neieskaita 89 repozitorijus, kas izsauc arī lokālas darbības, kuras mēs nenolasījām; grupā B — ne vairāk kā 65 no 398 (16,3 %) jeb 55 no 398 (13,8 %). Nemainīgas birkas: 0,6 % atsauču grupā A, 0,8 % grupā B.

Atkarību aizslēgšana darbplūsmas līmenī (workflow-level dependency locking), kas paziņota 2026-03-26 ar norādi „Public preview 3-6 months“, 2026-10-03 vēl nebija ieviesta: tās ceļveža (roadmap) punkti ir atvērti, un to nedokumentē neviens izmaiņu žurnāla (changelog) ieraksts vai darbplūsmu sintakses rokasgrāmata. Šie skaitļi apraksta stāvokli pirms tās ieviešanas.

Iepriekšējie darbi. datosh/pinned-actions seko fiksēšanai ar SHA 10 000 repozitorijos ar visvairāk zvaigznēm („tikai 7 %“ fiksē pilnībā, 2026. gada aprīlis; tā arhīvā — 506 no 6290 repozitorijiem, kas izmanto Actions, 8,0 %) un 2026. gada aprīlī pievienoja jaunākā laidiena nemainīguma pārbaudi; joshjohanning/ensure-immutable-actions (kopš 2025-11) pārbauda, vai darbplūsmu atsauces izmanto nemainīgus laidienus. Raksti 2022. gadā fiksēšanu ar SHA izmērīja 1–2 % atsauču; NDSS 2026 konstatēja, ka 16,2 % repozitoriju uz katru trešās puses darbību atsaucas ar SHA vai ar verificēta autora (verified creator) birku. Mūsu 29,5 % atšķiras no datosh 8,0 % galvenokārt populācijas dēļ (1000 populārākie ar nesenu aktivitāti, nevis 10 000 populārākie) un datuma dēļ; paša datosh pirmie 1000 ieraksti dod 100 no 781 (12,8 %). Cik mums izdevās noskaidrot, H1 (cik atsauču uz birkām aizsargā nemainīgie laidieni) un 49,2 % ar nemainīgu birku tajā pašā commit nebija izmērīti. Raksts un avoti: https://easybyte.es/lab/studies/s18/paper/.

Automatizācija un pārskatīšana. Pētījumu veica un tekstu uzrakstīja MI aģenti. Darbu pārbaudīja neatkarīgs MI recenzents; tā konstatējumi ir piemēroti (METHOD.md, sadaļa Deviations).

Interešu konflikts. EasyByte izstrādā attest-lint un var izlaist šeit izmantoto klasifikatoru scripts/uses_check.py kā bezmaksas rīku. Atšķirībā no ensure-immutable-actions, kas iesaka fiksēšanu ar SHA, tas katrai pārvietojamai birkai norāda nemainīga laidiena birku tajā pašā commit.

Citējiet šo pētījumu

Atsauce
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}
}