mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02c9cccf0e | ||
|
|
8d6236c5db | ||
|
|
4b2d1d631e | ||
|
|
349473288f | ||
|
|
846173692d | ||
|
|
9d93e96fe7 | ||
|
|
ee2113536a | ||
|
|
ee37499046 | ||
|
|
a5e2883296 | ||
|
|
705fe056cf | ||
|
|
8e7720ca42 | ||
|
|
7a0bff23cb | ||
|
|
c7079efafd | ||
|
|
384fc1b92f | ||
|
|
0a6498048c | ||
|
|
de6f5b9c34 | ||
|
|
4887fd8753 |
@@ -18,7 +18,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, macos-10.15, macos-11, macos-12, windows-2019, windows-2022 ]
|
||||
ruby: [ '1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ]
|
||||
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', ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ]
|
||||
include:
|
||||
- { os: windows-2019, ruby: mingw }
|
||||
- { os: windows-2019, ruby: mswin }
|
||||
@@ -27,12 +27,14 @@ jobs:
|
||||
- { os: windows-2022, ruby: ucrt }
|
||||
exclude:
|
||||
- { os: windows-2019, ruby: '1.9' }
|
||||
- { os: windows-2019, ruby: '3.2' }
|
||||
- { os: windows-2019, ruby: debug }
|
||||
- { os: windows-2019, ruby: truffleruby }
|
||||
- { os: windows-2019, ruby: truffleruby-head }
|
||||
- { os: windows-2019, ruby: truffleruby+graalvm }
|
||||
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
||||
- { os: windows-2022, ruby: '1.9' }
|
||||
- { os: windows-2022, ruby: '3.2' }
|
||||
- { os: windows-2022, ruby: debug }
|
||||
- { os: windows-2022, ruby: truffleruby }
|
||||
- { os: windows-2022, ruby: truffleruby-head }
|
||||
@@ -184,6 +186,7 @@ jobs:
|
||||
- run: gem --version | grep -F "3.3.3"
|
||||
|
||||
testUseBundlerFromRubyGemsUpdate:
|
||||
if: false # https://github.com/ruby/setup-ruby/issues/405
|
||||
name: "Test rubygems: version uses the Bundler installed by the rubygems update"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -239,6 +242,18 @@ jobs:
|
||||
bundler: 2.2.3
|
||||
- run: bundle --version | grep -F "Bundler version 2.2.3"
|
||||
|
||||
testBundlerDev:
|
||||
name: "Test BUNDLED WITH Bundler dev"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler-dev.gemfile
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: ./
|
||||
with:
|
||||
ruby-version: ruby-head
|
||||
bundler-cache: true
|
||||
|
||||
testDependencyOnBundler1:
|
||||
name: "Test gemfile depending on Bundler 1"
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -15,8 +15,8 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
||||
|
||||
| Interpreter | Versions |
|
||||
| ----------- | -------- |
|
||||
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.2.0-preview1, head, debug, mingw, mswin, ucrt |
|
||||
| `jruby` | 9.1.17.0 - 9.3.9.0, head |
|
||||
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.2.0, head, debug, mingw, mswin, ucrt |
|
||||
| `jruby` | 9.1.17.0 - 9.4.0.0, head |
|
||||
| `truffleruby` | 19.3.0 - 22.3.0, head |
|
||||
| `truffleruby+graalvm` | 21.2.0 - 22.3.0, head |
|
||||
|
||||
@@ -38,13 +38,13 @@ which means Ruby ≤ 2.4 is unmaintained and considered insecure.
|
||||
|
||||
### Supported Platforms
|
||||
|
||||
The action works on these [GitHub-hosted runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners) virtual environments. Virtual environments not listed below are unsupported.
|
||||
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.
|
||||
|
||||
| Operating System | Recommended | Other Supported Versions |
|
||||
| ---------------- | ----------- | ------------------------ |
|
||||
| Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04`, `ubuntu-22.04` |
|
||||
| macOS | `macos-latest` (= `macos-11`) | `macos-10.15`, `macos-12` |
|
||||
| Windows | `windows-latest` (= `windows-2022`) | `windows-2019` |
|
||||
| Operating System | Supported |
|
||||
| ---------------- | --------- |
|
||||
| Ubuntu | `ubuntu-18.04`, `ubuntu-20.04`, `ubuntu-22.04` |
|
||||
| macOS | `macos-10.15`, `macos-11`, `macos-12` |
|
||||
| Windows | `windows-2019`, `windows-2022` |
|
||||
|
||||
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
|
||||
and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
|
||||
@@ -132,7 +132,7 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
|
||||
* engine-version like `ruby-2.6.5` and `truffleruby-19.3.0`
|
||||
* short version like `'2.6'`, automatically using the latest release matching that version (`2.6.10`)
|
||||
* version only like `'2.6.5'`, assumes MRI for the engine
|
||||
* engine only like `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
|
||||
* `.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`
|
||||
@@ -249,7 +249,7 @@ This follows the [recommendations](https://github.com/actions/toolkit/blob/maste
|
||||
## Using self-hosted runners
|
||||
|
||||
This action might work with [self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners)
|
||||
if the [virtual environment](https://github.com/actions/virtual-environments) is very similar to the ones used by GitHub runners. Notably:
|
||||
if the [Runner Image](https://github.com/actions/runner-images) is very similar to the ones used by GitHub runners. Notably:
|
||||
|
||||
* Make sure to use the same operating system and version.
|
||||
* Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version.
|
||||
|
||||
+13
-4
@@ -6,6 +6,7 @@ const cache = require('@actions/cache')
|
||||
const common = require('./common')
|
||||
|
||||
export const DEFAULT_CACHE_VERSION = '0'
|
||||
export const BUNDLER_VERSION_REGEXP = /^\d+(?:\.\d+){0,2}$/
|
||||
|
||||
// The returned gemfile is guaranteed to exist, the lockfile might not exist
|
||||
export function detectGemfiles() {
|
||||
@@ -30,10 +31,14 @@ function readBundledWithFromGemfileLock(lockFile) {
|
||||
const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim()))
|
||||
if (bundledWithLine !== -1) {
|
||||
const nextLine = lines[bundledWithLine+1]
|
||||
if (nextLine && /^\d+/.test(nextLine.trim())) {
|
||||
if (nextLine) {
|
||||
const bundlerVersion = nextLine.trim()
|
||||
console.log(`Using Bundler ${bundlerVersion} from ${lockFile} BUNDLED WITH ${bundlerVersion}`)
|
||||
return bundlerVersion
|
||||
if (BUNDLER_VERSION_REGEXP.test(bundlerVersion)) {
|
||||
console.log(`Using Bundler ${bundlerVersion} from ${lockFile} BUNDLED WITH ${bundlerVersion}`)
|
||||
return bundlerVersion
|
||||
} else {
|
||||
console.log(`Could not parse BUNDLED WITH version as a valid Bundler release, ignoring it: ${bundlerVersion}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,13 +100,14 @@ export async function installBundler(bundlerVersionInput, rubygemsInputSet, lock
|
||||
bundlerVersion = '2'
|
||||
}
|
||||
|
||||
if (/^\d+(?:\.\d+){0,2}$/.test(bundlerVersion)) {
|
||||
if (BUNDLER_VERSION_REGEXP.test(bundlerVersion)) {
|
||||
// OK - input is a 1, 2, or 3 part version number
|
||||
} else {
|
||||
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
|
||||
}
|
||||
|
||||
// Use Bundler 1 when we know Bundler 2 does not work
|
||||
// Use Bundler 2.3 when we use Ruby 2.3.2-2.5
|
||||
if (bundlerVersion.startsWith('2')) {
|
||||
if (engine === 'ruby' && floatVersion <= 2.2) {
|
||||
console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2')
|
||||
@@ -109,6 +115,9 @@ export async function installBundler(bundlerVersionInput, rubygemsInputSet, lock
|
||||
} else if (engine === 'ruby' && /^2\.3\.[01]/.test(rubyVersion)) {
|
||||
console.log('Ruby 2.3.0 and 2.3.1 have shipped with an old rubygems that only works with Bundler 1')
|
||||
bundlerVersion = '1'
|
||||
} else if (engine === 'ruby' && floatVersion <= 2.5) {
|
||||
console.log('Ruby 2.3.2-2.5 only works with Bundler 2.3')
|
||||
bundlerVersion = '2.3'
|
||||
} else if (engine === 'jruby' && rubyVersion.startsWith('9.1')) { // JRuby 9.1 targets Ruby 2.3, treat it the same
|
||||
console.log('JRuby 9.1 has a bug with Bundler 2 (https://github.com/ruby/setup-ruby/issues/108), using Bundler 1 instead on JRuby 9.1')
|
||||
bundlerVersion = '1'
|
||||
|
||||
+16
-6
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem "path"
|
||||
@@ -0,0 +1,13 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
path (2.0.1)
|
||||
|
||||
PLATFORMS
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
path
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.0.dev
|
||||
@@ -1,62 +0,0 @@
|
||||
engine_input, version = ARGV.fetch(0).split('-', 2)
|
||||
|
||||
if engine_input == 'windows'
|
||||
require_relative 'generate-windows-versions'
|
||||
exit
|
||||
end
|
||||
|
||||
MATCH = case engine_input
|
||||
when 'ruby', 'jruby'
|
||||
/^\d+\.\d+\./
|
||||
when 'truffleruby'
|
||||
/^\d+\./
|
||||
end
|
||||
|
||||
raise unless version[MATCH]
|
||||
|
||||
engines = [engine_input]
|
||||
engines << 'truffleruby+graalvm' if engine_input == 'truffleruby'
|
||||
|
||||
engines.each do |engine|
|
||||
puts engine
|
||||
|
||||
# Update ruby-builder-versions.json
|
||||
file = "#{__dir__}/ruby-builder-versions.json"
|
||||
lines = File.readlines(file, chomp: true)
|
||||
|
||||
from = lines.index { |line| line.include?(%{"#{engine}": [}) }
|
||||
raise "Could not find start of #{engine}" unless from
|
||||
to = from
|
||||
to += 1 until lines[to].include?(']')
|
||||
|
||||
from += 1 # [
|
||||
to -= 2 # head, ]
|
||||
|
||||
puts lines[from..to]
|
||||
|
||||
release_line = lines[from..to].find { |line|
|
||||
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH]
|
||||
}
|
||||
|
||||
if release_line
|
||||
append = " #{version.inspect},"
|
||||
release_line << append unless release_line.end_with?(append)
|
||||
else
|
||||
lines.insert to+1, " #{version.inspect},"
|
||||
end
|
||||
|
||||
File.write(file, lines.join("\n") + "\n")
|
||||
|
||||
# Update README.md
|
||||
file = "#{__dir__}/README.md"
|
||||
lines = File.readlines(file)
|
||||
engine_line = lines.find { |line| line.start_with?("| `#{engine}`") }
|
||||
engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+)/) do
|
||||
if Gem::Version.new(version) > Gem::Version.new($2)
|
||||
"#{$1} #{version}"
|
||||
else
|
||||
$&
|
||||
end
|
||||
end
|
||||
File.write(file, lines.join)
|
||||
end
|
||||
@@ -0,0 +1,65 @@
|
||||
versions = ARGV.fetch(0).split(',').map(&:strip)
|
||||
versions.each do |engine_version|
|
||||
engine_input, version = engine_version.split('-', 2)
|
||||
|
||||
if engine_input == 'windows'
|
||||
require_relative 'generate-windows-versions'
|
||||
exit
|
||||
end
|
||||
|
||||
MATCH = case engine_input
|
||||
when 'ruby', 'jruby'
|
||||
/^\d+\.\d+\./
|
||||
when 'truffleruby'
|
||||
/^\d+\./
|
||||
end
|
||||
|
||||
raise unless version[MATCH]
|
||||
|
||||
engines = [engine_input]
|
||||
engines << 'truffleruby+graalvm' if engine_input == 'truffleruby'
|
||||
|
||||
engines.each do |engine|
|
||||
puts engine
|
||||
|
||||
# Update ruby-builder-versions.json
|
||||
file = "#{__dir__}/ruby-builder-versions.json"
|
||||
lines = File.readlines(file, chomp: true)
|
||||
|
||||
from = lines.index { |line| line.include?(%{"#{engine}": [}) }
|
||||
raise "Could not find start of #{engine}" unless from
|
||||
to = from
|
||||
to += 1 until lines[to].include?(']')
|
||||
|
||||
from += 1 # [
|
||||
to -= 2 # head, ]
|
||||
|
||||
puts lines[from..to]
|
||||
|
||||
release_line = lines[from..to].find { |line|
|
||||
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH]
|
||||
}
|
||||
|
||||
if release_line
|
||||
append = " #{version.inspect},"
|
||||
release_line << append unless release_line.end_with?(append)
|
||||
else
|
||||
lines.insert to+1, " #{version.inspect},"
|
||||
end
|
||||
|
||||
File.write(file, lines.join("\n") + "\n")
|
||||
|
||||
# Update README.md
|
||||
file = "#{__dir__}/README.md"
|
||||
lines = File.readlines(file)
|
||||
engine_line = lines.find { |line| line.start_with?("| `#{engine}`") }
|
||||
engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+(?:-\w+)?)/) do
|
||||
if Gem::Version.new(version) > Gem::Version.new($2)
|
||||
"#{$1} #{version}"
|
||||
else
|
||||
$&
|
||||
end
|
||||
end
|
||||
File.write(file, lines.join)
|
||||
end
|
||||
end
|
||||
@@ -8,16 +8,17 @@
|
||||
"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",
|
||||
"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.1.0-preview1", "3.1.0", "3.1.1", "3.1.2",
|
||||
"3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3",
|
||||
"2.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4", "2.7.5", "2.7.6", "2.7.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.1.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3",
|
||||
"3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3", "3.2.0-rc1", "3.2.0",
|
||||
"head", "debug"
|
||||
],
|
||||
"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.4.0.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby": [
|
||||
|
||||
@@ -40,14 +40,17 @@
|
||||
"2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z",
|
||||
"2.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z",
|
||||
"2.7.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z",
|
||||
"2.7.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z",
|
||||
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z",
|
||||
"3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z",
|
||||
"3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z",
|
||||
"3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-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.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.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",
|
||||
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
|
||||
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
|
||||
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",
|
||||
|
||||
Reference in New Issue
Block a user