v2.5 is running, but which v2.5? INC-2374

OpenGit · Hard · Investigate · about 35 min ·Linux

Lab machine

A private Linux machine with the problem already set up. Sessions last up to 60 minutes.
Dmitri Vos opened INC-2374 at 13:10SEV-3

Customers report label bugs that were fixed in 2.5. The fleet runs waybill:v2.5. The image behind that tag was built from someone's work-in-progress branch.

A tag in an image registry is a name that can be moved. A digest (sha256:…) names exactly one image. The fleet was deployed by tag.

"The Git tag v2.5 is fine, it points at the release commit. Do not move it, half the company has fetched it. The problem is the image." (Dmitri)

Every image carries a revision label naming the commit it was built from.

Your task

Find the image CI built and tested from the v2.5 commit, deploy it by digest, point the registry tag waybill:v2.5 back at it, and record the release (commit and full digest) in RELEASES.md. Do not move the Git tag.

On the machine

  • bin/deployctl status and history
  • bin/registry tags, bin/registry inspect waybill:v2.5
  • ci/builds.json: jobs 7710 and 7719
  • repo/ with the v2.5 Git tag

Timeline

Thu 16:02CI job 7710 builds and tests the v2.5 commit, pushes waybill:v2.5.
Thu 17:45CI job 7719 builds wip/label-cache and pushes waybill:v2.5 again (tag from the VERSION file).
Fri 09:00Fleet deploys waybill:v2.5.
13:10INC-2371: label bugs from 2.4 are back.

Done when

  1. The fleet runs the tested v2.5 image, deployed by digest, waybill:v2.5 names it, and the Git tag is unchanged.
  2. RELEASES.md has a v2.5 entry with the commit and full digest.

Hints

Hint 1

Compare `bin/deployctl status` with `bin/registry inspect waybill:v2.5`. Which commit does the running image's revision label name?

Hint 2

`git -C repo rev-parse "v2.5^{commit}"` is the release commit. Which CI job built that commit, and did its tests pass?

Hint 3

Tags are mutable in the registry; digests are not. Deploy with `waybill@sha256:…`.

Hint 4

The Git tag is already right. Fix the registry tag, the fleet, and the release record; leave the Git tag alone.

Show the solution

Read the running image's revision label: it names the WIP commit, not the v2.5 commit. In ci/builds.json, job 7710 built and tested the v2.5 commit and produced the correct digest; job 7719 later pushed a WIP build under the same tag. Deploy the job 7710 digest with 'bin/deployctl deploy waybill@sha256:…', repoint the registry tag with 'bin/registry tag', and add a v2.5 entry with commit and digest to RELEASES.md. Do not move the published Git tag.