mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4727905401 | ||
|
|
f66e1124dc | ||
|
|
a0d08243d4 | ||
|
|
a4f8389190 | ||
|
|
d4ef88eccb | ||
|
|
e851ebd3ad |
@@ -17,7 +17,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm, macos-13, macos-14, macos-15, windows-2019, windows-2022, windows-2025, windows-11-arm ]
|
||||
os: [ ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm, macos-13, macos-14, macos-15, windows-2022, windows-2025, windows-11-arm ]
|
||||
ruby: [
|
||||
'1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', ruby-head,
|
||||
jruby, jruby-head,
|
||||
@@ -25,8 +25,6 @@ jobs:
|
||||
truffleruby+graalvm, truffleruby+graalvm-head
|
||||
]
|
||||
include:
|
||||
- { os: windows-2019, ruby: mingw }
|
||||
- { os: windows-2019, ruby: mswin }
|
||||
- { os: windows-2022, ruby: mingw }
|
||||
- { os: windows-2022, ruby: mswin }
|
||||
- { os: windows-2022, ruby: ucrt }
|
||||
@@ -81,24 +79,19 @@ jobs:
|
||||
- { os: windows-11-arm, ruby: jruby }
|
||||
- { os: windows-11-arm, ruby: jruby-head }
|
||||
# RubyInstaller has no 64-bit builds of 1.9 on Windows
|
||||
- { os: windows-2019, ruby: '1.9' }
|
||||
- { os: windows-2022, ruby: '1.9' }
|
||||
- { os: windows-2025, ruby: '1.9' }
|
||||
- { os: windows-11-arm, ruby: '1.9' }
|
||||
# TruffleRuby does not support Windows
|
||||
- { os: windows-2019, ruby: truffleruby }
|
||||
- { os: windows-2022, ruby: truffleruby }
|
||||
- { os: windows-2025, ruby: truffleruby }
|
||||
- { os: windows-11-arm, ruby: truffleruby }
|
||||
- { os: windows-2019, ruby: truffleruby-head }
|
||||
- { os: windows-2022, ruby: truffleruby-head }
|
||||
- { os: windows-2025, ruby: truffleruby-head }
|
||||
- { os: windows-11-arm, ruby: truffleruby-head }
|
||||
- { os: windows-2019, ruby: truffleruby+graalvm }
|
||||
- { os: windows-2022, ruby: truffleruby+graalvm }
|
||||
- { os: windows-2025, ruby: truffleruby+graalvm }
|
||||
- { os: windows-11-arm, ruby: truffleruby+graalvm }
|
||||
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
||||
- { os: windows-2022, ruby: truffleruby+graalvm-head }
|
||||
- { os: windows-2025, ruby: truffleruby+graalvm-head }
|
||||
- { os: windows-11-arm, ruby: truffleruby+graalvm-head }
|
||||
|
||||
@@ -51,7 +51,7 @@ The action works on these [GitHub-hosted runners](https://docs.github.com/en/act
|
||||
| ---------------- | --------- |
|
||||
| Ubuntu | `ubuntu-22.04`, `ubuntu-24.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm` |
|
||||
| macOS | `macos-13` and newer versions |
|
||||
| Windows | `windows-2019`, `windows-2022`, `windows-2025`, `windows-11-arm` |
|
||||
| Windows | `windows-2022`, `windows-2025`, `windows-11-arm` |
|
||||
|
||||
Not all combinations of runner images and versions are supported.
|
||||
The list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
|
||||
@@ -243,7 +243,7 @@ It is recommended to first get your build working on Ubuntu and macOS before try
|
||||
* For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`.
|
||||
* Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)).
|
||||
* JRuby on Windows has multiple issues ([jruby/jruby#7106](https://github.com/jruby/jruby/issues/7106), [jruby/jruby#7182](https://github.com/jruby/jruby/issues/7182)).
|
||||
* When compiling extension code, note that the packages required to build Ruby are included when using Windows 2022, but that Windows 2019 does not include all of them, and may require installing package(s). This can be done with [setup-ruby-pkgs](https://github.com/ruby/setup-ruby-pkgs) or via MSYS2's pacman. These packages may be required when installing or updating Ruby std-lib extension gems.
|
||||
* When compiling extension code, note that the packages required to build Ruby are included when using Windows 2022. Additional packages can be installed with [setup-ruby-pkgs](https://github.com/ruby/setup-ruby-pkgs) or via MSYS2's `pacman`. These packages may be required when installing or updating Ruby stdlib extension gems.
|
||||
|
||||
## Versioning
|
||||
|
||||
|
||||
+3
-6
@@ -137,14 +137,11 @@ export async function installBundler(bundlerVersionInput, rubygemsInputSet, lock
|
||||
}
|
||||
|
||||
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
||||
// Workaround for https://github.com/rubygems/rubygems/issues/5245
|
||||
// and for https://github.com/oracle/truffleruby/issues/2780
|
||||
const force = ((platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) || (engine === 'truffleruby')) ? ['--force'] : []
|
||||
|
||||
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
|
||||
const bundlerVersionConstraint = versionParts >= 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
|
||||
|
||||
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
|
||||
await exec.exec(gem, ['install', 'bundler', '-v', bundlerVersionConstraint])
|
||||
|
||||
return bundlerVersion
|
||||
}
|
||||
@@ -182,7 +179,7 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
|
||||
|
||||
// cache key
|
||||
const paths = [cachePath]
|
||||
const baseKey = await computeBaseKey(platform, engine, rubyVersion, lockFile, cacheVersion)
|
||||
const baseKey = await computeBaseKey(engine, rubyVersion, lockFile, cacheVersion)
|
||||
const key = `${baseKey}-${await common.hashFile(lockFile)}`
|
||||
// If only Gemfile.lock changes we can reuse part of the cache, and clean old gem versions below
|
||||
const restoreKeys = [`${baseKey}-`]
|
||||
@@ -232,7 +229,7 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
|
||||
return true
|
||||
}
|
||||
|
||||
async function computeBaseKey(platform, engine, version, lockFile, cacheVersion) {
|
||||
async function computeBaseKey(engine, version, lockFile, cacheVersion) {
|
||||
const cwd = process.cwd()
|
||||
const bundleWith = process.env['BUNDLE_WITH'] || ''
|
||||
const bundleWithout = process.env['BUNDLE_WITHOUT'] || ''
|
||||
|
||||
@@ -175,7 +175,6 @@ const GitHubHostedPlatforms = [
|
||||
'ubuntu-22.04-arm64',
|
||||
'ubuntu-24.04-x64',
|
||||
'ubuntu-24.04-arm64',
|
||||
'windows-2019-x64',
|
||||
'windows-2022-x64',
|
||||
'windows-2025-x64',
|
||||
'windows-11-arm64'
|
||||
|
||||
+7
-9
@@ -151,14 +151,11 @@ async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, p
|
||||
}
|
||||
|
||||
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
||||
// Workaround for https://github.com/rubygems/rubygems/issues/5245
|
||||
// and for https://github.com/oracle/truffleruby/issues/2780
|
||||
const force = ((platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) || (engine === 'truffleruby')) ? ['--force'] : []
|
||||
|
||||
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
|
||||
const bundlerVersionConstraint = versionParts >= 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
|
||||
|
||||
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
|
||||
await exec.exec(gem, ['install', 'bundler', '-v', bundlerVersionConstraint])
|
||||
|
||||
return bundlerVersion
|
||||
}
|
||||
@@ -196,7 +193,7 @@ async function bundleInstall(gemfile, lockFile, platform, engine, rubyVersion, b
|
||||
|
||||
// cache key
|
||||
const paths = [cachePath]
|
||||
const baseKey = await computeBaseKey(platform, engine, rubyVersion, lockFile, cacheVersion)
|
||||
const baseKey = await computeBaseKey(engine, rubyVersion, lockFile, cacheVersion)
|
||||
const key = `${baseKey}-${await common.hashFile(lockFile)}`
|
||||
// If only Gemfile.lock changes we can reuse part of the cache, and clean old gem versions below
|
||||
const restoreKeys = [`${baseKey}-`]
|
||||
@@ -246,7 +243,7 @@ async function bundleInstall(gemfile, lockFile, platform, engine, rubyVersion, b
|
||||
return true
|
||||
}
|
||||
|
||||
async function computeBaseKey(platform, engine, version, lockFile, cacheVersion) {
|
||||
async function computeBaseKey(engine, version, lockFile, cacheVersion) {
|
||||
const cwd = process.cwd()
|
||||
const bundleWith = process.env['BUNDLE_WITH'] || ''
|
||||
const bundleWithout = process.env['BUNDLE_WITHOUT'] || ''
|
||||
@@ -495,7 +492,6 @@ const GitHubHostedPlatforms = [
|
||||
'ubuntu-22.04-arm64',
|
||||
'ubuntu-24.04-x64',
|
||||
'ubuntu-24.04-arm64',
|
||||
'windows-2019-x64',
|
||||
'windows-2022-x64',
|
||||
'windows-2025-x64',
|
||||
'windows-11-arm64'
|
||||
@@ -71455,8 +71451,10 @@ async function rubygemsLatest(gem, platform, engine, rubyVersion) {
|
||||
const floatVersion = common.floatVersion(rubyVersion)
|
||||
if (common.isHeadVersion(rubyVersion)) {
|
||||
console.log('Ruby master builds use included RubyGems')
|
||||
} else if (floatVersion >= 3.1) {
|
||||
} else if (floatVersion >= 3.2) {
|
||||
await exec.exec(gem, ['update', '--system'])
|
||||
} else if (floatVersion >= 3.1) {
|
||||
await exec.exec(gem, ['update', '--system', '3.6.9'])
|
||||
} else if (floatVersion >= 3.0) {
|
||||
await exec.exec(gem, ['update', '--system', '3.5.23'])
|
||||
} else if (floatVersion >= 2.6) {
|
||||
@@ -85157,7 +85155,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4.
|
||||
/***/ ((module) => {
|
||||
|
||||
"use strict";
|
||||
module.exports = /*#__PURE__*/JSON.parse('{"ruby":["1.9.3-p551","2.0.0-p648","2.1.9","2.2.10","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.4.0","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.6","2.4.7","2.4.9","2.4.10","2.5.0","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","2.5.7","2.5.8","2.5.9","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.6.7","2.6.8","2.6.9","2.6.10","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","3.0.0-preview1","3.0.0-preview2","3.0.0-rc1","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","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.1.7","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.2.8","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.3.8","3.4.0-preview1","3.4.0-preview2","3.4.0-rc1","3.4.0","3.4.1","3.4.2","3.4.3","3.4.4","3.5.0-preview1","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.12.0","9.4.12.1","9.4.13.0","10.0.0.0","10.0.0.1","head"],"truffleruby":["19.3.0","19.3.1","20.0.0","20.1.0","20.2.0","20.3.0","21.0.0","21.1.0","21.2.0","21.2.0.1","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","24.1.1","24.1.2","24.2.0","24.2.1","head"],"truffleruby+graalvm":["21.2.0","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","24.1.1","24.1.2","24.2.0","24.2.1","head"]}');
|
||||
module.exports = /*#__PURE__*/JSON.parse('{"ruby":["1.9.3-p551","2.0.0-p648","2.1.9","2.2.10","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.4.0","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.6","2.4.7","2.4.9","2.4.10","2.5.0","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","2.5.7","2.5.8","2.5.9","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.6.7","2.6.8","2.6.9","2.6.10","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4","2.7.5","2.7.6","2.7.7","2.7.8","3.0.0-preview1","3.0.0-preview2","3.0.0-rc1","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","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.1.7","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.2.8","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.3.8","3.4.0-preview1","3.4.0-preview2","3.4.0-rc1","3.4.0","3.4.1","3.4.2","3.4.3","3.4.4","3.4.5","3.5.0-preview1","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.12.0","9.4.12.1","9.4.13.0","10.0.0.0","10.0.0.1","head"],"truffleruby":["19.3.0","19.3.1","20.0.0","20.1.0","20.2.0","20.3.0","21.0.0","21.1.0","21.2.0","21.2.0.1","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","24.1.1","24.1.2","24.2.0","24.2.1","head"],"truffleruby+graalvm":["21.2.0","21.3.0","22.0.0.2","22.1.0","22.2.0","22.3.0","22.3.1","23.0.0-preview1","23.0.0","23.1.0","23.1.1","23.1.2","24.0.0","24.0.1","24.0.2","24.1.0","24.1.1","24.1.2","24.2.0","24.2.1","head"]}');
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"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.1.7",
|
||||
"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.2.8",
|
||||
"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.3.8",
|
||||
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.2", "3.4.3", "3.4.4",
|
||||
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5",
|
||||
"3.5.0-preview1",
|
||||
"head", "debug", "asan", "3.4-asan"
|
||||
],
|
||||
|
||||
+3
-1
@@ -39,8 +39,10 @@ async function rubygemsLatest(gem, platform, engine, rubyVersion) {
|
||||
const floatVersion = common.floatVersion(rubyVersion)
|
||||
if (common.isHeadVersion(rubyVersion)) {
|
||||
console.log('Ruby master builds use included RubyGems')
|
||||
} else if (floatVersion >= 3.1) {
|
||||
} else if (floatVersion >= 3.2) {
|
||||
await exec.exec(gem, ['update', '--system'])
|
||||
} else if (floatVersion >= 3.1) {
|
||||
await exec.exec(gem, ['update', '--system', '3.6.9'])
|
||||
} else if (floatVersion >= 3.0) {
|
||||
await exec.exec(gem, ['update', '--system', '3.5.23'])
|
||||
} else if (floatVersion >= 2.6) {
|
||||
|
||||
Reference in New Issue
Block a user