Skip to content

Deploy from CI — fly.toml was a file that did nothing - #3

Merged
Sbussiso merged 1 commit into
masterfrom
add-deploy-workflow
Sep 9, 2026
Merged

Deploy from CI — fly.toml was a file that did nothing#3
Sbussiso merged 1 commit into
masterfrom
add-deploy-workflow

Conversation

@Sbussiso

@Sbussiso Sbussiso commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Deploy automation was deferred here so a human could watch the first-ever deploy, with a note to "automate once phase 1 is stable". Phase 1 is stable, and leaving it deferred turned out worse than what it avoided.

It failed silently on 2026-09-09. A scale-to-zero change merged with CI fully green and never reached Fly — the app kept running always-on, and it looked applied because the commit was on master. It was only caught by checking the machine state directly with fly machines list.

Config that silently doesn't apply is more dangerous than no config, because it reads as done.

Deploy runs on push to master only, after both matrix legs (sqlite and postgres) pass — this service runs one codebase against either dialect, so a green sqlite leg alone isn't evidence a deploy is safe.

Two flags, each for a concrete reason:

flag why
--strategy immediate this app mounts sentinel_license_data; the default rolling strategy stands up a parallel machine first and errors on the volume's single attachment slot
--ha=false Fly otherwise provisions two machines — it did exactly that on the sibling Sync service's manual deploy and the extra had to be scaled away by hand; the volume couldn't serve two anyway

Uses the existing FLY_API_TOKEN repo secret, already scoped to sentinel-license.

🤖 Generated with Claude Code

Deploy automation was deferred so a human could watch the first-ever
deploy of new infrastructure, with a note to automate once phase 1 was
stable. Phase 1 is stable, and leaving it deferred turned out worse than
what it avoided: fly.toml only took effect if someone remembered to run
`fly deploy` by hand.

That failed silently on 2026-09-09. A scale-to-zero change merged with
CI fully green and never reached Fly — the app kept running always-on,
and the config looked applied because the commit was on master. It was
only caught by checking the machine state directly. Config that silently
doesn't apply is more dangerous than no config, because it reads as done.

Deploy runs on push to master only, after BOTH matrix legs (sqlite and
postgres) pass — this service runs one codebase against either dialect,
so a green sqlite leg alone is not evidence a deploy is safe.

Two flags, each for a concrete reason:

  --strategy immediate  this app mounts sentinel_license_data, and the
                        default rolling strategy stands up a parallel
                        machine first, which errors on the volume's
                        single attachment slot.
  --ha=false            Fly otherwise provisions two machines. It did
                        exactly that on the manual deploy of the sibling
                        Sync service and the extra had to be scaled away
                        by hand; the volume could not serve two anyway.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Sbussiso
Sbussiso merged commit a84b931 into master Sep 9, 2026
3 checks passed
@Sbussiso
Sbussiso deleted the add-deploy-workflow branch September 9, 2026 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant