Skip to content

ci: restore debian bullseye integration test via archive.debian.org - #1937

Merged
ShubhenduSinghF5 merged 3 commits into
nginx:dev-v2from
ShubhenduSinghF5:ss-restore-bullseye-archive
Sep 17, 2026
Merged

ShubhenduSinghF5 merged 3 commits into
nginx:dev-v2from
ShubhenduSinghF5:ss-restore-bullseye-archive

Conversation

@ShubhenduSinghF5

@ShubhenduSinghF5 ShubhenduSinghF5 commented Sep 16, 2026

Copy link
Copy Markdown

Proposed changes

Restore bullseye-slim to the integration test matrix. PR #1925 dropped it because Debian 11 LTS EOL (2026-08-31) broke every debian:bullseye-slim CI job: bullseye-security was pruned from deb.debian.org and the base image itself started drifting out of a consistent apt state.

NGINX OSS and NGINX Plus continue to support bullseye, so the agent must too.

Fix (three coordinated pieces)

  1. Makefile — for bullseye-slim only, swap the base image from debian:bullseye-slim
    to debian/eol:bullseye-slim (the maintainer-blessed post-EOL image). All other
    matrix rows resolve BASE_IMAGE unchanged.
  2. .github/workflows/ci.yml — restore bullseye-slim to the integration
    test matrix (revert of the PR ci: bump packager base image from bullseye to bookworm #1925 removal).
  3. test/docker/nginx-oss/deb/Dockerfile — for bullseye only, rewrite
    /etc/apt/sources.list to the snapshot.debian.org URLs that the
    debian/eol image maintainer already ships pre-configured (as commented
    lines) at timestamp 20250809T133719Z, and set
    Acquire::Check-Valid-Until "false" (standard practice for pinned snapshots).
    Guarded by a VERSION_CODENAME=bullseye check in /etc/os-release;
    other matrix rows are byte-for-byte unchanged.

Checklist

  • I have read the CONTRIBUTING document
  • I have run make install-tools and have attached any dependency changes to this pull request
  • If applicable, I have added tests that prove my fix is effective or that my feature works
  • If applicable, I have checked that any relevant tests pass after adding my changes
  • If applicable, I have updated any relevant documentation (README.md)
  • If applicable, I have tested my cross-platform changes on Ubuntu 22, Redhat 8, SUSE 15 and FreeBSD 13

@ShubhenduSinghF5
ShubhenduSinghF5 requested a review from a team as a code owner September 16, 2026 11:09
@codecov

codecov Bot commented Sep 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (dev-v2@acea606). Learn more about missing BASE report.

Additional details and impacted files
@@            Coverage Diff            @@
##             dev-v2    #1937   +/-   ##
=========================================
  Coverage          ?   52.30%           
=========================================
  Files             ?       51           
  Lines             ?     3518           
  Branches          ?        0           
=========================================
  Hits              ?     1840           
  Misses            ?     1533           
  Partials          ?      145           

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update acea606...11111ca. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Debian bullseye reached LTS end-of-life on 2026-08-31 and the
bullseye-security InRelease signature expired 2026-09-08, breaking
apt-get update against the default deb.debian.org sources. PR nginx#1925
worked around this by dropping bullseye from the integration test
matrix entirely.

NGINX OSS and NGINX Plus still support bullseye, so agent CI should
continue to validate against it. Rewrite the base image's apt
sources.list to archive.debian.org for bullseye-slim only, guarded by
a VERSION_CODENAME check in /etc/os-release so no other matrix row
is affected. archive.debian.org is a Debian-project-maintained mirror
that serves EOL releases with a non-expiring signing key already
present in the base image's debian-archive-keyring package.

Base image registry is unchanged: still docker.io/library/debian.
No new external hosts are contacted from the shipped Agent binary
or its packaged artifacts; this affects test/docker/ image builds
only.
@ShubhenduSinghF5
ShubhenduSinghF5 force-pushed the ss-restore-bullseye-archive branch from a051a58 to cc2c733 Compare September 16, 2026 17:12
Previous commit rewrote /etc/apt/sources.list to archive.debian.org
inside the Dockerfile. That fixed InRelease expiry, but exposed a
second failure mode: debian:bullseye-slim ships preinstalled packages
from bullseye-security (e.g. perl-base 5.32.1-4+deb11u5, gpgv
2.2.27-2+deb11u3) that don't exist in archive.debian.org, so apt's
solver reports unmet dependencies:

    gnupg : Depends: gpgv (< 2.2.27-2+deb11u2.1~)
            but 2.2.27-2+deb11u3 is to be installed
    perl  : Depends: perl-base (= 5.32.1-4+deb11u3)
            but 5.32.1-4+deb11u5 is to be installed

Switch to Debian's official EOL archive image
(docker.io/debian/eol:bullseye-slim), which is built directly from
archive.debian.org — its preinstalled packages and repo indices are
mutually consistent. Same publisher, same registry (docker.io),
signed with the same debian-archive-keyring key.

Scope the swap to OS_RELEASE=debian and OS_VERSION=bullseye-slim only
(Makefile conditional), so bookworm and every other matrix row are
byte-for-byte unchanged. OS_RELEASE stays 'debian' so the downstream
nginx-agent apt URL (packages.nginx.org/nginx-agent/debian/) is
unaffected.

Drop the now-redundant sed block from
test/docker/nginx-oss/deb/Dockerfile — debian/eol's sources.list
already targets archive.debian.org.
The debian/eol:bullseye-slim image was rebuilt after Debian 11 LTS EOL to
point 'bullseye' and 'bullseye-updates' at archive.debian.org, but left
'bullseye-security' on deb.debian.org where the security pool has been
pruned (InRelease still resolves but individual .deb files 404).

The image's own /etc/apt/sources.list ships snapshot.debian.org URLs
(commented) at the timestamp the image was built (20250809T133719Z),
providing a fully self-consistent frozen apt world where preinstalled
packages match repo indices. Enable those URLs plus the standard
Acquire::Check-Valid-Until=false for archived snapshots.

No version pins and no --allow-downgrades; the snapshot is the
maintainer's documented answer for this scenario.
@ShubhenduSinghF5
ShubhenduSinghF5 force-pushed the ss-restore-bullseye-archive branch from e7c7b90 to 11111ca Compare September 17, 2026 07:08

@devbgv devbgv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

else LGTM

Comment thread Makefile
@ShubhenduSinghF5
ShubhenduSinghF5 merged commit 405b285 into nginx:dev-v2 Sep 17, 2026
31 checks passed
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.

3 participants