Compare commits

...
28 Commits
Author SHA1 Message Date
ruby-builder-bot 5f19ec79ce Add truffleruby-24.0.0,truffleruby+graalvm-24.0.0 2024-03-19 17:12:25 +01:00
ruby-builder-bot d4526a5553 Add jruby-9.3.14.0,jruby-9.4.6.0 2024-02-21 11:49:15 +01:00
Benoit Daloze e9d41d6cc1 Added dependabot for GitHub Actions 2024-02-17 12:27:49 +01:00
Benoit Daloze 22fdc77bf4 Clarify comment in test.yml 2024-01-31 16:00:45 +01:00
なつき 98f8f7e659 Update README.md 2024-01-31 15:57:37 +01:00
なつき 56dbe84af1 Add support for macos-14-x64 GitHub runners 2024-01-31 15:57:37 +01:00
なつき e8677f0f39 Add support for macos-14-arm64 GitHub runners 2024-01-31 15:57:37 +01:00
Ståle Storø Hauknes 7f2d473c10 Update url 2024-01-31 12:20:18 +01:00
Benoit Daloze bd03e04863 Test 3.3 on Windows 2024-01-25 17:18:05 +01:00
ruby-builder-bot 9c6c84224a Update CRuby releases on Windows 2024-01-25 17:17:32 +01:00
Benoit Daloze 5daca16544 Remove default in action.yml for windows-toolchain
* Otherwise it shows up in every usage of the action even if not set.
* Consistent with other non-required inputs.
2024-01-22 11:08:37 +01:00
MSP-Greg 558057564b Add windows-toolchain input 2024-01-22 11:07:31 +01:00
ruby-builder-bot 432702e864 Add ruby-3.2.3 2024-01-19 11:31:38 +01:00
Benoit Daloze b203567269 Workaround bug in XCode 14.2 linker not respecting RTLD_LAZY
* See https://github.com/oracle/truffleruby/issues/3390
2024-01-16 16:42:00 +01:00
ruby-builder-bot c6e5aea595 Add truffleruby-23.1.2,truffleruby+graalvm-23.1.2 2024-01-16 16:21:06 +01:00
Benoit Daloze 360dc864d5 Shorten job title to fit in GH UI 2023-12-28 12:21:45 +01:00
MSP-Greg 251b9047a8 Fixup rubygems: latest to work with Rubies < 2.3 2023-12-28 13:20:54 +02:00
Benoit Daloze 961f85197f Rename workflow and variable for clarity 2023-12-27 20:27:45 +01:00
MSP-Greg 28f930222f Fixup Rubygems latest 2023-12-27 21:23:02 +02:00
ruby-builder-bot df99e806d4 Update CRuby releases on Windows 2023-12-27 15:38:49 +02:00
m-nakamura145 ff4c96868c Update sample ruby version in README.md 2023-12-27 15:37:28 +02:00
ruby-builder-bot b256bd96bb Add ruby-3.3.0 2023-12-25 21:48:06 +01:00
ruby-builder-bot af848b40be Add ruby-3.3.0-rc1 2023-12-11 16:12:18 +01:00
ruby-builder-bot 8575951200 Add ruby-3.3.0-preview3 2023-11-13 16:01:45 +01:00
Benoit Daloze 036ef458dd Explicitly exit after this action runs to not wait for hanging promises
* See https://github.com/ruby/setup-ruby/issues/543
2023-11-07 19:05:04 +01:00
ruby-builder-bot 552f83fe52 Add jruby-9.3.13.0,jruby-9.4.5.0 2023-11-07 18:53:58 +01:00
Róbert Papp 54a18e26db Update deprecated Node 16 to 20 2023-10-26 15:25:49 +02:00
ruby-builder-bot cd48c8e227 Add truffleruby-23.1.1,truffleruby+graalvm-23.1.1 2023-10-25 12:21:54 +02:00
12 changed files with 179 additions and 38 deletions
+6
View File
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
+36 -7
View File
@@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
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, macos-11, macos-12, macos-13, macos-14, macos-arm-oss, 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', '3.2', '3.3', ruby-head,
jruby, jruby-head,
@@ -33,7 +33,14 @@ jobs:
exclude:
# https://github.com/ruby/setup-ruby/issues/496
- { os: ubuntu-22.04, ruby: '2.2' }
# Too old, fails to compile on macos-arm-oss
# 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: '2.0' }
- { os: macos-arm-oss, ruby: '2.1' }
@@ -43,14 +50,12 @@ jobs:
- { os: macos-arm-oss, ruby: '2.5' }
# Windows
- { os: windows-2019, ruby: '1.9' }
- { os: windows-2019, ruby: '3.3' }
- { 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.3' }
- { os: windows-2022, ruby: debug }
- { os: windows-2022, ruby: truffleruby }
- { os: windows-2022, ruby: truffleruby-head }
@@ -169,15 +174,26 @@ jobs:
- run: ruby -v
testLatestRubygemsVersion:
name: "Test rubygems: latest upgrades the default RubyGems version"
name: "Test rubygems: latest on ${{ matrix.ruby }}"
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:
- uses: actions/checkout@v4
- uses: ./
with:
ruby-version: '2.6'
ruby-version: ${{ matrix.ruby }}
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:
name: "Test rubygems: version upgrades RubyGems to that version if the default is older"
@@ -324,6 +340,19 @@ jobs:
bundler-cache: true
- 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:
runs-on: ubuntu-20.04
steps:
+9 -9
View File
@@ -15,10 +15,10 @@ 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.3.0-preview2, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 9.4.4.0, head |
| `truffleruby` | 19.3.0 - 23.1.0, head |
| `truffleruby+graalvm` | 21.2.0 - 23.1.0, head |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.3.0, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 9.4.6.0, head |
| `truffleruby` | 19.3.0 - 24.0.0, head |
| `truffleruby+graalvm` | 21.2.0 - 24.0.0, head |
`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
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 |
| ---------------- | --------- |
| Ubuntu | `ubuntu-20.04`, `ubuntu-22.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` |
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
@@ -70,7 +70,7 @@ jobs:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
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
- run: bundle exec rake
```
@@ -89,7 +89,7 @@ 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', 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 }}
steps:
- uses: actions/checkout@v4
@@ -118,7 +118,7 @@ jobs:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
ruby-version: '3.3'
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake
```
+12 -2
View File
@@ -12,7 +12,8 @@ inputs:
description: |
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 '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.
bundler:
description: |
@@ -35,9 +36,18 @@ inputs:
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.
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:
ruby-prefix:
description: 'The prefix of the installed ruby'
runs:
using: 'node16'
using: 'node20'
main: 'dist/index.js'
+4 -1
View File
@@ -169,6 +169,8 @@ const GitHubHostedPlatforms = [
'macos-12-x64',
'macos-13-x64',
'macos-13-arm64',
'macos-14-x64',
'macos-14-arm64',
'windows-2019-x64',
'windows-2022-x64',
]
@@ -341,7 +343,8 @@ export function setupPath(newPathEntries) {
// Then add new path entries using core.addPath()
let newPath
if (windows) {
const windowsToolchain = core.getInput('windows-toolchain')
if (windows && windowsToolchain !== 'none') {
// main Ruby dll determines whether mingw or ucrt build
msys2Type = rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64'
Generated Vendored
+54 -8
View File
File diff suppressed because one or more lines are too long
+5 -1
View File
@@ -17,6 +17,7 @@ const inputDefaults = {
'working-directory': '.',
'cache-version': bundler.DEFAULT_CACHE_VERSION,
'self-hosted': 'false',
'windows-toolchain': 'default',
}
// entry point when this action is run on its own
@@ -30,6 +31,9 @@ export async function run() {
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
@@ -75,7 +79,7 @@ export async function setupRuby(options = {}) {
const rubygemsInputSet = inputs['rubygems'] !== 'default'
if (rubygemsInputSet) {
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
+8 -6
View File
@@ -11,15 +11,15 @@
"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.1.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.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.3.0-preview1", "3.3.0-preview2",
"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.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.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.3.10.0", "9.3.11.0",
"9.4.0.0", "9.4.1.0", "9.4.2.0", "9.4.3.0", "9.4.4.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.5.0", "9.4.6.0",
"head"
],
"truffleruby": [
@@ -27,13 +27,15 @@
"20.0.0", "20.1.0", "20.2.0", "20.3.0",
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0",
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
"23.0.0-preview1", "23.0.0", "23.1.0",
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
"24.0.0",
"head"
],
"truffleruby+graalvm": [
"21.2.0", "21.3.0",
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
"23.0.0-preview1", "23.0.0", "23.1.0",
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
"24.0.0",
"head"
]
}
+6
View File
@@ -58,6 +58,12 @@ export async function install(platform, engine, version) {
}
}
// 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
}
+30 -2
View File
@@ -1,8 +1,9 @@
const common = require('./common')
const path = require('path')
const exec = require('@actions/exec')
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')
let gemVersion = ''
@@ -18,7 +19,7 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
if (rubygemsVersionInput === 'latest') {
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)) {
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
@@ -28,3 +29,30 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
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'])
}
}
+2
View File
@@ -57,6 +57,8 @@
"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.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.3.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-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",
+7 -2
View File
@@ -65,12 +65,17 @@ export async function install(platform, engine, version) {
rubyPrefix = `${drive}:\\${base}`
}
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
if (!inToolCache) {
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])
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4