Zum Hauptinhalt Zur Navigation Zur Suche

CI: Wie Github Actions Entwicklerteams langsam tötet

Einfach nur schreien oder gleich aufgeben? Wie Github Actions uns fertigmacht und was besser ist.
/ Ian Duncan
57 Kommentare News folgen (öffnet im neuen Fenster)
Github Actions ist eine Qual. (Bild: Public Domain)
Github Actions ist eine Qual. Bild: Public Domain
Inhalt
  1. CI: Wie Github Actions Entwicklerteams langsam tötet
  2. Der Log-Viewer oder: Der Nachmittag geht dahin
  3. Geduld und Klicks als Opfergaben auf dem Altar der CI
  4. Unsere Rechenleistung gehört nicht uns
  5. Verlorene Lebenszeit

Dieser Artikel ist eine Übersetzung. Das Original ist hier(öffnet im neuen Fenster) zu finden.

Ich war einer der ersten Mitarbeiter von CircleCI und habe zähneknirschend fast jedes erdenkliche CI-System genutzt: Jenkins, Travis, CircleCI, Semaphore, Drone, Concourse, Wercker (erinnert sich noch jemand an Wercker?), Teamcity, Bamboo, Gitlab CI, Codebuild und wahrscheinlich noch ein halbes Dutzend andere, die ich Gott sei Dank vergessen habe. Ich habe diese Systeme ausgiebig für euch getestet – die Narben kann man gut sehen.

Heute spreche ich aber über Github Actions. Und was soll ich sagen: Es ist nicht gut, nicht einmal okay. So ziemlich das Netteste, was ich darüber sagen kann ist, dass es in eurem Repo direkt vorhanden ist – und das bringt ihm auch seine Marktanteile.

Wie sich CI (Continous Integration) anfühlen sollte, zeigt Buildkite. Aber kommen wir zunächst dazu, wie sich CI nicht anfühlen sollte.

Wenn ihr Nix nutzt, könnt ihr gleich aufhören zu lesen

Bevor ich ins Detail gehe, ein genereller Hinweis: Wenn ihr Nix verwendet, seht ihr euch am besten Garnix(öffnet im neuen Fenster) an. Es wertet eure Flake-Datei aus, ermittelt, was kompiliert werden muss, und kompiliert es. Es gibt hier kein YAML und keine Pipeline-Konfiguration. Garnix sieht sich einfach eure flake.nix an und tut das Richtige. Manchmal ist die beste CI-Konfiguration gar keine CI-Konfiguration.

Die meisten nutzen jedoch kein Nix. Dieser Beitrag richtet sich an euch. Mein Beileid.

Teil I: Der Abstieg

Lasst mich mit mit einem dramatischen Beispiel beginnen. Es klingt vielleicht übertrieben, ist es aber nicht.

Die Situation: Der Build schlägt fehl, es erscheint ein rotes X auf dem Pull Request. Man klickt sich durch, um zu sehen, was passiert ist. Und die Tortur beginnt.

Zuerst landet man auf der Übersichtsseite der Checks, die eine Liste der Workflow Runs anzeigt. Vielleicht ist einer fehlgeschlagen, vielleicht drei. Man klickt auf den, der relevant aussieht.

Jetzt ist man auf der Seite mit den Workflow Runs, die eine Liste von Jobs anzeigt. Man klickt auf den fehlgeschlagenen Job, die Job-Seite zeigt eine Liste von Schritten, alle ausklappbar. Man klickt auf den Schritt, der fehlgeschlagen ist, die Seite ruckelt, man scrollt. Dann gibt eine Pause, in der man den Atem anhält. Dann erscheinen die Logs – aber so langsam wie bei einem Manuskript, das Zeile für Zeile einem Bittsteller offenbart wird, der sich noch nicht als würdig erwiesen hat.

Es braucht drei, vier Klicks, nur um den Fehler zu sehen. Bei jedem wird eine neue Seite mit einem eigenen Loading Spinner geladen, und keine davon ist schnell. Man bewegt sich durch einen bürokratischen Dschungel, füllt Formulare quasi wie beim Kraftfahrtbundesamt der CI aus.


Relevante Themen