mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbda85882f | ||
|
|
30755d8bf4 | ||
|
|
28233a011b | ||
|
|
277ba2a127 | ||
|
|
04c2e2b8e8 | ||
|
|
88a8155095 | ||
|
|
3ad45c51bf | ||
|
|
32110d4e31 | ||
|
|
28d088d34a | ||
|
|
f2f42b7848 | ||
|
|
5547c873c2 |
@@ -34,6 +34,7 @@ jobs:
|
||||
- { os: windows-2025, ruby: mswin }
|
||||
- { os: windows-2025, ruby: ucrt }
|
||||
- { os: ubuntu-24.04, ruby: asan }
|
||||
- { os: ubuntu-24.04, ruby: 3.4-asan }
|
||||
exclude:
|
||||
# https://github.com/ruby/setup-ruby/issues/496
|
||||
- { os: ubuntu-22.04, ruby: '2.2' }
|
||||
@@ -185,9 +186,37 @@ jobs:
|
||||
shell: bash
|
||||
run: echo ~ && bundle install
|
||||
- name: Windows JRuby
|
||||
if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby')
|
||||
# Should be startsWith(matrix.ruby, 'jruby') but broken on jruby-head: https://github.com/jruby/jruby/issues/8623
|
||||
if: startsWith(matrix.os, 'windows') && matrix.ruby == 'jruby'
|
||||
run: gem install sassc
|
||||
|
||||
testDotRubyVersion:
|
||||
name: "Test .ruby-version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: echo "ruby-3.4.0" > .ruby-version
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
|
||||
testToolVersions:
|
||||
name: "Test .tool-versions"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: echo -e "nodejs 16.0.0\nruby 3.4.0" > .tool-versions
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
|
||||
testMise:
|
||||
name: "Test mise.toml"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: echo -e "[tools]\nnode = '18'\nruby = '3.4.0'" > mise.toml
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
|
||||
testNoGemfile:
|
||||
name: "Test with no Gemfile"
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -15,8 +15,8 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
||||
|
||||
| Interpreter | Versions |
|
||||
| ----------- | -------- |
|
||||
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.4.1, head, debug, mingw, mswin, ucrt |
|
||||
| `jruby` | 9.1.17.0 - 9.4.11.0, head |
|
||||
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.4.2, head, debug, mingw, mswin, ucrt |
|
||||
| `jruby` | 9.1.17.0 - 9.4.12.0, head |
|
||||
| `truffleruby` | 19.3.0 - 24.1.2, head |
|
||||
| `truffleruby+graalvm` | 21.2.0 - 24.1.2, head |
|
||||
|
||||
@@ -26,6 +26,9 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
||||
Native extensions are automatically compiled with AddressSanitizer when using `ruby-asan`.
|
||||
`ruby-asan` is currently only available on `ubuntu-24.04`.
|
||||
|
||||
`ruby-3.4-asan` is similar to `ruby-asan` but built from the latest stable 3.4 release tag.
|
||||
Like `ruby-asan`, it's currently only available on `ubuntu-24.04`.
|
||||
|
||||
Regarding Windows ruby master builds, `mingw` is a MSYS2/MinGW build, `head` & `ucrt` are MSYS2/UCRT64
|
||||
builds, and `mswin` is a MSVC/VS 2022 build.
|
||||
|
||||
|
||||
@@ -66,7 +66,8 @@ export async function time(name, block) {
|
||||
}
|
||||
|
||||
export function isHeadVersion(rubyVersion) {
|
||||
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan'].includes(rubyVersion)
|
||||
// 3.4-asan counts as "head" because the version cannot be selected -- you can only get whatever's latest
|
||||
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan', '3.4-asan'].includes(rubyVersion)
|
||||
}
|
||||
|
||||
export function isStableVersion(engine, rubyVersion) {
|
||||
@@ -128,6 +129,8 @@ export function targetRubyVersion(engine, rubyVersion) {
|
||||
return 2.5
|
||||
} else if (version === 9.3) {
|
||||
return 2.6
|
||||
} else if (version === 9.4) {
|
||||
return 3.1
|
||||
}
|
||||
} else if (engine.startsWith('truffleruby')) {
|
||||
if (version < 21.0) {
|
||||
@@ -136,6 +139,10 @@ export function targetRubyVersion(engine, rubyVersion) {
|
||||
return 2.7
|
||||
} else if (version < 23.0) {
|
||||
return 3.0
|
||||
} else if (version < 23.1) {
|
||||
return 3.1
|
||||
} else if (version < 24.2) {
|
||||
return 3.2
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
-7
File diff suppressed because one or more lines are too long
@@ -129,13 +129,15 @@ function parseRubyEngineAndVersion(rubyVersion) {
|
||||
console.log(`Using ${rubyVersion} as input from file .ruby-version`)
|
||||
} else if (rubyVersion === '.tool-versions') { // Read from .tool-versions
|
||||
const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim()
|
||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s/.test(e))[0]
|
||||
rubyVersion = rubyLine.match(/^ruby\s+(.+)$/)[1]
|
||||
const regexp = /^ruby\s+(\S+)/
|
||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
|
||||
rubyVersion = rubyLine.match(regexp)[1]
|
||||
console.log(`Using ${rubyVersion} as input from file .tool-versions`)
|
||||
} else if (rubyVersion === 'mise.toml') { // Read from mise.toml
|
||||
const toolVersions = fs.readFileSync('mise.toml', 'utf8').trim()
|
||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s*=\s*/.test(e))[0]
|
||||
rubyVersion = rubyLine.match(/^ruby\s*=\s*['"](.+)['"]$/)[1]
|
||||
const regexp = /^ruby\s*=\s*['"](.+)['"]$/
|
||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
|
||||
rubyVersion = rubyLine.match(regexp)[1]
|
||||
console.log(`Using ${rubyVersion} as input from file mise.toml`)
|
||||
}
|
||||
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
"3.1.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6",
|
||||
"3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3", "3.2.0-rc1", "3.2.0", "3.2.1", "3.2.2", "3.2.3", "3.2.4", "3.2.5", "3.2.6", "3.2.7",
|
||||
"3.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1", "3.3.2", "3.3.3", "3.3.4", "3.3.5", "3.3.6", "3.3.7",
|
||||
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1",
|
||||
"head", "debug", "asan"
|
||||
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.2",
|
||||
"head", "debug", "asan", "3.4-asan"
|
||||
],
|
||||
"jruby": [
|
||||
"9.1.17.0",
|
||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0", "9.2.14.0", "9.2.15.0", "9.2.16.0", "9.2.17.0", "9.2.18.0", "9.2.19.0", "9.2.20.0", "9.2.20.1", "9.2.21.0",
|
||||
"9.3.0.0", "9.3.1.0", "9.3.2.0", "9.3.3.0", "9.3.4.0", "9.3.6.0", "9.3.7.0", "9.3.8.0", "9.3.9.0", "9.3.10.0", "9.3.11.0", "9.3.13.0", "9.3.14.0", "9.3.15.0",
|
||||
"9.4.0.0", "9.4.1.0", "9.4.2.0", "9.4.3.0", "9.4.4.0", "9.4.5.0", "9.4.6.0", "9.4.7.0", "9.4.8.0", "9.4.9.0", "9.4.10.0", "9.4.11.0",
|
||||
"9.4.0.0", "9.4.1.0", "9.4.2.0", "9.4.3.0", "9.4.4.0", "9.4.5.0", "9.4.6.0", "9.4.7.0", "9.4.8.0", "9.4.9.0", "9.4.10.0", "9.4.11.0", "9.4.12.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby": [
|
||||
|
||||
@@ -2,21 +2,32 @@ require 'json'
|
||||
hash = File.read('ruby-builder-versions.json')
|
||||
versions = JSON.load(hash).transform_keys(&:to_sym)
|
||||
|
||||
by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] }
|
||||
ONLY_LATEST_PATCH = ENV['ONLY_LATEST_PATCH']
|
||||
|
||||
by_minor.each_pair do |minor, versions|
|
||||
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
|
||||
def filter(versions)
|
||||
versions -= %w[head]
|
||||
if ONLY_LATEST_PATCH
|
||||
versions = versions.group_by { |v| v[/^\d+\.\d+/] }.map { _2.last }
|
||||
end
|
||||
versions
|
||||
end
|
||||
|
||||
if ONLY_LATEST_PATCH
|
||||
puts filter(versions[:ruby]).map { |v| "ruby-#{v}" }.join(', ')
|
||||
else
|
||||
by_minor = versions[:ruby].group_by { |v| v[/^\d+\.\d+/] }
|
||||
by_minor.each_pair do |minor, versions|
|
||||
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
|
||||
end
|
||||
end
|
||||
|
||||
puts
|
||||
puts (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" }.join(', ')
|
||||
puts filter(versions[:truffleruby]).map { |v| "truffleruby-#{v}" }.join(', ')
|
||||
|
||||
puts
|
||||
puts (versions[:"truffleruby+graalvm"] - %w[head]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
|
||||
puts filter(versions[:"truffleruby+graalvm"]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
|
||||
|
||||
puts
|
||||
puts (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" }.join(', ')
|
||||
|
||||
(versions[:jruby] - %w[head]).each do |v|
|
||||
puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }"
|
||||
end
|
||||
puts filter(versions[:jruby]).map { |v| "jruby-#{v}" }.join(', ')
|
||||
puts "For Windows:"
|
||||
puts filter(versions[:jruby]).join(', ')
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
"3.3.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z",
|
||||
"3.3.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.7-1/rubyinstaller-3.3.7-1-x64.7z",
|
||||
"3.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-x64.7z",
|
||||
"3.4.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-x64.7z",
|
||||
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
|
||||
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
|
||||
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",
|
||||
|
||||
Reference in New Issue
Block a user