Skip to content

Rebuild the worker image's OS package layer - #738

Merged
ajs-uk-dev merged 1 commit into
mainfrom
737-worker-image-os-packages
Oct 29, 2026
Merged

ajs-uk-dev merged 1 commit into
mainfrom
737-worker-image-os-packages

Conversation

@ajs-uk-dev

@ajs-uk-dev ajs-uk-dev commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Closes #737.

Why

The Snyk scan in the Build job fails on the worker image. Snyk finds CVE-2026-111497 (high) in libbrotli1 1.1.0-2build2. curl brings in this package. Ubuntu has the fix, 1.1.0-2ubuntu0.1.

The worker Dockerfile runs apt-get upgrade and installs curl. But CI reuses that layer from the build cache (the log shows CACHED), so the fix does not get in. The weekly Build No Cache run rebuilds only the web image, so the worker layer stays old.

This blocks the Build job on #721 and #712. It will also block main after the next merge.

Changes

  • Web and worker Dockerfiles: an OS_PACKAGES_DATE build argument before the apt layer. A new value makes Docker run the layer again. The value is 2026-10-29, so this pull request gets the fix now.
  • build-nocache.yml: the weekly run also rebuilds the worker image and attaches its SBOM.
  • docs/dependabot.md: the old text said apt-get upgrade runs at each build. That is not true with the cache. A new "OS packages" section tells when the layer runs again, and what to do when Snyk finds an Ubuntu package issue.
  • docs/sbom.md: the weekly run rebuilds both images.

No application code changes. No Snyk, SBOM or pin check is turned off.

Checks

  • scripts/check-pins.sh and scripts/check-playwright-pin.sh pass.
  • build-nocache.yml parses.
  • Local proof of the build argument: the main Dockerfile gives CACHED for the apt layer. A new value runs it again (DONE 6.7s). The same value again gives CACHED.
  • Local builds of the web runtime and worker final targets pass. docker scout cves --only-severity high,critical --only-package-type deb finds no issue in either image. The worker has libbrotli1 1.1.0-2ubuntu0.1 and curl.
  • The Build job on this pull request passes the Snyk scan for both images.

After merge

The Snyk scan in the Build job fails on the worker image: CVE-2026-111497
in libbrotli1 1.1.0-2build2, which curl brings in. Ubuntu has the fix
(1.1.0-2ubuntu0.1), but CI reuses the cached apt layer, and the weekly
Build No Cache run rebuilds only the web image.

- Web and worker Dockerfiles: an OS_PACKAGES_DATE build argument before
  the apt layer. A new value makes Docker run the layer again. Set to
  2026-10-29 to get the brotli fix now.
- build-nocache.yml: rebuild the worker image too, with its SBOM.
- docs/dependabot.md: a new "OS packages" section says when the layer
  runs and what to do when Snyk finds an Ubuntu package issue.
- docs/sbom.md: the weekly run rebuilds both images.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ajs-uk-dev
ajs-uk-dev merged commit a6e8082 into main Oct 29, 2026
19 checks passed
ajs-uk-dev pushed a commit that referenced this pull request Oct 29, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ajs-uk-dev ajs-uk-dev mentioned this pull request Oct 29, 2026
3 of 7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Worker image fails the Snyk scan because CI reuses an old OS package layer

2 participants