cloudfoundry / cloudfoundry/bosh
bosh-release 283.1.7 tarball packages s3cli 0.0.435 despite blobs.yml listing 0.0.436
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 2.1k
- Forks
- 662
- Avg merge
- 5h 25m
- Merged PRs (30d)
- 2
Description
The bosh-release-283.1.7.tgz final release tarball contains the s3cli 0.0.435 binary inside its s3cli package, even though config/blobs.yml at the v283.1.7 tag references s3cli 0.0.436. This causes broken presigned URL generation with S3-compatible blobstores (AWS S3, Ceph/RadosGW) and results in HTTP 403 errors when compilation VMs try to download package blobs.
Root Cause
The config/blobs.yml blob bump commit (8daacb2c, Aug 29 11:10 UTC) updated the registry entry from s3cli-0.0.435 to s3cli-0.0.436, but the final release was cut at 18:38 UTC the same day (88a2e714) without syncing the new blob to the pipeline worker's local blobs/ directory. The packaged binary still carries the 0.0.435 filename and SHA.
SHA evidence:
| Entry | SHA256 |
|---|---|
blobs.yml s3cli-0.0.435 (object_id cc27c631) |
821e2b88d3beaaf4c41bb20ca03da0589bec98bcb1722d45dc29d69074b559ac |
blobs.yml s3cli-0.0.436 (object_id fe16c270) |
24a74ef72b1528b465b246bf46f9f468206eaa79280f979e1044acaa2bb0e6ec |
Binary extracted from bosh-release-283.1.7.tgz packages/s3cli.tgz |
821e2b88d3beaaf4c41bb20ca03da0589bec98bcb1722d45dc29d69074b559ac ← matches 0.0.435 |
The file inside the tarball is even named s3cli-0.0.435-linux-amd64.
Reproduction
# Extract s3cli from the published tarball
mkdir -p /tmp/s3cli-check
tar xzO -f bosh-release-283.1.7.tgz packages/s3cli.tgz | tar xz -C /tmp/s3cli-check
# Confirm version
/tmp/s3cli-check/s3cli/s3cli-0.0.435-linux-amd64 -v
# → version 0.0.435
# Confirm SHA matches 0.0.435, not 0.0.436
sha256sum /tmp/s3cli-check/s3cli/s3cli-0.0.435-linux-amd64
# → 821e2b88d3beaaf4c41bb20ca03da0589bec98bcb1722d45dc29d69074b559ac
Relevant commits
8daacb2c— "Updating blob s3cli/s3cli-0.0.435-linux-amd64 -> s3cli/s3cli-0.0.436-linux-amd64" (Aug 29, 11:10 UTC)88a2e714— "Final release 283.1.7" (Aug 29, 18:38 UTC)
Questions / Investigation
- Why did the final release pipeline not sync blobs before running
bosh create-release --final? Was the blob sync step skipped, failed silently, or not part of the pipeline at all? - Should the pipeline verify that the SHA of each packaged blob matches
config/blobs.ymlbefore publishing a final release tarball? - Is there an existing guard against this class of packaging regression?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with config/blobs.yml at the v283.1.7 tag, the blob bump commit 8daacb2c, and the final release commit 88a2e714. Reproduce the mismatch with the tar commands and SHA checks in the issue, then trace the release pipeline around bosh create-release --final. Done means the sync failure or omission is explained and an appropriate pre-publish verification or guard is identified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ruby
- Domain
- build-system, devops, release
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100