mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fee676323 | ||
|
|
c61fbf19ae | ||
|
|
4451173596 | ||
|
|
805f878062 | ||
|
|
ab85640192 | ||
|
|
c2e9820886 | ||
|
|
efbf473cab | ||
|
|
bd28d3616a | ||
|
|
3c08d92a33 | ||
|
|
829114fc20 | ||
|
|
76da337679 | ||
|
|
2973a4bca4 | ||
|
|
595828d48d | ||
|
|
2a7b30092b | ||
|
|
78876b7c88 | ||
|
|
3ec1ec0529 | ||
|
|
45dc484f8a | ||
|
|
bb6434c747 | ||
|
|
ba9e71c195 | ||
|
|
0ecad18fe5 | ||
|
|
e8621f0b86 | ||
|
|
bd6859cc58 | ||
|
|
223e443f3e | ||
|
|
65937904bc | ||
|
|
a9bfc2ecf3 | ||
|
|
4727905401 | ||
|
|
f66e1124dc | ||
|
|
a0d08243d4 | ||
|
|
a4f8389190 | ||
|
|
d4ef88eccb | ||
|
|
e851ebd3ad |
@@ -11,7 +11,7 @@ jobs:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./
|
||||
|
||||
+32
-43
@@ -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 }
|
||||
@@ -77,28 +75,20 @@ jobs:
|
||||
- { os: windows-11-arm, ruby: '3.1' }
|
||||
- { os: windows-11-arm, ruby: '3.2' }
|
||||
- { os: windows-11-arm, ruby: '3.3' }
|
||||
# https://github.com/ruby/jruby-dev-builder/pull/14#issuecomment-2829841247
|
||||
- { 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 }
|
||||
@@ -106,7 +96,7 @@ jobs:
|
||||
name: ${{ matrix.os }} ${{ matrix.ruby }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- uses: ./
|
||||
with:
|
||||
@@ -213,7 +203,7 @@ jobs:
|
||||
name: "Test .ruby-version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- run: echo "ruby-3.4.0" > .ruby-version
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
@@ -222,7 +212,7 @@ jobs:
|
||||
name: "Test .tool-versions"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- run: echo -e "nodejs 16.0.0\nruby 3.4.0" > .tool-versions
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
@@ -231,7 +221,7 @@ jobs:
|
||||
name: "Test mise.toml"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- run: echo -e "[tools]\nnode = '18'\nruby = '3.4.0'" > mise.toml
|
||||
- uses: ./
|
||||
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||
@@ -240,13 +230,25 @@ jobs:
|
||||
name: "Test with no Gemfile"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- run: rm Gemfile
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
- run: ruby -v
|
||||
|
||||
testNoGemfileWithBundlerCache:
|
||||
name: "Test with no Gemfile but with bundler-cache"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- run: rm Gemfile
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
bundler-cache: true
|
||||
- run: ruby -v
|
||||
|
||||
testLatestRubygemsVersion:
|
||||
name: "Test rubygems: latest on ${{ matrix.ruby }}"
|
||||
runs-on: ubuntu-latest
|
||||
@@ -262,7 +264,7 @@ jobs:
|
||||
- { ruby: '2.3', expected_rubygems_version: '3.3.27' }
|
||||
- { ruby: '2.0', expected_rubygems_version: '2.7.11' }
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby }}
|
||||
@@ -273,7 +275,7 @@ jobs:
|
||||
name: "Test rubygems: version upgrades RubyGems to that version if the default is older"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
@@ -284,7 +286,7 @@ jobs:
|
||||
name: "Test rubygems: version noops if the default is newer"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '3.1.0'
|
||||
@@ -295,7 +297,7 @@ jobs:
|
||||
name: "Test rubygems: version uses the Bundler installed by the rubygems update"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '3.1.0'
|
||||
@@ -307,7 +309,7 @@ jobs:
|
||||
name: "Test bundler: 1.x for old Ruby"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.3'
|
||||
@@ -318,7 +320,7 @@ jobs:
|
||||
name: "Test with a major Bundler version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
@@ -329,7 +331,7 @@ jobs:
|
||||
name: "Test with a minor Bundler version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
@@ -340,7 +342,7 @@ jobs:
|
||||
name: "Test with an exact Bundler version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
@@ -351,7 +353,7 @@ jobs:
|
||||
name: "Test with a Bundler pre/rc version"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.6'
|
||||
@@ -364,7 +366,7 @@ jobs:
|
||||
env:
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler-dev.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: ruby-head
|
||||
@@ -376,7 +378,7 @@ jobs:
|
||||
env:
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler1.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.7'
|
||||
@@ -394,31 +396,18 @@ jobs:
|
||||
env:
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '3.2'
|
||||
bundler-cache: true
|
||||
- run: bundle exec rails --version
|
||||
|
||||
testTruffleRubyNokogiri:
|
||||
name: "Test installing a Gemfile with nokogiri on TruffleRuby"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/nokogiri.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: truffleruby-head
|
||||
bundler-cache: true
|
||||
- run: bundle list | grep nokogiri
|
||||
|
||||
testWindowsToolchain:
|
||||
name: "Test windows-toolchain: none"
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: '2.7'
|
||||
@@ -430,7 +419,7 @@ jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- run: yarn install
|
||||
- run: yarn run package
|
||||
- name: Check generated files are up to date
|
||||
|
||||
@@ -9,7 +9,7 @@ jobs:
|
||||
update_branch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- run: git push origin HEAD:v1
|
||||
|
||||
@@ -16,9 +16,9 @@ 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.5.0-preview1, head, debug, mingw, mswin, ucrt |
|
||||
| `jruby` | 9.1.17.0 - 10.0.0.1, head |
|
||||
| `truffleruby` | 19.3.0 - 24.2.1, head |
|
||||
| `truffleruby+graalvm` | 21.2.0 - 24.2.1, head |
|
||||
| `jruby` | 9.1.17.0 - 10.0.2.0, head |
|
||||
| `truffleruby` | 19.3.0 - 25.0.0, head |
|
||||
| `truffleruby+graalvm` | 21.2.0 - 25.0.0, head |
|
||||
|
||||
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
|
||||
|
||||
@@ -45,13 +45,13 @@ which means Ruby ≤ 2.4 is unmaintained and considered insecure.
|
||||
|
||||
### Supported Platforms
|
||||
|
||||
The action works on these [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) images. Runner images not listed below are not supported yet. `$OS-latest` just alias to one of these images.
|
||||
The action works on these [GitHub-hosted runners](https://docs.github.com/en/actions/reference/runners/github-hosted-runners) images. Runner images not listed below are not supported yet. `$OS-latest` just alias to one of these images.
|
||||
|
||||
| Operating System | Supported |
|
||||
| ---------------- | --------- |
|
||||
| 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
|
||||
@@ -76,10 +76,10 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.3' # Not needed with a .ruby-version, .tool-versions or mise.toml
|
||||
ruby-version: '3.4' # Not needed with a .ruby-version, .tool-versions or mise.toml
|
||||
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
||||
- run: bundle exec rake
|
||||
```
|
||||
@@ -98,10 +98,10 @@ jobs:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
||||
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
||||
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby }}
|
||||
@@ -124,10 +124,10 @@ jobs:
|
||||
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.3'
|
||||
ruby-version: '3.4'
|
||||
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
||||
- run: bundle exec rake
|
||||
```
|
||||
@@ -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
|
||||
|
||||
|
||||
+4
-19
@@ -48,16 +48,6 @@ function readBundledWithFromGemfileLock(lockFile) {
|
||||
return null
|
||||
}
|
||||
|
||||
async function afterLockFile(lockFile, platform, engine, rubyVersion) {
|
||||
if (engine.startsWith('truffleruby') && common.floatVersion(rubyVersion) < 21.1 && platform.startsWith('ubuntu-')) {
|
||||
const contents = fs.readFileSync(lockFile, 'utf8')
|
||||
if (contents.includes('nokogiri')) {
|
||||
await common.measure('Installing libxml2-dev libxslt-dev, required to install nokogiri on TruffleRuby < 21.1', async () =>
|
||||
exec.exec('sudo', ['apt-get', '-yqq', 'install', 'libxml2-dev', 'libxslt-dev'], { silent: true }))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, platform, rubyPrefix, engine, rubyVersion) {
|
||||
let bundlerVersion = bundlerVersionInput
|
||||
|
||||
@@ -137,14 +127,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
|
||||
}
|
||||
@@ -178,11 +165,9 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
|
||||
await exec.exec('bundle', ['lock'], envOptions)
|
||||
}
|
||||
|
||||
await afterLockFile(lockFile, platform, engine, rubyVersion)
|
||||
|
||||
// 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}-`]
|
||||
@@ -209,7 +194,7 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
|
||||
await exec.exec('bundle', ['install', '--jobs', '4'])
|
||||
|
||||
// @actions/cache only allows to save for non-existing keys
|
||||
if (cachedKey !== key) {
|
||||
if (!common.isExactCacheKeyMatch(key, cachedKey)) {
|
||||
if (cachedKey) { // existing cache but Gemfile.lock differs, clean old gems
|
||||
await exec.exec('bundle', ['clean'])
|
||||
}
|
||||
@@ -232,7 +217,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'
|
||||
@@ -361,24 +360,23 @@ export function setupPath(newPathEntries) {
|
||||
const originalPath = process.env[envPath].split(path.delimiter)
|
||||
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
||||
|
||||
core.startGroup(`Modifying ${envPath}`)
|
||||
|
||||
// First remove the conflicting path entries
|
||||
if (cleanPath.length !== originalPath.length) {
|
||||
console.log(`Entries removed from ${envPath} to avoid conflicts with default Ruby:`)
|
||||
for (const entry of originalPath) {
|
||||
if (!cleanPath.includes(entry)) {
|
||||
console.log(` ${entry}`)
|
||||
core.group(`Modifying ${envPath}`, async () => {
|
||||
// First remove the conflicting path entries
|
||||
if (cleanPath.length !== originalPath.length) {
|
||||
console.log(`Entries removed from ${envPath} to avoid conflicts with default Ruby:`)
|
||||
for (const entry of originalPath) {
|
||||
if (!cleanPath.includes(entry)) {
|
||||
console.log(` ${entry}`)
|
||||
}
|
||||
}
|
||||
core.exportVariable(envPath, cleanPath.join(path.delimiter))
|
||||
}
|
||||
core.exportVariable(envPath, cleanPath.join(path.delimiter))
|
||||
}
|
||||
|
||||
console.log(`Entries added to ${envPath} to use selected Ruby:`)
|
||||
for (const entry of newPathEntries) {
|
||||
console.log(` ${entry}`)
|
||||
}
|
||||
core.endGroup()
|
||||
console.log(`Entries added to ${envPath} to use selected Ruby:`)
|
||||
for (const entry of newPathEntries) {
|
||||
console.log(` ${entry}`)
|
||||
}
|
||||
})
|
||||
|
||||
core.addPath(newPathEntries.join(path.delimiter))
|
||||
}
|
||||
@@ -397,10 +395,15 @@ export async function setupJavaHome(rubyPrefix) {
|
||||
console.log("JRuby failed to start, try Java 21 envs")
|
||||
|
||||
let arch = os.arch()
|
||||
if (arch === "x64" || os.platform() !== "darwin") {
|
||||
if (arch === "arm64" && os.platform() === "win32") {
|
||||
arch = "AARCH64"
|
||||
} else if (arch === "x64" || os.platform() !== "darwin") {
|
||||
arch = "X64"
|
||||
}
|
||||
|
||||
// JAVA_HOME_21_AARCH64 - https://github.com/actions/partner-runner-images/blob/main/images/arm-windows-11-image.md#java
|
||||
// JAVA_HOME_21_arm64 - https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#java
|
||||
// JAVA_HOME_21_X64 - https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md#java
|
||||
let newHomeVar = `JAVA_HOME_21_${arch}`
|
||||
let newHome = process.env[newHomeVar]
|
||||
|
||||
@@ -414,3 +417,15 @@ export async function setupJavaHome(rubyPrefix) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Determines if two keys are an exact match for the purposes of cache matching
|
||||
// Specifically, this is a case-insensitive match that ignores accents
|
||||
// From actions/cache@v3 src/utils/actionUtils.ts (MIT)
|
||||
export function isExactCacheKeyMatch(key, cacheKey) {
|
||||
return !!(
|
||||
cacheKey &&
|
||||
cacheKey.localeCompare(key, undefined, {
|
||||
sensitivity: 'accent'
|
||||
}) === 0
|
||||
);
|
||||
}
|
||||
|
||||
+49
-41
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "nokogiri"
|
||||
@@ -99,6 +99,11 @@ export async function setupRuby(options = {}) {
|
||||
if (inputs['bundler-cache'] === 'true') {
|
||||
await common.time('bundle install', async () =>
|
||||
bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version']))
|
||||
|
||||
if (lockFile !== null && fs.existsSync(lockFile)) {
|
||||
await core.group(`Print lockfile`, async () =>
|
||||
await exec.exec('cat', [lockFile]))
|
||||
}
|
||||
}
|
||||
|
||||
core.setOutput('ruby-prefix', rubyPrefix)
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
"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.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.2.9",
|
||||
"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.3.9",
|
||||
"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.4.6",
|
||||
"3.5.0-preview1",
|
||||
"head", "debug", "asan", "3.4-asan"
|
||||
],
|
||||
@@ -21,8 +21,8 @@
|
||||
"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",
|
||||
"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", "9.4.14.0",
|
||||
"10.0.0.0", "10.0.0.1", "10.0.1.0", "10.0.2.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby": [
|
||||
@@ -32,6 +32,7 @@
|
||||
"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",
|
||||
"25.0.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby+graalvm": [
|
||||
@@ -39,6 +40,7 @@
|
||||
"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",
|
||||
"25.0.0",
|
||||
"head"
|
||||
]
|
||||
}
|
||||
|
||||
+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) {
|
||||
|
||||
@@ -203,6 +203,9 @@
|
||||
"3.2.8": {
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||
},
|
||||
"3.2.9": {
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||
},
|
||||
"3.3.0": {
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||
},
|
||||
@@ -230,6 +233,9 @@
|
||||
"3.3.8": {
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||
},
|
||||
"3.3.9": {
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||
},
|
||||
"3.4.1": {
|
||||
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64-mingw-w64@r688.7z",
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||
@@ -246,6 +252,10 @@
|
||||
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64.7z",
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||
},
|
||||
"3.4.5": {
|
||||
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64.7z",
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||
},
|
||||
"head": {
|
||||
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64.7z",
|
||||
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||
|
||||
@@ -203,6 +203,9 @@
|
||||
"3.2.8": {
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.8-1/rubyinstaller-3.2.8-1-x64.7z"
|
||||
},
|
||||
"3.2.9": {
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.9-1/rubyinstaller-3.2.9-1-x64.7z"
|
||||
},
|
||||
"3.3.0": {
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z"
|
||||
},
|
||||
@@ -230,6 +233,9 @@
|
||||
"3.3.8": {
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.8-1/rubyinstaller-3.3.8-1-x64.7z"
|
||||
},
|
||||
"3.3.9": {
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.9-1/rubyinstaller-3.3.9-1-x64.7z"
|
||||
},
|
||||
"3.4.1": {
|
||||
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-arm.7z",
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-x64.7z"
|
||||
@@ -246,6 +252,10 @@
|
||||
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.4-2/rubyinstaller-3.4.4-2-arm.7z",
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.4-2/rubyinstaller-3.4.4-2-x64.7z"
|
||||
},
|
||||
"3.4.5": {
|
||||
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.5-1/rubyinstaller-3.4.5-1-arm.7z",
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.5-1/rubyinstaller-3.4.5-1-x64.7z"
|
||||
},
|
||||
"head": {
|
||||
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-arm.7z",
|
||||
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z"
|
||||
|
||||
@@ -283,9 +283,9 @@ balanced-match@^1.0.0:
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
version "1.1.12"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
|
||||
integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
@@ -376,13 +376,14 @@ fast-xml-parser@^5.0.7:
|
||||
strnum "^2.1.0"
|
||||
|
||||
form-data@^2.5.0:
|
||||
version "2.5.3"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.3.tgz#f9bcf87418ce748513c0c3494bb48ec270c97acc"
|
||||
integrity sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==
|
||||
version "2.5.5"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.5.tgz#a5f6364ad7e4e67e95b4a07e2d8c6f711c74f624"
|
||||
integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.8"
|
||||
es-set-tostringtag "^2.1.0"
|
||||
hasown "^2.0.2"
|
||||
mime-types "^2.1.35"
|
||||
safe-buffer "^5.2.1"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user