diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 54f08ce..a842cb7 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -25,18 +25,20 @@ name: CI & Build on: push: + # NO `paths:` FILTER, and unlike the client lanes this one does not skip either โ€” + # the image ALWAYS builds. Two reasons: + # + # * Rule 145 promises that every push to `main` publishes a `:`, so any + # production commit is addressable. A path filter quietly broke that promise + # for a docs-only merge: no trigger, no image, no sha tag for that commit. + # * It is the artifact most exposed to base-image staleness (`python:3.12-slim` + # is a floating tag and this can face the internet), and building every push + # picks those updates up. That is why note 3127 ยง4's base tension does not + # bite here โ€” the one artifact it would apply to never skips. + # + # Affordable because it is the cheap one: ~15 seconds, against 6 and 9 minutes + # for the clients, which is why THEY skip and this does not. branches: [dev, main] - paths: - - "src/**" - - "frontend/**" - - "tests/**" - - "pyproject.toml" - - "alembic/**" - - "alembic.ini" - - "Dockerfile" - # The version deriver โ€” see the note in desktop.yml. - - "packaging/**" - - ".forgejo/workflows/ci.yml" # Dispatched by the Android lane once it has published a client, so the image # that bakes it in is built AFTER the APK exists rather than racing it. See the # `gate` job below for the other half.