Skip to content

[build] pin artifacts in a committed manifest - #419

Merged
michaelkirk merged 3 commits into
mainfrom
mkirk/artifact-manifest
Aug 18, 2026
Merged

[build] pin artifacts in a committed manifest#419
michaelkirk merged 3 commits into
mainfrom
mkirk/artifact-manifest

Conversation

@michaelkirk

@michaelkirk michaelkirk commented Aug 14, 2026

Copy link
Copy Markdown
Member

I'm primarily attempting to solve two problems.

currently

  1. Promoting transit graphs used to happen out of band, by symlinking a transit graph to "latest". This was manual, and meant rollback was also manual and happened outside of git/k8s.
  2. Generating k8s configuration, in particular the transit zones, reflected on an env variable. But this state was also duplicated by the presence of *.gtfs_feeds.csv, and to complicate things there were various capitalization conventions (some were camel case, some were kebob case)

this change

  1. Now: the versioned transit graph (with date) is baked into the k8s configs.
  2. stronger naming conventions for the transit zones obviates any dynamic name mangling.
  3. The k8s configuration is generated from a new manifest ("artifacts.json") which is output as part of the build process and should be committed.

There is no longer a HEADWAY_TRANSIT_AREA's env variable. The build process infers which transit zones to build based on the presence of a gtfs_feeds file alone.

When the build completes, those (and the other build artifacts) will be in the artifacts.json, which is then used to drive bin/publish-artifacts and bin/k8s-generate.

It's not less code... so calling it "simpler" is a stretch, but it's not really any more code, it dedupes some state, and decouples more parts of the build->deploy process.

I think it's a win overall, but the proof will be in how it feels after a couple of build/deploy cycles.

@michaelkirk
michaelkirk force-pushed the mkirk/artifact-manifest branch 6 times, most recently from 9145269 to 933d0ac Compare August 14, 2026 22:35
…sion

Previously we were relying manually running a 'symlink' command to
promote the latest transit graph. Now we track the exact version of the
transit graph like we do with everything else.

This simplifies some other scripts which no longer need to detect what's
latest.

Also removes OTP_CONFIG_JSON_YAML since we're no longer using it.
@michaelkirk
michaelkirk force-pushed the mkirk/artifact-manifest branch from 58483e5 to 653db6e Compare August 14, 2026 22:47
@michaelkirk
michaelkirk added this pull request to the merge queue Aug 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 17, 2026
@michaelkirk
michaelkirk enabled auto-merge August 18, 2026 21:20
@michaelkirk
michaelkirk force-pushed the mkirk/artifact-manifest branch from 31e0479 to e1d71ac Compare August 18, 2026 21:22
@michaelkirk
michaelkirk added this pull request to the merge queue Aug 18, 2026
Merged via the queue into main with commit dbc6494 Aug 18, 2026
13 of 14 checks passed
@michaelkirk
michaelkirk deleted the mkirk/artifact-manifest branch August 18, 2026 22:11
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