-
Probleme mit GitHub Actions
- In letzter Zeit wurde viel Zeit darauf verwendet, CI-Skripte mit GitHub Actions neu zu schreiben. Zuvor wurde Earthly verwendet, doch da es eingestellt wurde, ging es zurück zu GitHub Actions.
- CI ist komplex und umfasst eine Merge Queue, mehrere Runner, Rust-Builds, Docker-Images, Integrationstests und mehr. Bei jedem Merge eines PR wird viel CI-Zeit verbraucht.
- Gute Softwarepraktiken erfordern, dass alle Tests bestehen, kleine Fehler automatisch korrigiert werden und die getesteten Artefakte mit dem Release identisch sind. GitHub Actions macht das möglich, aber die Konfiguration ist komplex und inkonsistent.
-
Status Checks und Merge Queue
- Die Merge Queue von GitHub rebased PRs auf den Main-Branch und führt danach CI aus. CI muss jedoch sowohl vor als auch nach dem Einreihen in die Queue ausgeführt werden, und das einzurichten ist schwierig.
- Die Lösung besteht darin, in beiden Phasen denselben Job-Namen zu setzen. Dadurch müssen beide Phasen erfolgreich sein.
-
Sicherheitsprobleme
- Kürzlich wurde eine populäre GitHub Action kompromittiert. Als Gegenmaßnahme wurde empfohlen, Abhängigkeiten per Hash zu pinnen, aber die meisten Nutzer tun das nicht.
- Das Sicherheitsmodell von GitHub ist komplex und schwer zu verstehen. Die Standardberechtigungen für
GITHUB_TOKEN lassen sich festlegen, aber wie man Berechtigungen entzieht, ist nicht eindeutig.
- Workflow-Berechtigungen hängen nicht von der Action selbst ab, und es wirkt merkwürdig, Berechtigungen im Code zu erhöhen.
-
Die Kombination aus Docker und GitHub Actions
- In GitHub Actions lassen sich Jobs innerhalb eines Containers ausführen, aber dabei treten Probleme wie Dateiberechtigungen und ein geänderter Speicherort des
$HOME-Verzeichnisses auf.
- Das Container-Feld hat viele Einschränkungen, sodass es nicht möglich ist, den Entrypoint zu überschreiben oder nur einige Schritte innerhalb des Containers auszuführen.
-
Workflow-Entwicklung in YAML
- Logik in YAML zu schreiben kann komplex werden und ist fehleranfällig. Mit der RustRover-IDE wurden einige Prüfungen durchgeführt, doch bessere statische Prüfungen sind nötig.
- Lokales Testen ist schwierig, sodass wiederholt Commits erstellt und gepusht werden müssen, bis CI in einem separaten, identischen Repository funktioniert.
- Workflows sollten klein gehalten und Artefakte hochgeladen werden, damit sie in anderen Workflows wiederverwendet werden können. Beim Herunterladen von Artefakten ist jedoch ein Token erforderlich.
-
Fazit
- Mit dem neuen CI-Skript wurde die Merge-Zeit deutlich verkürzt, doch die Einrichtung bleibt komplex und das Debugging schwierig. Innovation ist nötig.
1 Kommentare
Hacker-News-Kommentare
Es gibt zwar die Meinung, dass GitLab besser ist, aber auch GitLab hat auf andere Weise Probleme
Es ist interessant, dass GitHub Actions und DevOps so breit kritisiert werden
Ich habe GitLab verwendet und bin dann zu GitHub gewechselt, war aber enttäuscht
Ein Feedback-Loop von 30–60 Sekunden ist das Schlimmste
Ich möchte nicht, dass CI den Code automatisch verändert
Es ist enttäuschend, dass die Weiterentwicklung von GitHub Actions stehen geblieben zu sein scheint
GitHub Actions verleitet dazu, Container als Installationsskripte zu missbrauchen
Es ist wichtig, das richtige Tool zu wählen
Wegen Sicherheitsproblemen bei GitHub Action sollte man Abhängigkeiten per Hash festschreiben
GitHub Actions hat viele Probleme