CI: deploy ssh.dodotech.cloud after the image is pushed, and fail unless it comes back ready
ci / build and test (push) Successful in 3m38s
ci / desktop nightly (push) Successful in 1m42s
ci / api image (push) Successful in 20s
ci / deploy ssh.dodotech.cloud (push) Failing after 0s
ci / android head (push) Successful in 6m3s

The image job pushed :main and stopped there, so nothing told the Spelunk
stack a new image existed and a commit carrying a migration never reached
the server's schema.

A deploy job now calls the stack's deploy hook with SPELUNK_DEPLOY_TOKEN and
then waits up to ten minutes for /healthz/ready. The new container applies
pending migrations as it starts, and readiness stays unhealthy while any is
pending, so a migration that did not apply fails the run instead of passing
quietly.

The Dockerfile no longer says nothing migrates from inside the container,
which had stopped being true and pointed at the setting that causes this.
This commit is contained in:
jaap-jan committed 2026-10-07 11:15:20 +02:00
1 parent 509937c4b8
commit 902761d37b
2 files changed
+110 -3

No files matched your search

+4 -3
View File
@@ -139,7 +139,8 @@ EXPOSE 8080
# without are DODOSSH_ConnectionStrings__Postgres, DODOSSH_Oidc__Authority and — on more
# than one node — DODOSSH_Sync__CursorSigningKey.
#
# Nothing migrates the database from in here. That is the API's own design: it fails
# /healthz/ready while a migration is pending and names it, so the schema is applied by
# `dotnet ef database update` alongside the deployment rather than by a racing container.
# The process migrates the database itself as it starts, before its port opens and under an
# advisory lock so two replicas cannot race (Database:AutoMigrate, on by default). Leave it on
# for ssh.dodotech.cloud: the CI deploy job relies on it. Turned off, /healthz/ready fails
# while a migration is pending and names it, and something else has to apply the schema.
ENTRYPOINT ["dotnet", "DodoSSH.Api.dll"]