Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ jobs:
distro:
- jammy
- noble
- resolute

env:
TAG: ${{ matrix.distro }}
Expand Down Expand Up @@ -227,6 +228,7 @@ jobs:
matrix:
distro:
- jammy
- resolute

env:
TAG: ${{ matrix.distro }}
Expand Down
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@ For other test images see the [`test`](./test/) folder.

### Distro test images

#### Jammy

Ubuntu `jammy` is deprecated and will be removed in the next major release.
You can still run the tests with the following command, it will run the test from [`test/Dockerfile.distro`](./test/Dockerfile.distro).

```sh
TAG=jammy docker buildx bake test-distro
```

#### Noble

To run the `noble` tests use the following command, it will run the test from [`test/Dockerfile.distro`](./test/Dockerfile.distro).
Expand All @@ -62,12 +71,12 @@ To run the `noble` tests use the following command, it will run the test from [`
TAG=noble docker buildx bake test-distro
```

#### Jammy
#### Resolute

To run the `jammy` tests use the following command, it will run the test from [`test/Dockerfile.distro`](./test/Dockerfile.distro).
To run the `resolute` tests use the following command, it will run the test from [`test/Dockerfile.distro`](./test/Dockerfile.distro).

```sh
TAG=jammy docker buildx bake test-distro
TAG=resolute docker buildx bake test-distro
```

## Apt proxy
Expand Down
12 changes: 12 additions & 0 deletions src/cli/tools/php/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,18 @@ export class PhpPrepareService extends BasePrepareService {

break;

case 'resolute':
await this.aptSvc.install(
'libjpeg-turbo8',
'libmcrypt4',
'libonig5',
'libpng16-16t64',
'libtidy58',
'libxslt1.1',
'libzip5',
);

break;
default:
throw new Error(`Unsupported distro version: ${distro.versionCode}`);
}
Expand Down
2 changes: 2 additions & 0 deletions src/cli/tools/python/conan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ function getCompilerVersion(distro: Distro): string {
return '11';
case 'noble':
return '13';
case 'resolute':
return '15';
}

throw new Error(`Unsupported distro: ${distro.name}`);
Expand Down
2 changes: 1 addition & 1 deletion src/cli/tools/utils/prebuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export abstract class PrebuildInstallService extends BaseInstallService {
const distro = await getDistro();
let code = distro.versionCode;

if (code === 'noble') {
if (code === 'noble' || code === 'resolute') {
logger.debug(`Using jammy prebuild for ${name} on ${code}`);
code = 'jammy';
}
Expand Down
2 changes: 1 addition & 1 deletion src/cli/tools/wally.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export class WallyInstallService extends BaseInstallService {
const distro = await getDistro();
let code = distro.versionCode;

if (code === 'noble') {
if (code === 'noble' || code === 'resolute') {
logger.debug(`Using jammy prebuild for ${name} on ${code}`);
code = 'jammy';
}
Expand Down
3 changes: 2 additions & 1 deletion src/cli/utils/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ export async function validateSystem(): Promise<void> {
/* v8 ignore next -- hard to test */
case 'jammy':
case 'noble':
case 'resolute':
break;
default:
logger.fatal(
{ distro: d },
`Unsupported distro: ${d.versionCode}! Please use Ubuntu 'jammy' or 'noble'.`,
`Unsupported distro: ${d.versionCode}! Please use Ubuntu 'noble' or 'resolute'.`,
);
process.exit(1);
}
Expand Down
5 changes: 3 additions & 2 deletions src/usr/local/containerbase/tools/v2/erlang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ function check_tool_requirements () {
case "${version_codename}" in
"jammy");;
"noble");;
"resolute");;
*)
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down Expand Up @@ -58,7 +59,7 @@ function install_tool () {
base_url="https://github.com/containerbase/${name}-prebuild/releases/download"
version_codename=$(get_distro)

if [[ "${version_codename}" == "noble" ]]; then
if [[ "${version_codename}" == "noble" || "${version_codename}" == "resolute" ]]; then
version_codename="jammy"
fi

Expand Down
8 changes: 5 additions & 3 deletions src/usr/local/containerbase/tools/v2/powershell.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ function prepare_tool() {

version_codename="$(get_distro)"
case "${version_codename}" in
"jammy") apt_install libc6 libgcc1 libgssapi-krb5-2 libicu70 libssl3 libstdc++6 zlib1g;;
"noble") apt_install libc6 libgcc1 libgssapi-krb5-2 libicu74 libssl3 libstdc++6 zlib1g;;
# https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet10&pivots=os-linux-ubuntu-2204#dependencies-4
"jammy") apt_install libc6 libgcc-s1 libgssapi-krb5-2 libicu70 libssl3 libstdc++6 tzdata zlib1g;;
"noble") apt_install libc6 libgcc-s1 libgssapi-krb5-2 libicu74 libssl3t64 libstdc++6 tzdata zlib1g;;
"resolute") apt_install libbrotli1 libc6 libgcc-s1 libgssapi-krb5-2 libicu78 libssl3t64 libstdc++6 tzdata zlib1g;;
*)
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down
5 changes: 3 additions & 2 deletions src/usr/local/containerbase/tools/v2/python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ function prepare_tool() {
case "${version_codename}" in
"jammy");;
"noble");;
"resolute");;
*)
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down Expand Up @@ -67,7 +68,7 @@ function install_tool () {
base_url="https://github.com/containerbase/${name}-prebuild/releases/download"
version_codename=$(get_distro)

if [[ "${version_codename}" == "noble" ]]; then
if [[ "${version_codename}" == "noble" || "${version_codename}" == "resolute" ]]; then
version_codename="jammy"
fi

Expand Down
5 changes: 3 additions & 2 deletions src/usr/local/containerbase/tools/v2/ruby.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ function prepare_tool() {
case "${version_codename}" in
"jammy");;
"noble");;
"resolute");;
*)
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down Expand Up @@ -93,7 +94,7 @@ function install_tool () {
base_url="https://github.com/containerbase/${name}-prebuild/releases/download"
version_codename=$(get_distro)

if [[ "${version_codename}" == "noble" ]]; then
if [[ "${version_codename}" == "noble" || "${version_codename}" == "resolute" ]]; then
version_codename="jammy"
fi

Expand Down
21 changes: 20 additions & 1 deletion src/usr/local/containerbase/tools/v2/swift.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,27 @@ function prepare_tool() {
unzip \
zlib1g-dev \
;;
"resolute")
apt_install \
binutils \
gnupg2 \
libc6-dev \
libcurl4-openssl-dev \
libedit2 \
libgcc-11-dev \
libncurses6 \
libpython3.14 \
libsqlite3-0 \
libstdc++-11-dev \
libxml2-dev \
libz3-dev \
pkg-config \
tzdata \
unzip \
zlib1g-dev \
;;
*)
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Tool '${TOOL_NAME}' not supported on: ${version_codename}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down
3 changes: 2 additions & 1 deletion src/usr/local/containerbase/util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,9 @@ function require_distro () {
case "$DISTRO_CODENAME" in
"jammy") ;; #supported
"noble") ;; #supported
"resolute") ;; #supported
*)
echo "Distro not supported: ${DISTRO_CODENAME}! Please use ubuntu 'jammy' or 'noble'." >&2
echo "Distro not supported: ${DISTRO_CODENAME}! Please use ubuntu 'noble' or 'resolute'." >&2
exit 1
;;
esac
Expand Down
1 change: 1 addition & 0 deletions test/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ ARG BASE_IMAGE=latest
#--------------------------------------
FROM ghcr.io/containerbase/ubuntu:22.04 AS jammy
FROM ghcr.io/containerbase/ubuntu:24.04 AS noble
FROM ghcr.io/containerbase/ubuntu:26.04 AS resolute

FROM ghcr.io/containerbase/ubuntu:24.04 AS latest
#--------------------------------------
Expand Down
13 changes: 11 additions & 2 deletions test/Dockerfile.distro
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ ARG BASE_IMAGE=latest
#--------------------------------------
FROM ghcr.io/containerbase/ubuntu:22.04 AS jammy
FROM ghcr.io/containerbase/ubuntu:24.04 AS noble
FROM ghcr.io/containerbase/ubuntu:26.04 AS resolute

FROM ghcr.io/containerbase/ubuntu:24.04 AS latest
#--------------------------------------
Expand Down Expand Up @@ -112,8 +113,16 @@ RUN install-tool skopeo 1.22.2
# renovate: datasource=github-releases packageName=getsops/sops
RUN install-tool sops v3.12.2

# renovate: datasource=docker versioning=docker
RUN install-tool swift 6.3.1
# not yet supported on resolute https://github.com/swiftlang/swift-docker/issues/524
# renovate: datasource=docker depName=swift
ARG SWIFT_VERSION=6.3.1
RUN set -ex; \
if [ "$(. /etc/os-release && echo "${VERSION_CODENAME}")" = "resolute" ]; then \
echo "Skipping Swift installation on resolute."; \
else \
install-tool swift; \
fi; \
true

# renovate: datasource=docker packageName=hashicorp/terraform versioning=docker
RUN install-tool terraform 1.15.1
Expand Down