Codeberg ist eine großartige Plattform für Codehosting, die durch einen Verein unabhängig von finanziellen Interessen und in Europa betrieben wird. Sie bietet viele der Funktionen, die GitHub so beliebt gemacht haben, darunter auch Codeberg CI, das es ermöglicht, Workflows auf Commits und Pull Requests auszuführen. Gestern rannte ich jedoch wieder einmal in das Problem, dass Workflows nicht starten wollten. Da das Problem und seine Lösung zwar in einem Issue auf Codeberg erwähnt werden, dieser aber nicht schnell zu finden ist und die Lösung auch nur skizziert, möchte ich diese hier auch nochmal dokumentieren.
Das Problem
Nachdem ein neuer Commit zu Codeberg geschickt wurde, startet der Workflow nicht. Beim Öffnen des Workflows wird angezeigt, dass ein Fehler aufgetreten ist.
Geht man auf „Fehler anzeigen“, wird angezeigt:
could not load config from forge: %!w()
Startet man den Werkflow über die Schaltfläche „Neustarten“ in der oberen rechten Ecke neu, so ändert sich die Fehlermeldung zu:
pipeline definition not found
Dieses Problem tritt auch bei Workflows auf, die zuvor einwandfrei funktioniert haben. Die Ursache für dieses Verhalten liegt oft in der hohen Last auf Codeberg, die durch DOS-Angriffe oder KI-Scraper verursacht wird. Diese hohe Last kann dazu führen, dass Events verloren gehen, was wiederum zu diesem Zustand führt.
Die Lösung
Die Lösung für dieses Problem besteht darin, einen neuen Commit zu pushen. Mit der folgenden Technik kann dies ohne zusätzliche Änderungen am Code erfolgen.
-
Lokalen Commit anpassen: Folgender Befehl, auf dem lokalen Branch ausgeführt, erstellt einen Commit, der dem alten entspricht, aber eine neue Prüfsumme hat:
git commit --amend --allow-empty
-
Den neuen Commit zu Codeberg schieben: Folgender Befehl überschreibt den letzten stand auf Codeberg mit dem neu erstellten Commit.
git push --force-with-lease
Wichtig: Diese Technik darf nur verwendet werden, wenn man sich sicher ist, dass niemand anderes mit dem Branch arbeitet. Ansonsten bekommt die anderen Nutzer:innen Probleme, wenn die den Branch aktualisieren wollen. Wenn es doch notwendig sein sollte, dann solten die anderen Nutzer:innen informiert werden, sodass sie beim nächsten Pull die Rebase-Strategie verwenden.
Fazit
Trotz dieses kleinen Problems is Codeberg eine großartige Plattform, die ich gerne nutze. Kennt man das Problem und die Lösung, ist es auch, falls es auftritt, schnell behoben.
Damit Codeberg weiter eine großartige Plattform bleibt, ist es wichtig, dass wir sie unterstützen. Ich tue dies aktuell, mangels Zeit für ein ehrenamtliches Engagement, durch eine Födermitgliedschaft.