mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
943103cae7 | ||
|
|
7dc18ff0ca | ||
|
|
00a1085dff | ||
|
|
868b8c0873 | ||
|
|
4f20bb7102 | ||
|
|
6615b4b8a0 | ||
|
|
82dd21cb95 | ||
|
|
cacc9f1c0b | ||
|
|
1198b07430 | ||
|
|
70da3bbf44 | ||
|
|
6bd3d993c6 | ||
|
|
5f19ec79ce | ||
|
|
d4526a5553 | ||
|
|
e9d41d6cc1 | ||
|
|
22fdc77bf4 | ||
|
|
98f8f7e659 | ||
|
|
56dbe84af1 | ||
|
|
e8677f0f39 | ||
|
|
7f2d473c10 | ||
|
|
bd03e04863 | ||
|
|
9c6c84224a | ||
|
|
5daca16544 | ||
|
|
558057564b | ||
|
|
432702e864 | ||
|
|
b203567269 | ||
|
|
c6e5aea595 | ||
|
|
360dc864d5 | ||
|
|
251b9047a8 | ||
|
|
961f85197f | ||
|
|
28f930222f | ||
|
|
df99e806d4 | ||
|
|
ff4c96868c | ||
|
|
b256bd96bb | ||
|
|
af848b40be | ||
|
|
8575951200 | ||
|
|
036ef458dd | ||
|
|
552f83fe52 |
@@ -0,0 +1,6 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: 'github-actions'
|
||||||
|
directory: '/'
|
||||||
|
schedule:
|
||||||
|
interval: 'weekly'
|
||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, macos-13, macos-arm-oss, windows-2019, windows-2022 ]
|
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-11, macos-12, macos-13, macos-14, macos-arm-oss, windows-2019, windows-2022 ]
|
||||||
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', 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', ruby-head,
|
||||||
jruby, jruby-head,
|
jruby, jruby-head,
|
||||||
@@ -33,7 +33,16 @@ jobs:
|
|||||||
exclude:
|
exclude:
|
||||||
# https://github.com/ruby/setup-ruby/issues/496
|
# https://github.com/ruby/setup-ruby/issues/496
|
||||||
- { os: ubuntu-22.04, ruby: '2.2' }
|
- { os: ubuntu-22.04, ruby: '2.2' }
|
||||||
# Too old, fails to compile on macos-arm-oss
|
- { os: ubuntu-24.04, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-24.04, ruby: '2.2' }
|
||||||
|
# These old Rubies fail to compile on macos-arm-oss (macOS 13, arm64), which is used for ruby/ruby-builder
|
||||||
|
- { os: macos-14, ruby: '1.9' }
|
||||||
|
- { os: macos-14, ruby: '2.0' }
|
||||||
|
- { os: macos-14, ruby: '2.1' }
|
||||||
|
- { os: macos-14, ruby: '2.2' }
|
||||||
|
- { os: macos-14, ruby: '2.3' }
|
||||||
|
- { os: macos-14, ruby: '2.4' }
|
||||||
|
- { os: macos-14, ruby: '2.5' }
|
||||||
- { os: macos-arm-oss, ruby: '1.9' }
|
- { os: macos-arm-oss, ruby: '1.9' }
|
||||||
- { os: macos-arm-oss, ruby: '2.0' }
|
- { os: macos-arm-oss, ruby: '2.0' }
|
||||||
- { os: macos-arm-oss, ruby: '2.1' }
|
- { os: macos-arm-oss, ruby: '2.1' }
|
||||||
@@ -43,14 +52,12 @@ jobs:
|
|||||||
- { os: macos-arm-oss, ruby: '2.5' }
|
- { os: macos-arm-oss, ruby: '2.5' }
|
||||||
# Windows
|
# Windows
|
||||||
- { os: windows-2019, ruby: '1.9' }
|
- { os: windows-2019, ruby: '1.9' }
|
||||||
- { os: windows-2019, ruby: '3.3' }
|
|
||||||
- { os: windows-2019, ruby: debug }
|
- { os: windows-2019, ruby: debug }
|
||||||
- { os: windows-2019, ruby: truffleruby }
|
- { os: windows-2019, ruby: truffleruby }
|
||||||
- { os: windows-2019, ruby: truffleruby-head }
|
- { os: windows-2019, ruby: truffleruby-head }
|
||||||
- { os: windows-2019, ruby: truffleruby+graalvm }
|
- { os: windows-2019, ruby: truffleruby+graalvm }
|
||||||
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
||||||
- { os: windows-2022, ruby: '1.9' }
|
- { os: windows-2022, ruby: '1.9' }
|
||||||
- { os: windows-2022, ruby: '3.3' }
|
|
||||||
- { os: windows-2022, ruby: debug }
|
- { os: windows-2022, ruby: debug }
|
||||||
- { os: windows-2022, ruby: truffleruby }
|
- { os: windows-2022, ruby: truffleruby }
|
||||||
- { os: windows-2022, ruby: truffleruby-head }
|
- { os: windows-2022, ruby: truffleruby-head }
|
||||||
@@ -169,15 +176,26 @@ jobs:
|
|||||||
- run: ruby -v
|
- run: ruby -v
|
||||||
|
|
||||||
testLatestRubygemsVersion:
|
testLatestRubygemsVersion:
|
||||||
name: "Test rubygems: latest upgrades the default RubyGems version"
|
name: "Test rubygems: latest on ${{ matrix.ruby }}"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- { ruby: '3.2', expected_rubygems_version: '3.5.3' }
|
||||||
|
- { ruby: '3.0', expected_rubygems_version: '3.5.3' }
|
||||||
|
- { ruby: '2.7', expected_rubygems_version: '3.4.22' }
|
||||||
|
- { ruby: '2.6', expected_rubygems_version: '3.4.22' }
|
||||||
|
- { ruby: '2.5', expected_rubygems_version: '3.3.27' }
|
||||||
|
- { ruby: '2.3', expected_rubygems_version: '3.3.27' }
|
||||||
|
- { ruby: '2.0', expected_rubygems_version: '2.7.11' }
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: ./
|
- uses: ./
|
||||||
with:
|
with:
|
||||||
ruby-version: '2.6'
|
ruby-version: ${{ matrix.ruby }}
|
||||||
rubygems: latest
|
rubygems: latest
|
||||||
- run: ruby -e "exit(Gem.rubygems_version > Gem::Version.new('3.0.3'))"
|
- run: ruby -e 'puts Gem::VERSION; exit(Gem.rubygems_version >= Gem::Version.new("${{ matrix.expected_rubygems_version }}"))'
|
||||||
|
|
||||||
testFixedRubygemsVersionUpgrades:
|
testFixedRubygemsVersionUpgrades:
|
||||||
name: "Test rubygems: version upgrades RubyGems to that version if the default is older"
|
name: "Test rubygems: version upgrades RubyGems to that version if the default is older"
|
||||||
@@ -324,6 +342,19 @@ jobs:
|
|||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
- run: bundle list | grep nokogiri
|
- run: bundle list | grep nokogiri
|
||||||
|
|
||||||
|
testWindowsToolchain:
|
||||||
|
name: "Test windows-toolchain: none"
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./
|
||||||
|
with:
|
||||||
|
ruby-version: '2.7'
|
||||||
|
windows-toolchain: none
|
||||||
|
bundler: none
|
||||||
|
- name: C:/msys64/mingw64/bin/gcc.exe not installed
|
||||||
|
run: ruby -e "abort if File.exist?('C:/msys64/mingw64/bin/gcc.exe')"
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
ruby-2.6.5
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
nodejs 16.0.0
|
|
||||||
ruby 2.7.0
|
|
||||||
@@ -15,10 +15,10 @@ 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.3.0-preview2, 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.0-preview1, head, debug, mingw, mswin, ucrt |
|
||||||
| `jruby` | 9.1.17.0 - 9.4.4.0, head |
|
| `jruby` | 9.1.17.0 - 9.4.7.0, head |
|
||||||
| `truffleruby` | 19.3.0 - 23.1.1, head |
|
| `truffleruby` | 19.3.0 - 24.0.1, head |
|
||||||
| `truffleruby+graalvm` | 21.2.0 - 23.1.1, head |
|
| `truffleruby+graalvm` | 21.2.0 - 24.0.1, 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`).
|
||||||
|
|
||||||
@@ -38,12 +38,12 @@ which means Ruby ≤ 2.4 is unmaintained and considered insecure.
|
|||||||
|
|
||||||
### Supported Platforms
|
### Supported Platforms
|
||||||
|
|
||||||
The action works on these [GitHub-hosted runners](https://docs.github.com/en/actions/using-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/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.
|
||||||
|
|
||||||
| Operating System | Supported |
|
| Operating System | Supported |
|
||||||
| ---------------- | --------- |
|
| ---------------- | --------- |
|
||||||
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.04` |
|
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.04`, `ubuntu-24.04` |
|
||||||
| macOS | `macos-11`, `macos-12`, `macos-13`, `macos-13-xlarge` (arm64) |
|
| macOS | `macos-11`, `macos-12`, `macos-13`, `macos-14` |
|
||||||
| Windows | `windows-2019`, `windows-2022` |
|
| Windows | `windows-2019`, `windows-2022` |
|
||||||
|
|
||||||
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
|
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
|
||||||
@@ -70,7 +70,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.2' # Not needed with a .ruby-version file
|
ruby-version: '3.3' # Not needed with a .ruby-version file
|
||||||
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
|
||||||
```
|
```
|
||||||
@@ -89,7 +89,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest]
|
os: [ubuntu-latest, macos-latest]
|
||||||
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
# 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', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -118,7 +118,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.2'
|
ruby-version: '3.3'
|
||||||
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
|
||||||
```
|
```
|
||||||
|
|||||||
+11
-1
@@ -12,7 +12,8 @@ inputs:
|
|||||||
description: |
|
description: |
|
||||||
The version of RubyGems to use. Either 'default' (the default), 'latest', or a version number (e.g., 3.3.5).
|
The version of RubyGems to use. Either 'default' (the default), 'latest', or a version number (e.g., 3.3.5).
|
||||||
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
|
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
|
||||||
For 'latest', `gem update --system` is run to update to the latest RubyGems version.
|
For 'latest', `gem update --system` is run to update to the latest compatible RubyGems version.
|
||||||
|
Ruby head/master builds will not be updated.
|
||||||
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
|
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
|
||||||
bundler:
|
bundler:
|
||||||
description: |
|
description: |
|
||||||
@@ -35,6 +36,15 @@ inputs:
|
|||||||
Consider the runner as a self-hosted runner, which means not using prebuilt Ruby binaries which only work
|
Consider the runner as a self-hosted runner, which means not using prebuilt Ruby binaries which only work
|
||||||
on GitHub-hosted runners or self-hosted runners with a very similar image to the ones used by GitHub runners.
|
on GitHub-hosted runners or self-hosted runners with a very similar image to the ones used by GitHub runners.
|
||||||
The default is to detect this automatically based on the OS, OS version and architecture.
|
The default is to detect this automatically based on the OS, OS version and architecture.
|
||||||
|
windows-toolchain:
|
||||||
|
description: |
|
||||||
|
This input allows to override the default toolchain setup on Windows.
|
||||||
|
The default setting ('default') installs a toolchain based on the selected Ruby.
|
||||||
|
Specifically, it installs MSYS2 if not already there and installs mingw/ucrt/mswin build tools and packages.
|
||||||
|
It also sets environment variables using 'ridk' or 'vcvars64.bat' based on the selected Ruby.
|
||||||
|
At present, the only other setting than 'default' is 'none', which only adds Ruby to PATH.
|
||||||
|
No build tools or packages are installed, nor are any ENV setting changed to activate them.
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
ruby-prefix:
|
ruby-prefix:
|
||||||
description: 'The prefix of the installed ruby'
|
description: 'The prefix of the installed ruby'
|
||||||
|
|||||||
@@ -165,10 +165,13 @@ 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-24.04-x64',
|
||||||
'macos-11-x64',
|
'macos-11-x64',
|
||||||
'macos-12-x64',
|
'macos-12-x64',
|
||||||
'macos-13-x64',
|
'macos-13-x64',
|
||||||
'macos-13-arm64',
|
'macos-13-arm64',
|
||||||
|
'macos-14-x64',
|
||||||
|
'macos-14-arm64',
|
||||||
'windows-2019-x64',
|
'windows-2019-x64',
|
||||||
'windows-2022-x64',
|
'windows-2022-x64',
|
||||||
]
|
]
|
||||||
@@ -341,7 +344,8 @@ export function setupPath(newPathEntries) {
|
|||||||
|
|
||||||
// Then add new path entries using core.addPath()
|
// Then add new path entries using core.addPath()
|
||||||
let newPath
|
let newPath
|
||||||
if (windows) {
|
const windowsToolchain = core.getInput('windows-toolchain')
|
||||||
|
if (windows && windowsToolchain !== 'none') {
|
||||||
// main Ruby dll determines whether mingw or ucrt build
|
// main Ruby dll determines whether mingw or ucrt build
|
||||||
msys2Type = rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64'
|
msys2Type = rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64'
|
||||||
|
|
||||||
|
|||||||
+61
-29
File diff suppressed because one or more lines are too long
@@ -17,6 +17,7 @@ const inputDefaults = {
|
|||||||
'working-directory': '.',
|
'working-directory': '.',
|
||||||
'cache-version': bundler.DEFAULT_CACHE_VERSION,
|
'cache-version': bundler.DEFAULT_CACHE_VERSION,
|
||||||
'self-hosted': 'false',
|
'self-hosted': 'false',
|
||||||
|
'windows-toolchain': 'default',
|
||||||
}
|
}
|
||||||
|
|
||||||
// entry point when this action is run on its own
|
// entry point when this action is run on its own
|
||||||
@@ -30,6 +31,9 @@ export async function run() {
|
|||||||
core.setFailed(error.stack)
|
core.setFailed(error.stack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Explicit process.exit() to not wait hanging promises,
|
||||||
|
// see https://github.com/ruby/setup-ruby/issues/543
|
||||||
|
process.exit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// entry point when this action is run from other actions
|
// entry point when this action is run from other actions
|
||||||
@@ -75,7 +79,7 @@ export async function setupRuby(options = {}) {
|
|||||||
const rubygemsInputSet = inputs['rubygems'] !== 'default'
|
const rubygemsInputSet = inputs['rubygems'] !== 'default'
|
||||||
if (rubygemsInputSet) {
|
if (rubygemsInputSet) {
|
||||||
await common.measure('Updating RubyGems', async () =>
|
await common.measure('Updating RubyGems', async () =>
|
||||||
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix))
|
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix, platform, engine, version))
|
||||||
}
|
}
|
||||||
|
|
||||||
// When setup-ruby is used by other actions, this allows code in them to run
|
// When setup-ruby is used by other actions, this allows code in them to run
|
||||||
|
|||||||
@@ -9,17 +9,18 @@
|
|||||||
"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.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.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",
|
"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.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.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5",
|
||||||
"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.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.3.0-preview1", "3.3.0-preview2",
|
"3.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1",
|
||||||
|
"3.4.0-preview1",
|
||||||
"head", "debug"
|
"head", "debug"
|
||||||
],
|
],
|
||||||
"jruby": [
|
"jruby": [
|
||||||
"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.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.4.0.0", "9.4.1.0", "9.4.2.0", "9.4.3.0", "9.4.4.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",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"truffleruby": [
|
"truffleruby": [
|
||||||
@@ -27,13 +28,15 @@
|
|||||||
"20.0.0", "20.1.0", "20.2.0", "20.3.0",
|
"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",
|
"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.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
|
||||||
|
"24.0.0", "24.0.1",
|
||||||
"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.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
|
||||||
|
"24.0.0", "24.0.1",
|
||||||
"head"
|
"head"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-21
@@ -51,31 +51,18 @@ export async function install(platform, engine, version) {
|
|||||||
|
|
||||||
if (!inToolCache) {
|
if (!inToolCache) {
|
||||||
await io.mkdirP(rubyPrefix)
|
await io.mkdirP(rubyPrefix)
|
||||||
if (engine === 'truffleruby+graalvm') {
|
await downloadAndExtract(platform, engine, version, rubyPrefix)
|
||||||
await installWithRubyBuild(engine, version, rubyPrefix)
|
}
|
||||||
} else {
|
|
||||||
await downloadAndExtract(platform, engine, version, rubyPrefix)
|
// https://github.com/oracle/truffleruby/issues/3390
|
||||||
}
|
if (engine.startsWith('truffleruby') && common.floatVersion(version) >= 24.0 && !common.isSelfHostedRunner() && common.getOSNameVersionArch() === 'macos-12-x64') {
|
||||||
|
console.log('Setting MACOSX_DEPLOYMENT_TARGET=11.0 to workaround bug in XCode 14.2 linker not respecting RTLD_LAZY, see https://github.com/oracle/truffleruby/issues/3390')
|
||||||
|
core.exportVariable('MACOSX_DEPLOYMENT_TARGET', '11.0')
|
||||||
}
|
}
|
||||||
|
|
||||||
return rubyPrefix
|
return rubyPrefix
|
||||||
}
|
}
|
||||||
|
|
||||||
async function installWithRubyBuild(engine, version, rubyPrefix) {
|
|
||||||
const tmp = process.env['RUNNER_TEMP'] || os.tmpdir()
|
|
||||||
const rubyBuildDir = path.join(tmp, 'ruby-build-for-setup-ruby')
|
|
||||||
await common.measure('Cloning ruby-build', async () => {
|
|
||||||
await exec.exec('git', ['clone', 'https://github.com/rbenv/ruby-build.git', rubyBuildDir])
|
|
||||||
})
|
|
||||||
|
|
||||||
const rubyName = `${engine}-${version === 'head' ? 'dev' : version}`
|
|
||||||
await common.measure(`Installing ${engine}-${version} with ruby-build`, async () => {
|
|
||||||
await exec.exec(`${rubyBuildDir}/bin/ruby-build`, [rubyName, rubyPrefix])
|
|
||||||
})
|
|
||||||
|
|
||||||
await io.rmRF(rubyBuildDir)
|
|
||||||
}
|
|
||||||
|
|
||||||
async function downloadAndExtract(platform, engine, version, rubyPrefix) {
|
async function downloadAndExtract(platform, engine, version, rubyPrefix) {
|
||||||
const parentDir = path.dirname(rubyPrefix)
|
const parentDir = path.dirname(rubyPrefix)
|
||||||
|
|
||||||
@@ -119,5 +106,9 @@ function getDownloadURL(platform, engine, version) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getLatestHeadBuildURL(platform, engine, version) {
|
function getLatestHeadBuildURL(platform, engine, version) {
|
||||||
return `https://github.com/ruby/${engine}-dev-builder/releases/latest/download/${engine}-${version}-${platform}.tar.gz`
|
var repo = `${engine}-dev-builder`
|
||||||
|
if (engine === 'truffleruby+graalvm') {
|
||||||
|
repo = 'truffleruby-dev-builder'
|
||||||
|
}
|
||||||
|
return `https://github.com/ruby/${repo}/releases/latest/download/${engine}-${version}-${platform}.tar.gz`
|
||||||
}
|
}
|
||||||
|
|||||||
+30
-2
@@ -1,8 +1,9 @@
|
|||||||
|
const common = require('./common')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const exec = require('@actions/exec')
|
const exec = require('@actions/exec')
|
||||||
const semver = require('semver')
|
const semver = require('semver')
|
||||||
|
|
||||||
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix, platform, engine, rubyVersion) {
|
||||||
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
||||||
|
|
||||||
let gemVersion = ''
|
let gemVersion = ''
|
||||||
@@ -18,7 +19,7 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
|||||||
|
|
||||||
if (rubygemsVersionInput === 'latest') {
|
if (rubygemsVersionInput === 'latest') {
|
||||||
console.log('Updating RubyGems to latest version')
|
console.log('Updating RubyGems to latest version')
|
||||||
await exec.exec(gem, ['update', '--system'])
|
await rubygemsLatest(gem, platform, engine, rubyVersion)
|
||||||
} else if (semver.gt(rubygemsVersionInput, gemVersion)) {
|
} else if (semver.gt(rubygemsVersionInput, gemVersion)) {
|
||||||
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
|
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
|
||||||
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
|
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
|
||||||
@@ -28,3 +29,30 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Older RubyGems versions do not account for 'required_ruby_version' when
|
||||||
|
// running 'gem update --system', so we have to force a compatible version of
|
||||||
|
// rubygems-update. See https://github.com/ruby/setup-ruby/pull/551 and
|
||||||
|
// https://github.com/rubygems/rubygems/issues/7329
|
||||||
|
async function rubygemsLatest(gem, platform, engine, rubyVersion) {
|
||||||
|
if (engine === 'ruby') {
|
||||||
|
const floatVersion = common.floatVersion(rubyVersion)
|
||||||
|
if (common.isHeadVersion(rubyVersion)) {
|
||||||
|
console.log('Ruby master builds use included RubyGems')
|
||||||
|
} else if (floatVersion >= 3.0) {
|
||||||
|
await exec.exec(gem, ['update', '--system'])
|
||||||
|
} else if (floatVersion >= 2.6) {
|
||||||
|
await exec.exec(gem, ['update', '--system', '3.4.22'])
|
||||||
|
} else if (floatVersion >= 2.3) {
|
||||||
|
await exec.exec(gem, ['update', '--system', '3.3.27'])
|
||||||
|
} else if (floatVersion >= 1.9) {
|
||||||
|
await exec.exec(`${gem} install rubygems-update -v 2.7.11 --no-document`)
|
||||||
|
await exec.exec('update_rubygems')
|
||||||
|
} else {
|
||||||
|
console.log(`Cannot update RubyGems for Ruby version ${rubyVersion}`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// non MRI Rubies (TruffleRuby and JRuby)
|
||||||
|
await exec.exec(gem, ['update', '--system'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -49,14 +49,20 @@
|
|||||||
"3.0.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z",
|
"3.0.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z",
|
||||||
"3.0.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z",
|
"3.0.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z",
|
||||||
"3.0.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z",
|
"3.0.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z",
|
||||||
|
"3.0.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z",
|
||||||
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
|
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
|
||||||
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z",
|
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z",
|
||||||
"3.1.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z",
|
"3.1.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z",
|
||||||
"3.1.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z",
|
"3.1.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z",
|
||||||
"3.1.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z",
|
"3.1.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z",
|
||||||
|
"3.1.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z",
|
||||||
"3.2.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z",
|
"3.2.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z",
|
||||||
"3.2.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z",
|
"3.2.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z",
|
||||||
"3.2.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z",
|
"3.2.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z",
|
||||||
|
"3.2.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z",
|
||||||
|
"3.2.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z",
|
||||||
|
"3.3.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z",
|
||||||
|
"3.3.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-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",
|
||||||
|
|||||||
+7
-2
@@ -65,12 +65,17 @@ export async function install(platform, engine, version) {
|
|||||||
rubyPrefix = `${drive}:\\${base}`
|
rubyPrefix = `${drive}:\\${base}`
|
||||||
}
|
}
|
||||||
|
|
||||||
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
|
|
||||||
|
|
||||||
if (!inToolCache) {
|
if (!inToolCache) {
|
||||||
await downloadAndExtract(engine, version, url, base, rubyPrefix);
|
await downloadAndExtract(engine, version, url, base, rubyPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const windowsToolchain = core.getInput('windows-toolchain')
|
||||||
|
if (windowsToolchain === 'none') {
|
||||||
|
common.setupPath([`${rubyPrefix}\\bin`])
|
||||||
|
return rubyPrefix
|
||||||
|
}
|
||||||
|
|
||||||
|
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
|
||||||
const msys2Type = common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
|
const msys2Type = common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
|
||||||
|
|
||||||
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4
|
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4
|
||||||
|
|||||||
Reference in New Issue
Block a user