ci/main.go previously hardcoded the Flutter container image tag (ghcr.io/cirruslabs/flutter:3.44.0) separately from .fvmrc ({ "flutter": "3.44.1" }). These two values drifted, causing the deploy failure in #394.
How
New() now accepts ctx context.Context and returns (*Ci, error). It reads .fvmrc from the source directory, parses the flutter field, and stores it as Ci.FlutterVersion. toolchain() constructs the image tag as "ghcr.io/cirruslabs/flutter:" + m.FlutterVersion. Graph() also uses the live value instead of a stale literal.
Result: .fvmrc is the single source of truth. Bumping Flutter via Renovate or manually only requires editing .fvmrc; the Dagger pipeline picks up the new version automatically.
## What
`ci/main.go` previously hardcoded the Flutter container image tag (`ghcr.io/cirruslabs/flutter:3.44.0`) separately from `.fvmrc` (`{ "flutter": "3.44.1" }`). These two values drifted, causing the deploy failure in #394.
## How
`New()` now accepts `ctx context.Context` and returns `(*Ci, error)`. It reads `.fvmrc` from the source directory, parses the `flutter` field, and stores it as `Ci.FlutterVersion`. `toolchain()` constructs the image tag as `"ghcr.io/cirruslabs/flutter:" + m.FlutterVersion`. `Graph()` also uses the live value instead of a stale literal.
Result: `.fvmrc` is the single source of truth. Bumping Flutter via Renovate or manually only requires editing `.fvmrc`; the Dagger pipeline picks up the new version automatically.
## Verification
- `gofmt -e ci/main.go` passes
- No schema changes; no `build_runner` run needed
Closes #396
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
ci/main.gopreviously hardcoded the Flutter container image tag (ghcr.io/cirruslabs/flutter:3.44.0) separately from.fvmrc({ "flutter": "3.44.1" }). These two values drifted, causing the deploy failure in #394.How
New()now acceptsctx context.Contextand returns(*Ci, error). It reads.fvmrcfrom the source directory, parses theflutterfield, and stores it asCi.FlutterVersion.toolchain()constructs the image tag as"ghcr.io/cirruslabs/flutter:" + m.FlutterVersion.Graph()also uses the live value instead of a stale literal.Result:
.fvmrcis the single source of truth. Bumping Flutter via Renovate or manually only requires editing.fvmrc; the Dagger pipeline picks up the new version automatically.Verification
gofmt -e ci/main.gopassesbuild_runnerrun neededCloses #396