ci(docker): allow a manual rebuild via workflow_dispatch - #129
Merged
Merged
Conversation
Docker only ran on a push to main or a version tag. main is protected by required status checks, so producing an image -- and reaching notify-ops and the deploy behind it -- always meant opening a pull request, even when nothing about the code needed to change. That gap cost three weeks in September 2026: the credential notify-ops uses had expired, it failed with HTTP 401 on every run, and no deploy reached production. Once the credential was replaced there was no way to prove it worked, or to redeploy the current main, without inventing a code change to push. An empty commit is rejected by the branch rules, which is correct and not something to work around. workflow_dispatch rebuilds from whatever main currently holds and runs the whole chain: build, push, sign, notify, deploy. That is also what is wanted during an incident, where the question is usually "redeploy what is on main" rather than "ship a change". Nothing else moves. The build, the matrix, the signing and the permissions are untouched, and the repo's supply-chain guards still pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
MrChengLen
force-pushed
the
ci/docker-manual-trigger
branch
from
September 14, 2026 17:20
e6f0d46 to
f72dedc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warum
Dockerlief bisher nur bei einem Push aufmainoder einem Versions-Tag.mainist durch Pflicht-Checks geschützt — ein Image zu bauen (und damitnotify-opsund den Deploy dahinter zu erreichen) setzte also immer einen Pull Request voraus, selbst wenn am Code nichts zu ändern war.Genau diese Lücke war letzte Woche das Problem: Die Zugangsdaten, die
notify-opsverwendet, waren am 20.08. abgelaufen; der Workflow scheiterte danach bei jedem Lauf mit HTTP 401, und drei Wochen lang erreichte kein Deploy die Produktion. Nach dem Ersetzen des Tokens gab es keine Möglichkeit, die neue Berechtigung zu prüfen oder den aktuellenmain-Stand neu auszurollen, ohne eine Code-Änderung zu erfinden. Ein leerer Commit wird von den Branch-Regeln zurückgewiesen — korrekt so, und nichts, was man umgehen sollte.workflow_dispatchbaut aus dem, was gerade aufmainliegt, und durchläuft die ganze Kette: bauen, pushen, signieren, benachrichtigen, deployen. Das ist auch das, was man im Störungsfall braucht, wo die Frage meist „den Stand von main neu ausrollen" lautet und nicht „eine Änderung ausliefern".Was sich sonst ändert
Nichts. Build, Matrix, Signierung und Permissions bleiben unangetastet; die Supply-Chain-Guards des Repos greifen weiterhin (SHA-gepinnte Actions, expliziter
permissions-Block) —tests/test_supply_chain_hygiene.pyläuft grün durch.Nach dem Merge
Der Merge selbst ist zugleich der erste Test des neuen Tokens: Er pusht auf
main, also bautdocker.ymlundnotify-ops.ymlfeuert. Ist der Lauf grün, ist die Kette nachweislich wieder intakt. Danach steht der Knopf unter Actions → Docker → Run workflow dauerhaft zur Verfügung.🤖 Generated with Claude Code
Nachtrag: Die erste Fassung nannte das Secret beim Namen und wurde vom
scope-checkblockiert — korrekt, der Name gehört ausschließlich innotify-ops.yml, die dafür auf der Allowlist steht. Der Kommentar beschreibt den Vorfall jetzt ohne ihn.