mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8711a86ab6 | ||
|
|
ef45abe478 | ||
|
|
8388f20e6a | ||
|
|
2654679fe7 | ||
|
|
1287d2b408 | ||
|
|
84b14e9e47 | ||
|
|
28c4deda89 | ||
|
|
fbaef13682 | ||
|
|
f72249c5c9 |
@@ -17,7 +17,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-13, macos-14, macos-15, windows-2019, windows-2022, windows-2025 ]
|
os: [ ubuntu-20.04, 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 ]
|
||||||
ruby: [
|
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,
|
'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,
|
jruby, jruby-head,
|
||||||
@@ -54,6 +54,15 @@ jobs:
|
|||||||
- { os: macos-15, ruby: '2.3' }
|
- { os: macos-15, ruby: '2.3' }
|
||||||
- { os: macos-15, ruby: '2.4' }
|
- { os: macos-15, ruby: '2.4' }
|
||||||
- { os: macos-15, ruby: '2.5' }
|
- { os: macos-15, ruby: '2.5' }
|
||||||
|
# These old Rubies fail to compile or segfault on Linux arm64
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.0' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.1' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.2' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.0' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.1' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.2' }
|
||||||
# Windows (note: previews are not available on Windows)
|
# Windows (note: previews are not available on Windows)
|
||||||
- { os: windows-2019, ruby: '1.9' }
|
- { os: windows-2019, ruby: '1.9' }
|
||||||
- { os: windows-2022, ruby: '1.9' }
|
- { os: windows-2022, ruby: '1.9' }
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
|||||||
| Interpreter | Versions |
|
| 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 |
|
| `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.9.0, head |
|
| `jruby` | 9.1.17.0 - 9.4.11.0, head |
|
||||||
| `truffleruby` | 19.3.0 - 24.1.1, head |
|
| `truffleruby` | 19.3.0 - 24.1.2, head |
|
||||||
| `truffleruby+graalvm` | 21.2.0 - 24.1.1, head |
|
| `truffleruby+graalvm` | 21.2.0 - 24.1.2, head |
|
||||||
|
|
||||||
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
|
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ The action works on these [GitHub-hosted runners](https://docs.github.com/en/act
|
|||||||
|
|
||||||
| Operating System | Supported |
|
| Operating System | Supported |
|
||||||
| ---------------- | --------- |
|
| ---------------- | --------- |
|
||||||
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.04`, `ubuntu-24.04` |
|
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.04`, `ubuntu-24.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm` |
|
||||||
| macOS | `macos-13` and newer versions |
|
| macOS | `macos-13` and newer versions |
|
||||||
| Windows | `windows-2019`, `windows-2022` |
|
| Windows | `windows-2019`, `windows-2022` |
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: '3.3' # Not needed with a `.ruby-version` or `.tool-versions`
|
ruby-version: '3.3' # Not needed with a .ruby-version, .tool-versions or mise.toml
|
||||||
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
||||||
- run: bundle exec rake
|
- run: bundle exec rake
|
||||||
```
|
```
|
||||||
@@ -139,11 +139,12 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
|
|||||||
* engine only like `ruby` and `truffleruby`, uses the latest stable release of that implementation
|
* engine only like `ruby` and `truffleruby`, uses the latest stable release of that implementation
|
||||||
* `.ruby-version` reads from the project's `.ruby-version` file
|
* `.ruby-version` reads from the project's `.ruby-version` file
|
||||||
* `.tool-versions` reads from the project's `.tool-versions` file
|
* `.tool-versions` reads from the project's `.tool-versions` file
|
||||||
* If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions`
|
* `mise.toml` reads from the project's `mise.toml` file
|
||||||
|
* If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions`, followed by `mise.toml`
|
||||||
|
|
||||||
### Working Directory
|
### Working Directory
|
||||||
|
|
||||||
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock`
|
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions`, `mise.toml` and `Gemfile.lock`
|
||||||
if they are not at the root of the repository, see [action.yml](action.yml) for details.
|
if they are not at the root of the repository, see [action.yml](action.yml) for details.
|
||||||
|
|
||||||
### RubyGems
|
### RubyGems
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@ branding:
|
|||||||
icon: download
|
icon: download
|
||||||
inputs:
|
inputs:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.'
|
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version, .tool-versions or mise.toml if unset.'
|
||||||
default: 'default'
|
default: 'default'
|
||||||
rubygems:
|
rubygems:
|
||||||
description: |
|
description: |
|
||||||
@@ -26,7 +26,7 @@ inputs:
|
|||||||
description: 'Run "bundle install", and cache the result automatically. Either true or false.'
|
description: 'Run "bundle install", and cache the result automatically. Either true or false.'
|
||||||
default: 'false'
|
default: 'false'
|
||||||
working-directory:
|
working-directory:
|
||||||
description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions and Gemfile.lock.'
|
description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions, mise.toml and Gemfile.lock.'
|
||||||
cache-version:
|
cache-version:
|
||||||
description: |
|
description: |
|
||||||
Arbitrary string that will be added to the cache key of the bundler cache. Set or change it if you need
|
Arbitrary string that will be added to the cache key of the bundler cache. Set or change it if you need
|
||||||
|
|||||||
@@ -165,7 +165,9 @@ export async function hashFile(file) {
|
|||||||
const GitHubHostedPlatforms = [
|
const GitHubHostedPlatforms = [
|
||||||
'ubuntu-20.04-x64',
|
'ubuntu-20.04-x64',
|
||||||
'ubuntu-22.04-x64',
|
'ubuntu-22.04-x64',
|
||||||
|
'ubuntu-22.04-arm64',
|
||||||
'ubuntu-24.04-x64',
|
'ubuntu-24.04-x64',
|
||||||
|
'ubuntu-24.04-arm64',
|
||||||
'windows-2019-x64',
|
'windows-2019-x64',
|
||||||
'windows-2022-x64',
|
'windows-2022-x64',
|
||||||
'windows-2025-x64',
|
'windows-2025-x64',
|
||||||
|
|||||||
+22
-3
File diff suppressed because one or more lines are too long
@@ -117,6 +117,8 @@ function parseRubyEngineAndVersion(rubyVersion) {
|
|||||||
rubyVersion = '.ruby-version'
|
rubyVersion = '.ruby-version'
|
||||||
} else if (fs.existsSync('.tool-versions')) {
|
} else if (fs.existsSync('.tool-versions')) {
|
||||||
rubyVersion = '.tool-versions'
|
rubyVersion = '.tool-versions'
|
||||||
|
} else if (fs.existsSync('mise.toml')) {
|
||||||
|
rubyVersion = 'mise.toml'
|
||||||
} else {
|
} else {
|
||||||
throw new Error('input ruby-version needs to be specified if no .ruby-version or .tool-versions file exists')
|
throw new Error('input ruby-version needs to be specified if no .ruby-version or .tool-versions file exists')
|
||||||
}
|
}
|
||||||
@@ -130,6 +132,11 @@ function parseRubyEngineAndVersion(rubyVersion) {
|
|||||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s/.test(e))[0]
|
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s/.test(e))[0]
|
||||||
rubyVersion = rubyLine.match(/^ruby\s+(.+)$/)[1]
|
rubyVersion = rubyLine.match(/^ruby\s+(.+)$/)[1]
|
||||||
console.log(`Using ${rubyVersion} as input from file .tool-versions`)
|
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]
|
||||||
|
console.log(`Using ${rubyVersion} as input from file mise.toml`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let engine, version
|
let engine, version
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"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",
|
"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.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.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.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.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",
|
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1",
|
||||||
"head", "debug", "asan"
|
"head", "debug", "asan"
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"9.1.17.0",
|
"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.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.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.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",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"truffleruby": [
|
"truffleruby": [
|
||||||
@@ -29,14 +29,14 @@
|
|||||||
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.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",
|
"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",
|
"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.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"truffleruby+graalvm": [
|
"truffleruby+graalvm": [
|
||||||
"21.2.0", "21.3.0",
|
"21.2.0", "21.3.0",
|
||||||
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
|
"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",
|
"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.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2",
|
||||||
"head"
|
"head"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -91,7 +91,7 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getDownloadURL(platform, engine, version) {
|
function getDownloadURL(platform, engine, version) {
|
||||||
let builderPlatform = platform
|
let builderPlatform = null
|
||||||
if (platform.startsWith('windows-') && os.arch() === 'x64') {
|
if (platform.startsWith('windows-') && os.arch() === 'x64') {
|
||||||
builderPlatform = 'windows-latest'
|
builderPlatform = 'windows-latest'
|
||||||
} else if (platform.startsWith('macos-')) {
|
} else if (platform.startsWith('macos-')) {
|
||||||
@@ -100,6 +100,16 @@ function getDownloadURL(platform, engine, version) {
|
|||||||
} else if (os.arch() === 'arm64') {
|
} else if (os.arch() === 'arm64') {
|
||||||
builderPlatform = 'macos-13-arm64'
|
builderPlatform = 'macos-13-arm64'
|
||||||
}
|
}
|
||||||
|
} else if (platform.startsWith('ubuntu-')) {
|
||||||
|
if (os.arch() === 'x64') {
|
||||||
|
builderPlatform = platform
|
||||||
|
} else if (os.arch() === 'arm64') {
|
||||||
|
builderPlatform = `${platform}-arm64`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (builderPlatform === null) {
|
||||||
|
throw new Error(`Unknown download URL for platform ${platform}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (common.isHeadVersion(version)) {
|
if (common.isHeadVersion(version)) {
|
||||||
|
|||||||
@@ -71,7 +71,8 @@
|
|||||||
"3.3.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z",
|
"3.3.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z",
|
||||||
"3.3.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z",
|
"3.3.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z",
|
||||||
"3.3.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z",
|
"3.3.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z",
|
||||||
"3.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-1/rubyinstaller-3.4.1-1-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",
|
||||||
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-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",
|
"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",
|
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",
|
||||||
|
|||||||
Reference in New Issue
Block a user