android.yml: a red Android lane no longer publishes the server image (#5419)

server-image ran under always(), so a failed core check or APK build still
dispatched ci.yml. Run 8839 published :<sha> for 0ecdbfe while its APK lane
(8835) was red. Rule 177: nothing publishes on red. With always() dropped,
the dispatch needs rust and build to succeed. A skipped decide still skips
it, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 16:51:34 -04:00
co-authored by Claude Opus 5.5
parent 76fe96d135
commit b2d50009d3
+9 -9
View File
@@ -324,7 +324,7 @@ jobs:
server-image: server-image:
name: Build the server image name: Build the server image
needs: [decide, rust, build] needs: [decide, rust, build]
if: always() && needs.decide.outputs.build == 'true' && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main') if: needs.decide.outputs.build == 'true' && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main')
runs-on: flutter-ci runs-on: flutter-ci
container: container:
# The image the dispatch has always run in, so its curl is a known quantity. # The image the dispatch has always run in, so its curl is a known quantity.
@@ -337,15 +337,15 @@ jobs:
# push that touches the Android app (its `gate` job) and waits to be called # push that touches the Android app (its `gate` job) and waits to be called
# from here — that is the other half of this. # from here — that is the other half of this.
# #
# `always()`: a FAILED Android build — or failed core checks, which skip the # No `always()`: a red core check or APK build means no image for this
# build job entirely — must still let the server image through. There is no # commit (rule 177, #5419). This used to run regardless, on the reasoning that
# new client in that case, so it bakes in the previous one, which is exactly # a broken Android lane shouldn't block server delivery, and the image would
# right — the alternative is a broken Android lane silently blocking server # bake in the previous client. Run 8839 is what that meant: `:<sha>` published
# delivery. Its own job for that reason: a step inside `build` never runs # for 0ecdbfe while its APK lane (8835) was red, holding a client that wasn't
# when `build` is skipped. # from that commit. The previous `:dev` stays where it is; fix forward.
# #
# Not `if: success()` and not skipped on tags either: every ref that builds an # Not skipped on tags: every ref that builds an image needs the call, since
# image needs the call, or nothing builds one at all. # ci.yml stands down on these pushes and nothing else builds one.
- name: Build the server image now the client is published - name: Build the server image now the client is published
env: env:
GITHUB_TOKEN: ${{ github.token }} GITHUB_TOKEN: ${{ github.token }}