diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a49bcf6..f34adde 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: strategy: fail-fast: false matrix: - builder: ["builder:24", "builder:22"] + builder: ["builder:26", "builder:24", "builder:22"] arch: ["amd64", "arm64"] exclude: - builder: "builder:22" @@ -86,6 +86,9 @@ jobs: # only those and not the unit tests, via the `--ignored` option. On the latest stack # we run all integration tests, but on older stacks we only run stack-specific tests. - name: Run integration tests (all tests) + # TODO: Switch to builder:26 once Ubuntu 26.04 is GA and also Python and package manager + # versions have changed, so that we have a suitable historic buildpack version that both + # supports the new stack, and has enough version changes for the cache invalidation tests. if: matrix.builder == 'builder:24' run: cargo test --locked -- --ignored --test-threads $(($(nproc)+1)) - name: Run integration tests (stack-specific tests only) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d8d9a3..69a1854 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added support for Ubuntu 26.04 (and thus Heroku-26 / `heroku/builder:26`). ([#550](https://github.com/heroku/buildpacks-python/pull/550)) + ## [6.3.0] - 2026-04-07 ### Changed diff --git a/buildpack.toml b/buildpack.toml index 8c9281d..14087f5 100644 --- a/buildpack.toml +++ b/buildpack.toml @@ -23,6 +23,10 @@ version = "22.04" name = "ubuntu" version = "24.04" +[[targets.distros]] +name = "ubuntu" +version = "26.04" + [[targets]] os = "linux" arch = "arm64" @@ -31,5 +35,9 @@ arch = "arm64" name = "ubuntu" version = "24.04" +[[targets.distros]] +name = "ubuntu" +version = "26.04" + [metadata.release] image = { repository = "docker.io/heroku/buildpack-python" } diff --git a/tests/mod.rs b/tests/mod.rs index a926180..6280fbe 100644 --- a/tests/mod.rs +++ b/tests/mod.rs @@ -16,6 +16,9 @@ use libcnb_test::BuildConfig; use std::env; use std::path::Path; +// TODO: Switch to builder:26 once Ubuntu 26.04 is GA and also Python and package manager +// versions have changed, so that we have a suitable historic buildpack version that both +// supports the new stack, and has enough version changes for the cache invalidation tests. const DEFAULT_BUILDER: &str = "heroku/builder:24"; fn default_build_config(fixture_path: impl AsRef) -> BuildConfig { @@ -26,7 +29,9 @@ fn default_build_config(fixture_path: impl AsRef) -> BuildConfig { // to allow configuring the target arch independently of the builder name (eg via env var). let target_triple = match builder.as_str() { // Compile the buildpack for ARM64 iff the builder supports multi-arch and the host is ARM64. - "heroku/builder:24" if cfg!(target_arch = "aarch64") => "aarch64-unknown-linux-musl", + "heroku/builder:24" | "heroku/builder:26" if cfg!(target_arch = "aarch64") => { + "aarch64-unknown-linux-musl" + } _ => "x86_64-unknown-linux-musl", }; config.target_triple(target_triple);