Alle Beiträge

Geprüfter Tag, anderer Code im Lauf: Lockfiles für GitHub Actions

GitHub · 4 Min. Lesezeit ·

Du prüfst einen Pull Request, der uses: some-org/deploy-action@v4 in einen Workflow einträgt. Die Action sieht in Ordnung aus, du gibst frei, sie läuft. Einen Monat später läuft derselbe Workflow wieder, zeigt weiterhin auf v4 und führt Code aus, den niemand im Team gelesen hat. In deinem Repository hat sich nichts geändert. Der Tag wurde verschoben. Genau diese Lücke soll ein neues Feature schließen: Am 14. Oktober 2026 hat GitHub Workflow-Lockfiles als Public Preview veröffentlicht, verfügbar in den Plänen Free und Team sowie in Enterprise Cloud.

am Tag des Reviews am Tag des Laufs Tag v4 Commit A von dir gelesen Tag v4 Commit B von niemandem gelesen dieselbe Workflow-Datei dein Repository blieb gleich, der Tag nicht
Ein Tag ist ein Zeiger, den jemand anderes kontrolliert. Dein Review hat freigegeben, worauf er an jenem Tag zeigte.

Warum ein geprüfter Workflow kein geprüfter Lauf ist

Tags und Branches lassen sich verschieben, nachdem du einen Workflow geprüft hast. GitHub beschreibt das Risiko selbst ohne Umschweife: Ist eine Action kompromittiert, kann ein verschobener Tag oder Branch Schadcode in deine Läufe bringen, ganz ohne Änderung in deinem Repository. Die Diff-Historie bleibt sauber, der Branch-Schutz greift nie, und die Änderung existiert nur im Repository eines anderen. Bei einem Workflow mit Deploy-Key oder Registry-Token steht damit alles auf dem Spiel.

Was das Lockfile fixiert

Laut GitHub kannst du im Workflow lesbare Referenzen wie @v4 behalten, während Actions genau die Commits ausführt, die du gesperrt hast. Erzeugt wird das Lockfile mit der Erweiterung gh actions-lock für die GitHub CLI. Sie schreibt .github/workflows/actions.lock mit prüfbaren Commits für deine Actions, deren transitive Abhängigkeiten und die Abhängigkeiten aufgerufener wiederverwendbarer Workflows. Wird der Tag später verschoben, nutzt der Lauf laut GitHub weiterhin den eingetragenen Commit.

Workflow sagt uses ...@v4 actions.lock Action: Commit A Abhängigkeit: Commit C Lauf nutzt A und C Tag v4 verschoben auf Commit B ignoriert, bis du den Lock neu erzeugst
Die Referenz bleibt für Menschen lesbar. Ausgeführt wird der Commit, der im Lockfile steht.

Der Unterschied zum manuellen Pinnen von SHAs

Die altbekannte manuelle Lösung, als allgemeine Praxis, ist der volle 40-stellige Commit-SHA in der uses:-Zeile. Das funktioniert, ist aber schwer lesbar, wird beim Aktualisieren leicht vergessen und fixiert nur die Action, die du benannt hast. Ist diese Action eine Composite Action, die andere Actions per Tag aufruft, können sich diese inneren Referenzen weiterhin bewegen. Das Lockfile deckt diese transitive Ebene ab. Zusammen mit Dependabot erzeugt laut GitHub ein Versionsupdate für eine Action in einem eingebundenen Workflow den passenden Lockfile-Eintrag im selben Pull Request neu, sodass Pin und Upgrade gemeinsam geprüft werden.

Einführen ohne großen Umbau

Mit der Erweiterung von GitHub bindest du Workflows einzeln ein. Ist ein Workflow eingebunden, braucht er Lockfile-Einträge für seine Abhängigkeiten, und seine Läufe nutzen die eingetragenen Commits. Dieselbe Erweiterung kann ein veraltetes Lockfile erkennen, ohne Dateien zu ändern. Das passt zu einem CI-Schritt, der den Pull Request scheitern lässt, wenn der Lock nicht mehr aktuell ist. Admins auf Repository-, Organisations- oder Enterprise-Ebene können außerdem eine Richtlinie „Require lockfile" aktivieren, ebenfalls als Public Preview.

Ein Lockfile sorgt dafür, dass der ausgeführte Code der geprüfte Code bleibt. Sicher macht es diesen Code nicht: Das sagt GitHub selbst, also prüfe eine Action, bevor du sie sperrst.

Ein praktischer erster Schritt: Nimm den Workflow in deinem Repository mit dem heikelsten Secret, meist den Deploy, führe gh actions-lock darauf aus, lies die eingetragenen Commits und ergänze die Prüfung auf veraltete Lockfiles in der CI. Danach kommt der nächste Workflow. GitHub dankt Andrew Nesbitt, François Proulx, Jesse Houwing und William Woodruff für die Zusammenarbeit an dem Feature. Quelle: GitHub Changelog, workflow lockfiles in public preview.

Notizen der Leser

  1. Noch keine Notizen. Die erste ist immer die mutigste.
Baust du etwas Ähnliches? Ich kann helfen. Schreib mir auf WhatsApp