Repository navigation
ci: make CI work on the Ubuntu 26.04 runner image - #14070
Merged
Merged
Conversation
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Copilot review overview
5 open issues
Passing env vars viasudo VAR=... cmdcan be rejected depending on sudoers… · New The keyring file permissions can be affected by the executing user's umask; if it ends up not… · New The OpenResty repository is configured over plain HTTP, which allows MITM tampering of repository… · New The OpenResty repository is configured over plain HTTP, which allows MITM tampering of repository… · New Shell variables should be quoted to avoid word-splitting/globbing issues. Quote… · New
What changed in this PR
Updates CI and dependency installation scripts to remain compatible as ubuntu-latest migrates to Ubuntu 26.04, without pinning runner images, while preserving compatibility with Ubuntu 24.04.
Changes:
- Adjusted Linux dependency install scripts for removed packages (
libpcre3*),apt-keyremoval, and OpenResty repo availability gaps. - Hardened CI behavior across runner-image differences (cache key includes
ImageOS, disk cleanup behaves correctly, Docker API compatibility workaround). - Updated docs and dependency versions for 26.04 compatibility (Python 3.12 for link-check,
lua-resty-saml0.2.7).
| File | Description |
|---|---|
| utils/linux-install-luarocks.sh | Configures luarocks to use runtime-bundled PCRE1 when system PCRE1 is unavailable. |
| utils/install-dependencies.sh | Replaces apt-key with keyrings + signed-by, adds OpenResty repo fallback logic, updates apt package list. |
| ci/free_disk_space.sh | Makes apt removal robust by removing only packages actually installed on the runner image. |
| ci/common.sh | Updates apt dependencies to drop removed libpcre3* packages. |
| apisix-master-0.rockspec | Bumps lua-resty-saml to a version compatible with newer libxml2 toolchains. |
| .github/workflows/source-install.yml | Adds runner image to cache key to avoid cross-image cache poisoning. |
| .github/workflows/link-check.yml | Moves link-check to Python 3.12 to match available runtimes on 26.04. |
| .github/workflows/cli.yml | Adds runner image to cache key to avoid cross-image cache poisoning. |
| .github/workflows/build.yml | Adds runner image to cache key, adds Docker min API workaround, passes TEST_FILE_SUB_DIR explicitly under sudo. |
| docs/en/latest/install-dependencies.md | Documents Ubuntu 26.04 as supported. |
| docs/zh/latest/install-dependencies.md | Documents Ubuntu 26.04 as supported. |
Review effort: Lite
Copilot stopped reviewing on behalf of
nic-6443 due to an error
October 23, 2026 05:12
AlinsRan
approved these changes
Oct 23, 2026
Baoyuantop
approved these changes
Oct 23, 2026
kayx23
pushed a commit
to kayx23/apisix
that referenced
this pull request
Oct 26, 2026
This was referenced Oct 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

GitHub is moving
ubuntu-latestto Ubuntu 26.04 (actions/runner-images#14748), and since the first master run that landed on it every Linux job dies before a single test runs. This adapts CI and the source-install scripts to 26.04 instead of pinning the runner. Because the migration is gradual, every change here also has to keep working on 24.04, and it does.Here is what broke on 26.04 and what changed:
libpcre3/libpcre3-devare gone. They were only there solrexlib-pcre(pulled in byjsonschema) could findpcre.h.utils/linux-install-luarocks.shnow points luarocks at the PCRE that ships with APISIX runtime (/usr/local/openresty/pcre) when it exists, and both package lists droplibpcre3*. luarocks bakes that path into the module's rpath, sorex_pcreloads from the CLI (plain LuaJIT) as well as from nginx. Note this applies on every distro that has the runtime's PCRE, solrexlib-pcrenow links against the runtime's PCRE instead of the system one on 24.04 too.apt-keyno longer exists.utils/install-dependencies.shwrites the OpenResty key to/etc/apt/keyrings(mode 0644) and usessigned-by, for both Ubuntu and Debian. The repository is now fetched over https.resolute) repository yet. On Ubuntu, the script falls back to thenoblerepository when the current release has noReleasefile. Onlyopenresty-zlib-devandopenresty-pcre-devcome from it, and both are self-contained under/usr/local/openresty.lua-resty-saml0.2.6 doesn't compile against libxml2 2.12+ with-Werror. Fixed upstream in fix: build against libxml2 2.12 and later api7/lua-resty-saml#65 and released as 0.2.7, which the rockspec now requires.-E. The test step lostTEST_FILE_SUB_DIRand every shard ranprove -rover all oft/until the timeout. The step now passes it explicitly.openwhisk/standalonetag, the newest included, bundles docker 18.06 (API 1.38), so itswaitreadynever returned and the plugin shards hung. The container now runs withDOCKER_API_VERSION=1.40, which the docker calls it spawns inherit, and the image is pinned to the immutable7ef091ctag instead of1.0.0(the backup script now saves the same tag). That build no longer offers thenodejs:14runtime, so the test actions are created onnodejs:20, its prewarmed default. The daemon itself is left alone.actions/setup-pythonhas no 3.9 for 26.04. check-links now uses 3.12.ci/free_disk_space.shsilently removed nothing on 26.04: apt refuses the whole removal when one named package (powershell) is unknown. It now only names installed packages.ImageOS.docs/*/install-dependencies.mdnow lists Ubuntu 26.04.Every workflow here was run on both
ubuntu-26.04andubuntu-24.04with explicit labels before switching back toubuntu-latest. An earlier revision restarted dockerd to lower its minimum API version instead;t/stream-plugin/prometheus-metrics.tfailed in two of those runs (first try and rerun in the same job) and never reproduced afterwards. That restart is gone now.