From eedf25f13bd6e5b171acb58964ba7152ec67553d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 15 May 2026 12:54:32 +0900 Subject: [PATCH 1/4] Point latest Docker tag at the 4.0 series README and Docker Hub overview already advertise rubylang/ruby:latest as the 4.0 series, but make_tags has been emitting the latest manifest from LATEST_RUBY_VERSION = "3.4", so latest was still tracking 3.4. Bump the constant so the implementation matches the documented behavior. --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 4d01d6e..82c4c6f 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,5 @@ LATEST_UBUNTU_VERSION = "noble" -LATEST_RUBY_VERSION = "3.4" +LATEST_RUBY_VERSION = "4.0" def download(url) require "net/http" From e11a1c178820abaa16bc1400625403143c19a0bf Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 15 May 2026 12:54:47 +0900 Subject: [PATCH 2/4] Add Ubuntu 26.04 (resolute) to build and test matrices Build resolute images alongside noble and jammy and list them in the README. LATEST_UBUNTU_VERSION stays on noble for now so that unsuffixed tags like rubylang/ruby:4.0 and :latest keep their existing OS base while resolute is exercised in CI. --- .github/workflows/build.yml | 2 ++ .github/workflows/test.yml | 1 + README.md | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b6f6a1..8e2ee60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,6 +41,7 @@ jobs: debug_suffix: ['', '-debug'] dev_suffix: ['', '-dev'] ubuntu_version: + - resolute - noble - jammy arch: ['amd64', 'arm64'] @@ -131,6 +132,7 @@ jobs: registry_name: [rubylang, ghcr.io/ruby] image_version_suffix: ['', '-dev', '-debug', '-debug-dev'] ubuntu_version: + - resolute - noble - jammy diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d459bc..3490cf3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,7 @@ jobs: strategy: matrix: ubuntu_version: + - resolute - noble - jammy ruby_version: diff --git a/README.md b/README.md index aa9d224..a903c47 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ This repository provides two flavors of Ruby images for each supported version: - **Production** (e.g. `rubylang/ruby:4.0-noble`): minimal image with Ruby and bundler installed. - **Development** (e.g. `rubylang/ruby:4.0-dev-noble`): based on the production image, with `build-essential`, `gdb`, and other development tools added. The `-dev` suffix follows the version number. -All images are based on Ubuntu (noble or jammy) and are built by running `make install` on the official Ruby source tarball. +The images listed below are based on Ubuntu noble, resolute, or jammy, and are built by running `make install` on the official Ruby source tarball. Unsuffixed tags such as `rubylang/ruby:4.0` and `rubylang/ruby:latest` currently track the noble images. ## Images @@ -46,6 +46,23 @@ All images are based on Ubuntu (noble or jammy) and are built by running `make i - `rubylang/ruby:3.3-noble` - `rubylang/ruby:3.3.11-noble` +### Ubuntu 26.04 (resolute) + +- master + - `rubylang/ruby:master-resolute` + - `rubylang/ruby:master-dev-resolute` + - `rubylang/ruby:master-debug-resolute` + - `rubylang/ruby:master-debug-dev-resolute` +- 4.0 + - `rubylang/ruby:4.0-resolute` + - `rubylang/ruby:4.0.4-resolute` +- 3.4 + - `rubylang/ruby:3.4-resolute` + - `rubylang/ruby:3.4.9-resolute` +- 3.3 + - `rubylang/ruby:3.3-resolute` + - `rubylang/ruby:3.3.11-resolute` + ### Ubuntu 22.04 (jammy) - master From c4c7a893ae977d7464477a09761c20fb731e6610 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 15 May 2026 12:54:57 +0900 Subject: [PATCH 3/4] Bump tested Ruby versions to current patches 3.2 / 3.3 / 3.4 each have new patch releases since this matrix was last updated, and 4.0 is now stable so testing against 4.0.0-preview2 is no longer meaningful. --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3490cf3..1f506d4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,10 +19,10 @@ jobs: - noble - jammy ruby_version: - - 3.2.8 - - 3.3.7 - - 3.4.2 - - 4.0.0-preview2 + - 3.2.11 + - 3.3.11 + - 3.4.9 + - 4.0.4 - master arch: - amd64 From 9fd4c7cb31e6e6c96bd3c61fe1a96e810c1eaa7c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 15 May 2026 13:01:04 +0900 Subject: [PATCH 4/4] Restrict latest manifest to stable releases The previous unanchored regex matched any ruby_version starting with the LATEST_RUBY_VERSION prefix, so a manual or scheduled prerelease build such as 4.0.0-preview2 or 4.0.0-rc1 would create and push rubylang/ruby:latest and repoint the public tag at a preview image. Require the input to be a full x.y.z stable form before publishing the latest manifest. --- Rakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index 82c4c6f..fb493aa 100644 --- a/Rakefile +++ b/Rakefile @@ -328,7 +328,7 @@ namespace :docker do if tag =~ /#{LATEST_UBUNTU_VERSION}/ non_ubuntu_tag = tag.sub(/-#{LATEST_UBUNTU_VERSION}/, '') sh 'docker', 'manifest', 'create', "#{non_ubuntu_tag}", *amend_args - if image_version_suffix.empty? && ruby_version =~ /^#{LATEST_RUBY_VERSION}/ && latest_tag.nil? + if image_version_suffix.empty? && ruby_version =~ /\A#{Regexp.escape(LATEST_RUBY_VERSION)}\.\d+\z/ && latest_tag.nil? latest_tag = tag.sub(/#{ruby_version}-#{LATEST_UBUNTU_VERSION}/, "latest") sh 'docker', 'manifest', 'create', "#{latest_tag}", *amend_args end @@ -349,7 +349,7 @@ namespace :docker do if tag =~ /#{LATEST_UBUNTU_VERSION}/ non_ubuntu_tag = tag.sub(/-#{LATEST_UBUNTU_VERSION}/, '') sh 'docker', 'manifest', 'push', "#{non_ubuntu_tag}" - if image_version_suffix.empty? && ruby_version =~ /^#{LATEST_RUBY_VERSION}/ && latest_tag.nil? + if image_version_suffix.empty? && ruby_version =~ /\A#{Regexp.escape(LATEST_RUBY_VERSION)}\.\d+\z/ && latest_tag.nil? latest_tag = tag.sub(/#{ruby_version}-#{LATEST_UBUNTU_VERSION}/, "latest") sh 'docker', 'manifest', 'push', "#{latest_tag}" end