Compare commits

..
887 Commits
Author SHA1 Message Date
ruby-builder-bot 003a5c4d8d Add ruby-3.3.12 2026-07-15 23:09:33 -07:00
ruby-builder-bot 8e41b362d2 Update CRuby releases on Windows 2026-07-14 21:55:25 +02:00
ruby-builder-bot 6e5d382445 Add ruby-4.0.6 2026-07-13 23:05:47 -07:00
ruby-builder-bot d45b1a4e94 Update CRuby releases on Windows 2026-07-02 12:32:59 -07:00
ruby-builder-bot 0dafeac902 Add ruby-3.4.10 2026-06-30 07:51:33 -07:00
dependabot[bot] bf35c27edc Bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-29 09:59:14 -07:00
Benoit Daloze 9eb537ca03 Add support for ubuntu-26.04 and ubuntu-26.04-arm 2026-06-20 15:21:29 +02:00
Benoit Daloze e1a3b100ca Improve versions-strings-for-builder.rb 2026-06-20 15:21:29 +02:00
Benoit Daloze 0df5288f06 Remove gem install sassc on Windows JRuby
* It's quite slow and sassc is EOL.
2026-06-20 13:14:10 +02:00
ruby-builder-bot 89f90524b8 Add jruby-10.0.6.0 2026-06-11 11:13:12 -07:00
Thomas Countz 12fd324f1d Use BUNDLE_LOCKFILE when detecting the lockfile
Honor `BUNDLE_LOCKFILE` (added in Bundler 4) when selecting the lockfile used
for Bundler version detection, deployment mode, and bundler-cache keys. Without
this, workflows using an alternate lockfile can read the wrong `BUNDLED WITH`
version and generate cache keys from the wrong lockfile.
2026-06-08 22:30:58 +02:00
ruby-builder-bot a99ac84464 Add jruby-9.4.15.0 2026-06-08 21:17:07 +02:00
ruby-builder-bot afeafc3d1a Add ruby-4.0.5 2026-05-20 20:08:03 +00:00
ruby-builder-bot 28c65f7bd3 Update CRuby releases on Windows 2026-05-20 19:47:54 +00:00
ruby-builder-bot 97ecb7b512 Update CRuby releases on Windows 2026-05-16 19:34:56 +00:00
ruby-builder-bot 6aaa311d81 Add ruby-4.0.4 2026-05-11 22:28:54 +00:00
Yuki Fukuma f02c009132 Fix docs.github.com URLs to avoid 301 redirects 2026-04-29 23:04:59 +02:00
Yuki Fukuma 98bfeb1244 Remove EOL Ruby versions from matrix example in README 2026-04-29 23:04:59 +02:00
Yuki Fukuma 59a7680cc6 Update Ruby version examples in README to include 4.0 2026-04-29 23:04:59 +02:00
Yuki Fukuma 6459287fd0 Replace outdated help.github.com URLs with docs.github.com 2026-04-29 23:04:59 +02:00
ruby-builder-bot c4e5b13161 Add truffleruby-34.0.1,truffleruby+graalvm-34.0.1 2026-04-26 23:43:00 +02:00
ruby-builder-bot 0cb964fd54 Update CRuby releases on Windows 2026-04-21 21:44:22 +02:00
ruby-builder-bot 94e4d89d3e Add jruby-10.1.0.0 2026-04-21 14:25:36 +00:00
ruby-builder-bot 60ecfba875 Add ruby-4.0.3 2026-04-21 14:19:08 +00:00
Benoit Daloze 7372622e62 Give a better error for TruffleRuby 34+ on macOS Intel 2026-04-16 00:15:48 +02:00
Benoit Daloze 4c56a21280 Darwin-x86_64 is no longer supported on TruffleRuby 34+
* See https://github.com/truffleruby/truffleruby/issues/4011
2026-04-12 14:35:39 +02:00
ruby-builder-bot 5d9c71d71b Add truffleruby-34.0.0,truffleruby+graalvm-34.0.0 2026-04-12 14:35:39 +02:00
ruby-builder-bot e65c17d16e Add jruby-10.0.5.0 2026-04-06 21:09:59 +02:00
なつき ba696adf55 Refactor matrix script 2026-03-27 23:08:30 +00:00
Benoit Daloze 2327de0bdc TruffleRuby 34+ does not support macOS Intel 2026-03-27 23:36:29 +01:00
ruby-builder-bot 3ff19f5e2b Update CRuby releases on Windows 2026-03-27 21:34:20 +01:00
ruby-builder-bot 4dc28cf14d Add ruby-3.2.11 2026-03-27 01:19:02 +00:00
ruby-builder-bot c515ec17f6 Update CRuby releases on Windows 2026-03-26 14:59:51 +01:00
ruby-builder-bot eab2afb994 Add ruby-3.3.11 2026-03-26 05:00:29 +00:00
Benoit Daloze 97b3338466 Mention all maintainers in check-new-windows-versions for consistency 2026-03-17 20:33:23 +01:00
ruby-builder-bot 319994f95f Update CRuby releases on Windows 2026-03-17 19:30:13 +00:00
ruby-builder-bot c984c1a20b Add ruby-4.0.2 2026-03-17 00:01:45 +00:00
ruby-builder-bot dffb23f65a Update CRuby releases on Windows 2026-03-14 14:24:47 +00:00
Charles Oliver Nutter ea73ddb198 Update README to remove JRuby version notes
* JRuby 9.2.x has been EOL for a very long time, so there's no value in telling people to use a newer version.
* https://github.com/jruby/jruby/issues/7106 was resolved with JRuby 9.4.0.0. All prior versions are EOL.
* https://github.com/jruby/jruby/issues/7182 was determined to be a JDK issue and no longer occurs with more recent builds.
2026-03-11 20:25:53 +01:00
Benoit Daloze 4eb9f110ba Update Node to 24
* There are warnings for Node 20 now, see
  https://github.com/ruby/setup-ruby/issues/806#issuecomment-4038240742
* Node 20 is deprecated now and EOL in April 2026.
  Node 24 has been available for a long time, so no runners should lack node24.
  See https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
* For very old runners without node24 it's still possible to
  force using node20 with `ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION=20`.
  See also the blog post above.
2026-03-11 13:31:38 +01:00
ruby-builder-bot 9d13dd6ce2 Add ruby-3.4.9 2026-03-11 13:03:14 +01:00
Jānis Baiža 6ca151fd1b Leave only basic comment about env variable change 2026-03-06 13:30:33 +00:00
Jānis Baiža 74138471e3 Set HOME variable from OS information 2026-03-06 13:30:33 +00:00
Jānis Baiža b3cff1b264 Add support for Windows Server Standard Evaluation
blacksmith.sh runners use "Windows Server 2025 Standard Evaluation".
2026-03-06 13:30:33 +00:00
ruby-builder-bot 19a43a6a24 Add jruby-10.0.4.0 2026-03-04 19:40:08 +00:00
dependabot[bot] 896e71e063 Bump fast-xml-parser from 5.3.6 to 5.4.1
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.6 to 5.4.1.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.6...v5.4.1)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.4.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 03:24:53 +00:00
dependabot[bot] 0fa965176e Bump minimatch from 3.1.2 to 3.1.4
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.4.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 01:07:54 +00:00
dependabot[bot] 19a9babd00 Bump fast-xml-parser from 5.3.4 to 5.3.6
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.4 to 5.3.6.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.4...v5.3.6)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 05:34:12 +00:00
Benoit Daloze 7f562e2882 Update Credits in README 2026-02-03 20:10:05 +01:00
Benoit Daloze 0fc657d48d Document the role of the setup-ruby release team and maintainers 2026-02-03 20:10:05 +01:00
dependabot[bot] 9fd324aef7 Bump fast-xml-parser from 5.3.3 to 5.3.4
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 11:09:08 +01:00
Benoit Daloze 0f5cc21a92 Use actions/checkout@v6 in README too 2026-02-03 10:58:48 +01:00
dependabot[bot] 2a50164d0e Bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 10:58:15 +01:00
Benoit Daloze 14a4f5d1cc looks -> is 2026-02-03 10:47:16 +01:00
ruby-builder-bot 09a7688d3b Add jruby-10.0.3.0 2026-02-03 10:00:07 +01:00
Benoit Daloze 67178a2693 Improve the automated PR description 2026-02-02 19:36:35 +01:00
Benoit Daloze ede5b7227f Shorten workflow name 2026-02-02 17:00:21 +01:00
Benoit Daloze aaddd6855e new-versions.rb is no longer used for RubyInstaller releases 2026-02-02 16:57:51 +01:00
Benoit Daloze c7aa9f4008 Move check-new-windows-versions.yml workflow from ruby/ruby-builder to ruby/setup-ruby 2026-02-02 16:57:38 +01:00
Yi-Jyun PanandRiley Ho 8d27f39a5e Improve the mise.toml parser to conform to the TOML specification
Fixed #867 ("mise.toml parser fails when ruby line contains
end-of-line comments")

Co-authored-by: Riley Ho <riley@rileychh.dev>
2026-01-30 15:50:30 +01:00
ruby-builder-bot 90be1154f9 Add truffleruby-33.0.1,truffleruby+graalvm-33.0.1 2026-01-21 20:34:30 +01:00
Benoit Daloze e69dcf3ded Update all dependencies to latest 2026-01-20 14:29:32 +01:00
Benoit Daloze 9f5530874d Convert to String earlier in generate-windows-versions.rb 2026-01-18 23:11:22 +01:00
Lars Kanis 80740b3b13 Add new RubyInstaller releases 4.0.1-1 and 3.2.10-1 2026-01-18 22:55:12 +01:00
Lars Kanis 5fcbc91943 Fix compatibility to ruby-3.2
... which is the default ruby version on Github Actions.
2026-01-18 22:55:12 +01:00
ruby-builder-bot 708024e6c9 Add ruby-3.2.10 2026-01-14 15:59:44 +01:00
Benoit Daloze 757ecf59ea Give a proper name to CI jobs checking generated files 2026-01-13 11:06:41 +01:00
Benoit Daloze 6963d48fc7 Use Regexp.escape to not need to manually escape (error-prone) 2026-01-13 11:06:41 +01:00
Benoit Daloze 3fc6249beb Match more strictly with \A and \z 2026-01-13 11:06:41 +01:00
なつき b939495830 Add restriction and validation for download urls 2026-01-13 11:06:41 +01:00
ruby-builder-bot 4fc31e1c82 Add ruby-4.0.1 2026-01-13 10:49:20 +01:00
ruby-builder-bot 675dd7ba1b Add truffleruby-33.0.0,truffleruby+graalvm-33.0.0 2026-01-10 15:04:58 +01:00
Benoit Daloze 5dd816ae01 Tweaks for the generated CI matrix 2026-01-07 22:30:14 +01:00
なつき c2f29a7833 Generate test matrix dynamically 2026-01-07 22:27:00 +01:00
Benoit Daloze d5f787ce33 Define a helper to download to avoid duplication 2026-01-07 22:23:14 +01:00
Benoit Daloze 1010da45f3 Tweaks 2026-01-07 22:23:14 +01:00
Tingluo Huang 7f50f6e3b3 Add token input and pass it to release assets download. 2026-01-07 22:23:14 +01:00
なつき be19563477 Test ruby 4.0 on windows 2026-01-06 23:59:42 +01:00
Benoit Daloze b90be12699 Rename 3.4-asan to asan-release
* And it is currently based on the latest release, that is 4.0.0.
2026-01-05 18:59:19 +01:00
Benoit Daloze 4c24fa5ec0 Set BUNDLER_VERSION whenever we know which version to use
* Fixes https://github.com/ruby/setup-ruby/issues/845
2025-12-31 23:13:45 +01:00
ruby-builder-bot 8a836efbce Update CRuby releases on Windows 2025-12-30 10:31:12 +01:00
ruby-builder-bot ae195bbe74 Add ruby-4.0.0 2025-12-25 21:26:53 +01:00
なつき d354de180d Skip saving cache for merge_group event 2025-12-20 21:28:32 +01:00
Ryan Davis ed55d55e82 Fix rubyinstaller2 urls for latest release 2025-12-18 23:15:56 +01:00
ruby-builder-bot a25f1e45f0 Update CRuby releases on Windows 2025-12-18 20:30:48 +01:00
ruby-builder-bot 211ffaaa5f Add ruby-4.0.0-preview3 2025-12-18 10:32:52 +01:00
ruby-builder-bot f8d7259c7a Add ruby-3.4.8 2025-12-17 14:26:51 +01:00
Benoit Daloze ac793fdd38 When setting $JAVA_HOME also add $JAVA_HOME/bin to PATH
* See discussion in https://github.com/rake-compiler/rake-compiler/pull/247
  it is messy if that's not the case and also creates inconsistencies
  based on which Java tool/executable is used.
2025-12-13 21:06:12 +01:00
Benoit Daloze 5f8a775744 macos-13 is gone 2025-12-11 22:51:44 +01:00
dependabot[bot] 30a6546035 Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-11 22:47:42 +01:00
Benoit Daloze d697be2f83 Account for Bundler 4
* Fixes https://github.com/ruby/setup-ruby/issues/827
2025-12-05 20:42:13 +01:00
Benoit Daloze 8aeb6ff803 Test Ruby 4.0 previews 2025-11-17 15:27:57 +01:00
ruby-builder-bot 09e84e3b9d Add ruby-4.0.0-preview2 2025-11-17 15:27:57 +01:00
Benoit Daloze d5126b9b35 exec.exec() only accepts strings 2025-10-27 12:32:05 +01:00
Benoit Daloze 274049f8cf Use os.availableParallelism() instead of os.cpus().length
* As https://nodejs.org/api/os.html#oscpus says:
  os.cpus().length should not be used to calculate the amount of parallelism available to an application. Use os.availableParallelism() for this purpose.
2025-10-27 12:32:05 +01:00
Thomas Breland a96ff531da Scale bundler install jobs with CPU count up to 8
The number of jobs should scale with the runner CPU count, up to a
point. The bottleneck becomes network / disk I/O at very large numbers,
and 8 seems like a reasonable maximum based on my experience at this
time.
2025-10-27 12:32:05 +01:00
ruby-builder-bot 4ff6f3611a Update CRuby releases on Windows 2025-10-26 13:11:41 +01:00
ruby-builder-bot 5375105c88 Add ruby-3.3.10 2025-10-26 13:11:10 +01:00
ruby-builder-bot ab177d40ee Update CRuby releases on Windows 2025-10-10 10:24:01 +02:00
ruby-builder-bot 6797dcbb9a Add ruby-3.4.7 2025-10-08 11:26:49 +02:00
Benoit Daloze a16e0e6641 Test on macos-15-intel too
* Fixes https://github.com/ruby/setup-ruby/issues/814
2025-10-03 15:02:50 +02:00
Earlopain 0481980f17 Print lockfile contents earlier
Currently, the lockfile gets printed after `bundle install` finished. This could be too late when `bundle install` fails for whatever reason.

I have a workflow that failed like this:

<details><summary>Logs</summary>
<p>

```

55s
Run ruby/setup-ruby@v1
Modifying PATH
Downloading Ruby
Extracting  Ruby
Print Ruby version
Installing Bundler
> bundle install
/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle config --local path /home/runner/work/rubocop/rubocop/vendor/bundle
/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle lock
Fetching source index from https://rubygems.org/
Network error while fetching
https://rubygems.org/quick/Marshal.4.8/asciidoctor-0.0.1.gemspec.rz (Connection
reset by peer - SSL_connect)
Error: The process '/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle' failed with exit code 17
Run ruby/setup-ruby@v1
Modifying PATH
Downloading Ruby
Extracting  Ruby
Print Ruby version
Installing Bundler
> bundle install
/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle config --local path /home/runner/work/rubocop/rubocop/vendor/bundle
/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle lock
Fetching source index from https://rubygems.org/
Network error while fetching
https://rubygems.org/quick/Marshal.4.8/asciidoctor-0.0.1.gemspec.rz (Connection
reset by peer - SSL_connect)
Error: The process '/opt/hostedtoolcache/Ruby/2.7.8/x64/bin/bundle' failed with exit code 17
```

</p>
</details>

It would help to print the lockfile for this I think. It fetching version 0.0.1 confused me but probably the lockfile looks ok. New output:

```
Run ./
Modifying PATH
Print Ruby version
Installing Bundler
> bundle install
/opt/hostedtoolcache/Ruby/3.2.9/x64/bin/bundle config --local path /home/runner/work/setup-ruby/setup-ruby/vendor/bundle
/opt/hostedtoolcache/Ruby/3.2.9/x64/bin/bundle lock
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Writing lockfile to /home/runner/work/setup-ruby/setup-ruby/gemfiles/rails8.gemfile.lock
Print lockfile
Cache key: setup-ruby-bundler-cache-v6-ubuntu-24.04-x64-ruby-3.2.9-wd-/home/runner/work/setup-ruby/setup-ruby-with--without--only--/home/runner/work/setup-ruby/setup-ruby/gemfiles/rails8.gemfile.lock-cb69172094f71f01e5207070d9af8d465d9aa9c386ecbad22b1b6e8e43523fd2
/opt/hostedtoolcache/Ruby/3.2.9/x64/bin/bundle install --jobs 4
...
```

So it's relatively at the top and not hidden somewhere. Also removes the need to check for the lockfile again.
2025-09-22 20:15:33 +02:00
Benoit Daloze cf7216d52f Use new releases of ruby-builder per engine-version
* See https://github.com/ruby/setup-ruby/issues/810
2025-09-21 19:19:44 +02:00
ruby-builder-bot 1c58d16f1a Update CRuby releases on Windows 2025-09-21 11:13:21 +02:00
Chad Wilson 1dc7956827 Test on JRuby 9.4 as well as 10.0 2025-09-20 21:59:29 +02:00
Chad Wilson b8714f777a Revert "Skip test failing on JRuby on Windows"
This reverts commit f2f42b7848.
2025-09-20 21:59:29 +02:00
Benoit Daloze d3e13b3e37 Revert "feat: upgrade to node 24"
This reverts commit c4cd38db20.
2025-09-20 21:54:20 +02:00
Benoit Daloze 4df093a946 Revert "chore: add setup-node for lint job"
This reverts commit 866b91cc02.
2025-09-20 21:54:20 +02:00
Rui Chen 866b91cc02 chore: add setup-node for lint job
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-09-18 22:00:12 +02:00
Rui Chen c4cd38db20 feat: upgrade to node 24
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-09-18 22:00:12 +02:00
ruby-builder-bot 3fee676323 Add truffleruby-25.0.0,truffleruby+graalvm-25.0.0 2025-09-16 19:43:34 +02:00
ruby-builder-bot c61fbf19ae Add ruby-3.4.6 2025-09-16 18:33:02 +02:00
Benoit Daloze 4451173596 Remove workaround for old truffleruby version from 2021 2025-08-30 13:55:15 +02:00
Benoit Daloze 805f878062 Remove failing test 2025-08-30 13:54:52 +02:00
ruby-builder-bot ab85640192 Add jruby-9.4.14.0 2025-08-30 13:46:55 +02:00
Johnny Willemsen c2e9820886 Update README.md
Updated examples to use checkout v5
2025-08-20 22:24:30 +02:00
なつき efbf473cab Add JRuby for Windows on Arm 2025-08-20 11:11:28 +02:00
Hiroshi SHIBATA bd28d3616a Merge pull request #797 from ruby/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-18 15:05:24 +09:00
dependabot[bot] 3c08d92a33 Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 03:15:35 +00:00
ruby-builder-bot 829114fc20 Add jruby-10.0.2.0 2025-08-11 21:34:23 +02:00
Benoit Daloze 76da337679 Update GitHub-hosted runners link 2025-08-06 13:10:04 +02:00
Hiroshi SHIBATA 2973a4bca4 Merge pull request #794 from fkmy/update-readme
Update ruby version in `README.md`
2025-08-06 09:26:32 +09:00
Yuki Fukuma 595828d48d Update ruby version in README.md
Use current ruby version in examples.
2025-08-06 08:59:15 +09:00
Eliot Partridge 2a7b30092b Rename to isExactCacheKeyMatch 2025-07-29 22:24:35 +02:00
Eliot Partridge 78876b7c88 Use case-insensitive key comparsion for cache keys 2025-07-29 22:24:35 +02:00
dependabot[bot] 3ec1ec0529 Bump brace-expansion from 1.1.11 to 1.1.12
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 22:02:39 +02:00
dependabot[bot] 45dc484f8a Bump form-data from 2.5.3 to 2.5.5
Bumps [form-data](https://github.com/form-data/form-data) from 2.5.3 to 2.5.5.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/v2.5.5/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v2.5.3...v2.5.5)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 2.5.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 22:00:25 +02:00
Benoit Daloze bb6434c747 Add non-null check 2025-07-26 10:58:48 +02:00
Jason Frey ba9e71c195 Add printing of the lockfile after installation
Closes #783
2025-07-26 10:58:48 +02:00
Benoit Daloze 0ecad18fe5 Revert "Add printing of the lockfile after installation"
This reverts commit e8621f0b86.
2025-07-25 22:09:19 +02:00
Jason Frey e8621f0b86 Add printing of the lockfile after installation
Closes #783
2025-07-25 20:36:32 +02:00
Benoit Daloze bd6859cc58 Use core.group() instead of startGroup/endGroup 2025-07-25 20:25:02 +02:00
ruby-builder-bot 223e443f3e Update CRuby releases on Windows 2025-07-25 20:14:52 +02:00
ruby-builder-bot 65937904bc Add ruby-3.2.9,ruby-3.3.9 2025-07-24 21:16:37 +02:00
ruby-builder-bot a9bfc2ecf3 Add jruby-10.0.1.0 2025-07-21 22:45:43 +02:00
David Rodríguez 4727905401 Try also removing the other case where --force is used 2025-07-16 23:02:44 +02:00
David Rodríguez f66e1124dc Don't use --force flag on Windows
It was originally added by https://github.com/ruby/setup-ruby/pull/253,
in order to fix CI. However, now CI passes without it so I assume this
was fixed by rubyinstaller2.

Force actually bypasses dependency constraints so it's actually
installing the latest Bundler in a version of Ruby that's incompatible
with it.
2025-07-16 23:02:44 +02:00
David Rodríguez a0d08243d4 Add workaround for Ruby 3.1 after RubyGems 3.7.0 release 2025-07-16 23:02:44 +02:00
Benoit Daloze a4f8389190 Remove windows-2019 support
* See https://github.com/actions/runner-images/issues/12045
2025-07-15 22:28:17 +02:00
ruby-builder-bot d4ef88eccb Add ruby-3.4.5 2025-07-15 22:25:06 +02:00
wt-l00 e851ebd3ad Remove unused platform args from computeBaseKey
ref: https://github.com/ruby/setup-ruby/pull/473
2025-06-20 22:32:39 +02:00
ruby-builder-bot a4effe49ee Add jruby-9.4.13.0 2025-06-11 20:41:46 +02:00
MSP-Greg 13e7a03dc3 run yarn run package 2025-05-21 10:33:36 +02:00
MSP-Greg 2deba9e3bf yarn.lock update 2025-05-21 10:33:36 +02:00
MSP-Greg 308b219f00 package.json - update @actions/io, semver, ncc 2025-05-21 10:33:36 +02:00
Joé Dupuis c95ae3725f Upgrade @actions/cache
to fix `Failed to save: Failed to CreateCacheEntry: Received
non-retryable error` errors.
2025-05-19 22:05:44 +02:00
ruby-builder-bot cb0fda56a3 Update CRuby releases on Windows 2025-05-18 21:53:09 +02:00
なつき bb0f760b6c Fix a regression where MAKE on windows has an extra space at the end 2025-05-16 21:28:09 +02:00
なつき 1a0ff446f5 Switch to ruby/setup-msys2-gcc 2025-05-16 14:21:30 +02:00
なつき 2f5524065c Apply review feedbacks 2025-05-16 14:21:30 +02:00
なつき a8713082c2 Rewrite ruby/setup-msys2-gcc 2025-05-16 14:21:30 +02:00
ruby-builder-bot 84684c07c1 Add ruby-3.4.4 2025-05-14 21:23:10 +02:00
ruby-builder-bot e34163cd15 Add jruby-9.4.12.1,jruby-10.0.0.1 2025-05-08 12:21:24 +02:00
MSP-Greg eaecf785f6 Handle win2019 gcc issue 2025-05-01 10:48:55 +02:00
ruby-builder-bot f41e084df8 Add truffleruby-24.2.1,truffleruby+graalvm-24.2.1 2025-04-30 21:13:17 +02:00
Benoit Daloze afda160499 Improve exclude reasons 2025-04-26 12:52:51 +02:00
Benoit Daloze e69d1ea5ec Update README example 2025-04-26 12:52:44 +02:00
なつき dffc446db9 Support windows-11-arm 2025-04-26 12:43:27 +02:00
Benoit Daloze 2e007403fc Remove support for ubuntu-20.04
* It's gone: https://github.com/actions/runner-images/issues/11101
2025-04-24 20:45:25 +02:00
Benoit Daloze 72002957a7 Update to Rails 7.2 and 8 in tests
* Rails <= 6 has a known issue with logger and the workaround causes CI failures:
  https://github.com/ruby/setup-ruby/actions/runs/14641011806/job/41083255632
2025-04-24 16:28:30 +02:00
Benoit Daloze bc1d550354 Update testFixedBundlerVersionForOldRuby to 2.3 since 2.2 is known to be broken with recent C compilers
* See https://github.com/ruby/setup-ruby/issues/496
2025-04-24 13:55:27 +02:00
Benoit Daloze bcde69c47c Update README.md 2025-04-18 18:54:39 +08:00
Benoit Daloze eedae55b0a Make it clear not all combinations are supported 2025-04-18 18:51:02 +08:00
ruby-builder-bot ca041f971d Add jruby-10.0.0.0 2025-04-18 16:52:02 +08:00
ruby-builder-bot 1eb8bd2dc1 Add ruby-3.5.0-preview1 2025-04-18 16:36:32 +08:00
Benoit Daloze fc67f6de0a Update remaining 20.04 tests to 22.04 2025-04-18 16:35:22 +08:00
Benoit Daloze 5ea2b47b47 Stop testing on ubuntu-20.04 since it's gone 2025-04-18 15:49:38 +08:00
ruby-builder-bot fb404b9557 Update CRuby releases on Windows 2025-04-17 21:24:18 +08:00
ruby-builder-bot d8d83c3960 Add ruby-3.4.3 2025-04-15 12:08:53 +08:00
Hiroshi SHIBATA e5ac7b085f Merge pull request #737 from ruby-builder-bot/windows
Update CRuby releases on Windows
2025-04-14 09:12:29 +09:00
Hiroshi SHIBATA cad744e24a Merge pull request #736 from ruby-builder-bot/ruby-3.3.8
Add ruby-3.3.8
2025-04-14 09:11:49 +09:00
ruby-builder-bot ba79f3f74f Update CRuby releases on Windows 2025-04-10 19:00:37 +00:00
ruby-builder-bot e9454362e9 Add ruby-3.3.8 2025-04-09 19:09:47 +00:00
ruby-builder-bot 354a1ad156 Update CRuby releases on Windows 2025-03-27 11:06:56 +01:00
ruby-builder-bot 7886c66535 Add ruby-3.1.7,ruby-3.2.8 2025-03-26 10:27:57 +01:00
ruby-builder-bot 1a615958ad Add truffleruby-24.2.0,truffleruby+graalvm-24.2.0 2025-03-18 14:16:45 +01:00
Benoit Daloze 922ebc4c52 Use $JAVA_HOME/bin/java for the check 2025-03-15 12:36:12 +01:00
Charles Oliver Nutter 6c79f721fa Test successful JRuby start without using launcher
Native launcher appears to hang on GHA when the JDK version is too
old for JRuby 10. This bypasses it and should be a bit lighter. It
will also avoid any variability in the launcher used, since Unixes
and Windows already use different executables.
2025-03-13 20:32:49 +01:00
Charles Oliver Nutter e17c5ea7eb Handle exec error
Apparently this exec errors when the subprocess fails rather than
returning an error code. This causes the whole setup process to
terminate. This patch catches the error and uses that to indicate
failure to launch.
2025-03-13 20:32:49 +01:00
Charles Oliver Nutter f0a4d6bddd Switch JAVA_HOME to 21 for JRuby (#721)
* JRuby 10 requires Java 21. Since the previous default was 17 and all JRuby releases should work fine on 21, we do this for all JRuby installs.
* Implements #718
2025-03-12 21:19:38 +01:00
Benoit Daloze bbda85882f Fix .tool-versions and mise.toml tests 2025-03-11 12:24:54 +01:00
Benoit Daloze 30755d8bf4 Cleanup matching for .tool-versions and mise and add tests for .ruby-version and .tool-versions 2025-03-11 12:16:17 +01:00
Karibash 28233a011b bugfix: Fix bug that version cannot be parsed in .tool-versions 2025-03-11 11:59:59 +01:00
Joel Tannas 277ba2a127 deal with multiple versions in .tool-versions 2025-03-05 20:06:37 +01:00
Ivo Anjo 04c2e2b8e8 Expose 3.4-asan Ruby builds from ruby-dev-builder
**What does this PR do?**

This PR provides the final piece of the puzzle to fix #682: now that
ruby-dev-builder is building `3.4-asan` Rubies since
https://github.com/ruby/ruby-dev-builder/pull/15, we can make them
available for use.

**Motivation:**

At Datadog, we're using ASan builds to check for issues
[in our library](https://github.com/datadog/dd-trace-rb),
and having a `3.4-asan` build improves the experience of having
these checks be a required CI step. Using the ASan builds built from
ruby-head means our CI could break because of unrelated issues/changes
from ruby-head.

**Additional Notes:**

`yarn` was trying really hard to update a bunch of things, which
generated A LOT of diff noise. I've manually pared them down just
to the actual changes related to adding the new variant so the
diff makes a bit more sense.

**How to test the change?**

I've already tested this in
https://github.com/DataDog/dd-trace-rb/actions/runs/13392865620/job/37696781848
and it seems to be working fine!
2025-02-24 22:02:53 +01:00
Benoit Daloze 88a8155095 Make targetRubyVersion() more complete 2025-02-22 17:21:43 +01:00
Benoit Daloze 3ad45c51bf Improve script for listing versions 2025-02-22 17:11:22 +01:00
ruby-builder-bot 32110d4e31 Update CRuby releases on Windows 2025-02-15 22:53:04 +01:00
ruby-builder-bot 28d088d34a Add ruby-3.4.2 2025-02-15 14:05:01 +01:00
Benoit Daloze f2f42b7848 Skip test failing on JRuby on Windows
* See https://github.com/jruby/jruby/issues/8623
2025-02-12 12:08:15 +01:00
ruby-builder-bot 5547c873c2 Add jruby-9.4.12.0 2025-02-12 12:00:14 +01:00
ruby-builder-bot d781c1b4ed Update CRuby releases on Windows 2025-02-05 22:56:33 +01:00
Benoit Daloze 8711a86ab6 Shorten to avoid horizontal scrolling 2025-02-05 11:11:17 +01:00
Marcel HoppeandBenoit Daloze ef45abe478 Add support for mise.toml (#700)
Co-authored-by: Benoit Daloze <eregontp@gmail.com>
2025-02-05 11:09:26 +01:00
ruby-builder-bot 8388f20e6a Add ruby-3.2.7 2025-02-04 20:28:28 +01:00
ruby-builder-bot 2654679fe7 Add jruby-9.4.11.0 2025-01-30 10:40:46 +01:00
ruby-builder-bot 1287d2b408 Add truffleruby-24.1.2,truffleruby+graalvm-24.1.2 2025-01-27 14:00:22 +01:00
ruby-builder-bot 84b14e9e47 Add jruby-9.4.10.0 2025-01-27 13:40:48 +01:00
Benoit Daloze 28c4deda89 ubuntu-22.04-arm64 and ubuntu-24.04-arm64 support is complete
* *-head builds just need to complete.
2025-01-18 23:43:10 +01:00
Benoit Daloze fbaef13682 Add support for ubuntu-22.04-arm64 and ubuntu-24.04-arm64 2025-01-18 23:33:18 +01:00
ruby-builder-bot f72249c5c9 Update CRuby releases on Windows 2025-01-18 22:06:31 +01:00
MSP-Greg 87b48937c9 test.yml -add windows-2025 2025-01-18 13:13:22 +01:00
MSP-Greg fd2daeae79 common.js - add windows-2025 2025-01-18 13:13:22 +01:00
MSP-Greg 1d542747a7 yarn.lock - Remove @actions/core 1.10.1, use @actions/core 1.11.1
Update index.js
2025-01-17 20:51:41 +01:00
Benoit Daloze 7a6302104f Workaround missing require 'logger' in Rails 2025-01-17 10:00:35 +01:00
Bassem Dghaidi 8e51ba9a0a Upgrade @actions/cache to 4.0.0 2025-01-17 10:00:35 +01:00
ruby-builder-bot 868b3f0884 Add ruby-3.3.7 2025-01-15 21:52:39 +01:00
ruby-builder-bot 4a9ddd6f33 Update CRuby releases on Windows 2024-12-30 20:44:12 +01:00
ruby-builder-bot bfefad842b Add ruby-3.4.0,ruby-3.4.1 2024-12-26 12:46:26 +01:00
Shizuo Fujita 540484a3c0 Fixes the latest rubygems installation error with Ruby 3.0
If set up `rubygems: latest` in workflow,
it will cause the error with Ruby 3.0 because the latest rubygems does not support Ruby 3.0.

Ref. https://rubygems.org/gems/rubygems-update

### Error message
```
Updating RubyGems
  /opt/hostedtoolcache/Ruby/3.0.7/x64/bin/gem --version
  3.2.33
  Default RubyGems version is 3.2.33
  Updating RubyGems to latest version
  /opt/hostedtoolcache/Ruby/3.0.7/x64/bin/gem update --system
  ERROR:  Error installing rubygems-update:
  	rubygems-update-3.6.1 requires Ruby version >= 3.1.0. The current ruby version is 3.0.7.220.
  ERROR:  While executing gem ... (NoMethodError)
      undefined method `version' for nil:NilClass
  Updating rubygems-update
  Took   2.86 seconds
Error: The process '/opt/hostedtoolcache/Ruby/3.0.7/x64/bin/gem' failed with exit code 1
```

### How to reproduce
```
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: "3.0"
          rubygems: latest
```
2024-12-23 19:21:18 +01:00
ruby-builder-bot 401c19e14f Add ruby-3.4.0-rc1 2024-12-13 20:31:53 +01:00
Benoit Daloze 2a18b06812 Require macos-13+ for macos-amd64 as builds from now on will be on 13 and 12 can no longer be tested 2024-12-06 22:33:53 +01:00
Benoit Daloze 2e3487c00e No more macos-12 runners, minimum for macos-amd64 is now macos-13 2024-12-06 22:29:00 +01:00
Benoit Daloze 6825c765eb Clarify 2024-11-21 14:11:38 +01:00
Benoit Daloze 9a9fe58c47 Clarify all macOS versions from 12 are supported 2024-11-20 20:58:51 +01:00
ruby-builder-bot a2bbe5b1b2 Update CRuby releases on Windows 2024-11-09 16:33:51 +01:00
ruby-builder-bot 46ca53beb3 Update CRuby releases on Windows 2024-11-07 14:39:39 +01:00
Benoit Daloze 217c988b8c Skip which bundle test on mingw, mswin and ucrt
* See https://github.com/ruby/setup-ruby/issues/658
2024-11-05 12:06:00 +01:00
ruby-builder-bot c6d4d2ab97 Add ruby-3.3.6 2024-11-05 12:02:48 +01:00
ruby-builder-bot 8c27ea3449 Add jruby-9.4.9.0 2024-11-05 11:59:57 +01:00
ruby-builder-bot 7d3497fd78 Update CRuby releases on Windows 2024-10-31 20:40:36 +01:00
ruby-builder-bot 98aefb3c83 Add ruby-3.2.6 2024-10-30 20:46:56 +01:00
ruby-builder-bot 7bae1d00b5 Add truffleruby-24.1.1,truffleruby+graalvm-24.1.1 2024-10-17 21:33:08 +02:00
Benoit Daloze 4d521eadc8 Fix exclusion 2024-10-11 11:59:43 +02:00
Benoit Daloze 1d9686e3ef Mention the new ruby-asan under Supported Versions
* Remove the ASan Debugging section for now as it seems mostly redundant.
  Native extensions are automatically compiled with ASan, so there is nothing special to do to use it.
2024-10-11 11:58:05 +02:00
Samuel Williams bea2fb915c Add some details about using asan build. 2024-10-11 11:58:05 +02:00
Benoit Daloze f269373437 Test the last 3.4 preview in CI 2024-10-07 20:33:19 +02:00
ruby-builder-bot 784fcda67f Add ruby-3.4.0-preview2 2024-10-07 20:20:58 +02:00
Benoit Daloze f6e05710ec Update README.md 2024-10-05 20:53:31 +02:00
Benoit Daloze 207a39969b Move the link to the list together with other text about builds 2024-10-05 20:51:36 +02:00
Samuel Williams 086ffb1a20 Update the dist/index.js. 2024-10-05 20:46:21 +02:00
Samuel Williams 27ceac8081 Add asan to the test matrix. 2024-10-05 20:46:21 +02:00
Samuel Williams aac0c64812 Add asan as a head version of Ruby. 2024-10-05 20:46:21 +02:00
Samuel Williams 727fd4feab Update ruby-builder-versions.json 2024-10-05 20:46:21 +02:00
Stavros Ntentos 79c01b8847 README.md: Mention link to supported Ruby versions for GitHub-hosted runners
Fixes https://github.com/ruby/setup-ruby/issues/650

Signed-off-by: Stavros Ntentos <133706+stdedos@users.noreply.github.com>
2024-10-02 22:26:31 +02:00
Benoit Daloze c04af2bb72 Replace macos-release by (parseInt(os.version()) - 9)
* That way we don't need to update that dependency to work with newer macOS releases.
2024-09-25 22:01:07 +02:00
Benoit Daloze 17f5c914a0 Add support for macos-15 and all future macos runners
* Fixes https://github.com/ruby/setup-ruby/issues/647
2024-09-25 22:00:58 +02:00
Benoit Daloze 5496baa6db Update macos-release to 3.3.0 so it recognizes macos-15 2024-09-25 21:40:23 +02:00
Benoit Daloze 0ec4904dc7 Better error for TruffleRuby on Windows
* Fixes https://github.com/ruby/setup-ruby/issues/619
2024-09-25 21:02:29 +02:00
ruby-builder-bot f321cf5a4d Add truffleruby-24.1.0,truffleruby+graalvm-24.1.0 2024-09-17 16:56:52 +02:00
MSP-Greg 6af8267b44 README.md - Windows - clarify installed packages, 2022 vs 2019 2024-09-16 22:18:39 +02:00
ruby-builder-bot a6b46b8a08 Update CRuby releases on Windows 2024-09-16 15:52:34 +02:00
ruby-builder-bot 52753b7da8 Add ruby-3.3.5 2024-09-03 21:45:07 +02:00
ruby-builder-bot a6e6f86333 Update CRuby releases on Windows 2024-07-27 15:01:55 +02:00
ruby-builder-bot bc2ba926aa Add ruby-3.2.5 2024-07-27 13:22:02 +02:00
Rui Chen 371544706a docs: update ruby-version comment 2024-07-24 23:02:41 +02:00
ruby-builder-bot 50ba3386b0 Add truffleruby-24.0.2,truffleruby+graalvm-24.0.2 2024-07-22 13:01:40 +02:00
ruby-builder-bot 161cd54b69 Update CRuby releases on Windows 2024-07-10 23:01:53 +02:00
ruby-builder-bot 2a9a743e19 Add ruby-3.3.4 2024-07-09 17:13:03 +02:00
Benoit Daloze 3a77c29278 Fix updating the v1 branch on automated releases
* Fixes https://github.com/ruby/setup-ruby/issues/618
2024-07-06 11:54:45 +02:00
Hiroshi SHIBATA 382d786c8a Removed macos-arm-oss from GitHub Actions 2024-07-05 12:11:07 +02:00
ruby-builder-bot 97e35c5302 Add jruby-9.4.8.0 2024-07-03 10:42:25 +02:00
Benoit Daloze 1d0e911f61 Fully remove macos-11 since new builds will be on macos-12 2024-06-30 12:49:37 +02:00
Benoit Daloze c48bc1e88d macos-11 is no longer available 2024-06-30 12:41:55 +02:00
Benoit Daloze 713e0f1ab5 Update CONTRIBUTING.md 2024-06-27 15:46:14 +02:00
Benoit Daloze af43264f2b GH_REPO and GH_TOKEN must be set 2024-06-27 15:41:42 +02:00
Benoit Daloze 3251c5c21b Add workflow to automatically create a release 2024-06-27 15:23:12 +02:00
ruby-builder-bot 21a479f2d7 Add jruby-9.3.15.0 2024-06-27 15:01:18 +02:00
ruby-builder-bot 3783f195e2 Update CRuby releases on Windows 2024-06-17 20:49:34 +02:00
ruby-builder-bot ff740bc00a Add ruby-3.3.3 2024-06-12 11:56:31 +02:00
Benoit Daloze 78c01b705f Improve error message for CRuby < 2.6 on macos-arm64
* Is this the best error message ever?
2024-06-08 13:39:56 +02:00
ruby-builder-bot d5fb7a202f Update CRuby releases on Windows 2024-06-03 12:03:15 +02:00
Benoit Daloze 0cde4689ba Clearer 2024-05-30 15:10:04 +02:00
Benoit Daloze a56d16ef33 Refine errors text 2024-05-30 15:06:36 +02:00
Benoit Daloze 12dfa2bb47 Better error for 404 2024-05-30 15:01:16 +02:00
Benoit Daloze 68b705993a Fix condition 2024-05-30 14:47:21 +02:00
Benoit Daloze d046db60e3 Fail clearly for CRuby < 2.6 on macos-arm64 2024-05-30 14:41:43 +02:00
Benoit Daloze d4138ebc47 Do not validate the version for self-hosted 2024-05-30 14:41:31 +02:00
Benoit Daloze 049eae0450 Remove trailing space 2024-05-30 12:56:58 +02:00
ruby-builder-bot ff22bbb25f Add ruby-3.1.6,ruby-3.3.2 2024-05-30 12:29:44 +02:00
Benoit Daloze 943103cae7 Use downloadAndExtract() for truffleruby+graalvm too
* Simpler and more consistent that way.
* Avoids rerunning the post-install hook every time.
2024-05-22 00:08:22 +09:00
Kenichi Kamiya 7dc18ff0ca Exclude ruby 1.9 and 2.2 test for ubuntu-24.04
https://github.com/ruby/setup-ruby/pull/596#discussion_r1606047680
2024-05-20 17:46:39 +08:00
Kenichi Kamiya 00a1085dff Update README about ubuntu-24.04 2024-05-20 17:46:39 +08:00
Kenichi Kamiya 868b8c0873 Test against ubuntu-24.04 runner 2024-05-20 17:46:39 +08:00
Kenichi Kamiya 4f20bb7102 Support ubuntu-24.04-x64 2024-05-20 17:46:39 +08:00
ruby-builder-bot 6615b4b8a0 Add ruby-3.4.0-preview1 2024-05-17 16:58:23 +09:00
Benoit Daloze 82dd21cb95 Remove leftover test files
* The corresponding tests were removed in e16528e678.
  They could be re-added but should generate these files dynamically to avoid confusion.
2024-05-06 19:16:43 +02:00
ruby-builder-bot cacc9f1c0b Add jruby-9.4.7.0 2024-05-03 12:07:05 +02:00
ruby-builder-bot 1198b07430 Update CRuby releases on Windows 2024-04-26 11:20:31 +02:00
ruby-builder-bot 70da3bbf44 Add ruby-3.0.7,ruby-3.1.5,ruby-3.2.4,ruby-3.3.1 2024-04-23 18:56:06 +02:00
ruby-builder-bot 6bd3d993c6 Add truffleruby-24.0.1,truffleruby+graalvm-24.0.1 2024-04-16 18:16:08 +02:00
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
Benoit Daloze a05e47355e Java is now available on macos-arm-oss 2023-10-21 12:52:54 +02:00
ruby-builder-bot eba3a0f992 Add jruby-9.4.4.0 2023-10-21 12:48:45 +02:00
Benoit Daloze 679e23d4a3 Improve documentation about the self-hosted input
* Fixes https://github.com/ruby/setup-ruby/issues/535
2023-10-12 13:33:38 +02:00
Benoit Daloze 9f4cc09ff9 3.1 is now available on macos-arm64 2023-10-12 12:54:54 +02:00
Benoit Daloze 4d745286b4 Cleanup 2023-10-12 01:43:00 +02:00
Benoit Daloze 5cfe23c062 Add support for macos-13-arm64 GitHub runners 2023-10-11 18:58:56 +02:00
Benoit Daloze f887fb3d0e Update versions-strings-for-builder.rb 2023-10-11 18:52:53 +02:00
Benoit Daloze b1c3bf6751 Rename getVirtualEnvironmentName() to getOSNameVersion() for clarity 2023-10-11 18:52:53 +02:00
r7kamura d37167af45 Consider BUNDLE_ONLY in cache key 2023-10-08 11:45:20 +02:00
ruby-builder-bot 52b8784594 Add truffleruby-23.1.0,truffleruby+graalvm-23.1.0 2023-09-19 16:13:37 +02:00
Benoit Daloze 9aede54d98 Exclude known failing combination
* See https://github.com/ruby/setup-ruby/issues/496
2023-09-19 12:28:45 +02:00
Benoit Daloze 24a61db157 yarn upgrade 2023-09-19 12:26:46 +02:00
ruby-builder-bot 5311f05890 Add jruby-9.3.11.0 2023-09-14 12:36:28 +02:00
ruby-builder-bot cb3f1e45ed Add ruby-3.3.0-preview2 2023-09-14 12:34:53 +02:00
Lorenzo Zabot 4f1c6a74a7 Update actions/checkout to v4 2023-09-06 11:47:06 +02:00
Rotzbua b252db7f27 Update ruby version in README.md
Use current ruby version in examples.
2023-08-23 13:20:36 +02:00
ruby-builder-bot 250fcd6a74 Add truffleruby-23.0.0,truffleruby+graalvm-23.0.0 2023-06-14 11:28:44 +02:00
ruby-builder-bot bc1dd263b6 Add jruby-9.4.3.0 2023-06-08 11:15:41 +02:00
MSP-Greg 8a45918450 Update 'setup-ruby-bundler-cache-v5' to 'setup-ruby-bundler-cache-v6'
Needed to allow cache save when lock file hash is unchanged
2023-05-20 15:09:49 +02:00
MSP-Greg 92a3389c13 Fix cache with @actions/cache 2023-05-20 15:09:49 +02:00
Benoit Daloze 7d546f4868 Test 3.3 preview 2023-05-14 14:27:22 +02:00
ruby-builder-bot 4e64415f09 Add ruby-3.3.0-preview1 2023-05-14 14:27:22 +02:00
Benoit Daloze d2b39ad0b5 Consider truffleruby preview releases to be stable versions 2023-04-28 17:06:17 +02:00
ruby-builder-bot e939497f6f Add truffleruby-23.0.0-preview1,truffleruby+graalvm-23.0.0-preview1 2023-04-28 17:01:21 +02:00
Benoit Daloze 6cecb48364 Use ubuntu-20.04 for test using Ruby 2.2
* https://github.com/ruby/setup-ruby/issues/496#issuecomment-1520667671
2023-04-24 22:02:59 +02:00
Dan Federman 4d88f85d08 Add support for macos-13 (#501) 2023-04-24 21:44:28 +02:00
ruby-builder-bot 55283cc231 Update CRuby releases on Windows 2023-04-04 17:55:30 +08:00
ruby-builder-bot 904f3fef85 Add ruby-2.7.8,ruby-3.0.6,ruby-3.1.4,ruby-3.2.2 2023-03-31 23:32:47 +08:00
MSP-Greg ec02537da5 Lock @actions/cache to 3.0.6, later versions break bundler caching 2023-03-20 16:55:33 +01:00
Benoit Daloze 089557fc38 Require a public workflow run URL for issues 2023-03-20 16:52:53 +01:00
MSP-Greg e6689b4deb Update yarn.lock, remove Windows mswin ssl cert related code 2023-03-16 18:55:42 +01:00
ruby-builder-bot 9669f3ee51 Add jruby-9.4.2.0 2023-03-09 22:37:36 +01:00
Benoit Daloze 31a7f6d628 No longer remove the prefix before extraction, extracting should be idempotent
* Fixes https://github.com/ruby/setup-ruby/issues/191
2023-03-05 15:39:16 +01:00
Benoit Daloze 59b5745c73 Use tc.find() with the effective tool cache path
* So it finds already-download prebuilt Ruby in the GH-hosted tool cache path
  on self-hosted, where $RUNNER_TOOL_CACHE is often different than on GH-hosted.
* See #475.
* This relies on tc.find() looking up the env var every time:
  https://github.com/actions/toolkit/blob/1f4b3fac06/packages/tool-cache/src/tool-cache.ts#L522
2023-03-05 14:56:02 +01:00
Benoit Daloze d03a71de6e Fix tc.find() calls to use the proper name on self-hosted 2023-03-05 14:56:02 +01:00
Benoit Daloze ddde3938f5 Use the default tool cache path on self-hosted runners matching a GH-hosted runner image
* See https://github.com/ruby/setup-ruby/issues/475
* Semantically reverts 377a94bc68
2023-03-05 14:56:02 +01:00
Benoit Daloze 5a73aa9f67 Explain why it was detected as self-hosted 2023-03-03 18:01:46 +01:00
Benoit Daloze d01c52ad8b Add a self-hosted input to force considering the current runner as self-hosted
* Since checking for self-hosted is based on guessing as there is
  no proper predicate for it in GitHub Actions (AFAIK).
2023-03-03 18:01:46 +01:00
Benoit Daloze 377a94bc68 Consider a different $RUNNER_TOOL_CACHE than the default as a self-hosted runner
* Fixes https://github.com/ruby/setup-ruby/issues/242
2023-03-03 18:01:46 +01:00
Benoit Daloze 66dc012cc3 Detect self-hosted runners not matching a GitHub-hosted runner image
* And give instructions for that case.
* Get the OS and OS version ourselves since some users set ImageOS incorrectly.
* This partially reverts commit ad1ebae995.
2023-03-03 16:33:57 +01:00
Benoit Daloze 2789f85824 Update bug_report.yml 2023-03-03 13:39:36 +01:00
Benoit Daloze fbb865d04d Update bug_report.yml 2023-03-03 13:36:11 +01:00
Benoit Daloze 96ac949ea0 Update bug_report.yml 2023-03-03 13:33:53 +01:00
Hiroshi SHIBATA 92aece5fc9 Also removed deprecated ubuntu-18.04 2023-02-27 19:56:46 +01:00
Hiroshi SHIBATA db791aad7b Removed macos-10.15 because it will be removed at 2023-03-31 2023-02-27 19:56:46 +01:00
ruby-builder-bot d3c9825d67 Update CRuby releases on Windows 2023-02-14 18:20:01 +01:00
Benoit Daloze f60ef1e808 Include working directory, $BUNDLE_WITH and $BUNDLE_WITHOUT in cache key
* Fixes https://github.com/ruby/setup-ruby/issues/350
* Fixes https://github.com/ruby/setup-ruby/issues/176
2023-02-11 14:17:29 +01:00
Benoit Daloze bc4e585e26 Don't show timing on error for clearer error output 2023-02-11 13:48:39 +01:00
Benoit Daloze 2cf593d66b Don't group bundle install output
* So any error from Bundler is immediately shown.
* Some users do not realize they should expand the group apparently.
2023-02-11 13:45:25 +01:00
Benoit Daloze a26e1fb6b3 Do not show a stacktrace if a process failed, only the message
* The stacktrace is confusing and rarely useful in that case.
2023-02-11 13:39:22 +01:00
ruby-builder-bot 4d060a10e6 Add ruby-3.2.1 2023-02-09 18:20:44 +00:00
ruby-builder-bot 77fe3b48b7 Add jruby-9.4.1.0 2023-02-08 10:26:25 +00:00
ruby-builder-bot 8df78e5576 Add jruby-9.3.10.0 2023-02-06 12:43:15 +00:00
ruby-builder-bot b8e62b879e Add truffleruby-22.3.1,truffleruby+graalvm-22.3.1 2023-01-24 19:23:27 +01:00
Benoit Daloze d60780f6b6 Simplify new-versions.rb 2023-01-24 19:15:59 +01:00
Benoit Daloze 8aa012b56d Debug new-versions.rb 2023-01-24 19:12:32 +01:00
Benoit Daloze 628be4e0e4 Fix new-versions.rb 2023-01-24 19:10:46 +01:00
MSP-Greg ee26e27437 Updates for Windows MSYS2 update to OpenSSL 3 2023-01-21 18:22:09 +01:00
Benoit Daloze 93287a1fa8 Revert "Export BUNDLER_VERSION after installing Bundler"
* This reverts commit 3190662165.
* It causes other issues such as https://github.com/ruby/setup-ruby/issues/444
  due to creating additional global state.
* The use-case it solves is too niche to risk such issues,
  using `bundler-cache: true` avoids the problem.
* See https://github.com/ruby/setup-ruby/issues/444#issuecomment-1377723414
2023-01-10 20:17:22 +01:00
Benoit Daloze 3190662165 Export BUNDLER_VERSION after installing Bundler
* Fixes https://github.com/ruby/setup-ruby/issues/440
2023-01-06 12:50:46 +01:00
Benoit Daloze eb7f94ffae Consider Bundler pre and rc versions valid, just exclude .dev
* Fixes https://github.com/ruby/setup-ruby/issues/439
2023-01-06 12:49:10 +01:00
Benoit Daloze ad718faf7a Break long line in workflow 2022-12-30 15:59:58 +01:00
Benoit Daloze 09c10210cc Implement targetRubyVersion for TruffleRuby
* Fixes #433
2022-12-30 15:55:07 +01:00
Lars Kanis f78d71faf4 Add RubyInstaller-3.2.0-1 for Windows 2022-12-30 15:39:39 +01:00
MSP-Greg fe42d0e73b Windows - updates for using OpenSSL 3 in Ruby 3.2 & head 2022-12-30 14:40:10 +01:00
David Rodríguez 8a6667e214 Reenable fixed RubyGems test
Use the same Ruby as the previous test, since it's very related, but
use a newer RubyGems to force the upgrade case.
2022-12-26 13:56:15 +01:00
Piotr Murach 03b78bdda2 Fix automatic bundler installation on JRuby 9.2 2022-12-25 20:06:54 +01:00
David Rodríguez 5fe1a6694c Respect explicit user's choice 2022-12-25 19:28:37 +01:00
David Rodríguez bb3a0553d5 Bundler higher than ~> 2.4.0 will require Ruby 3.0 or later 2022-12-25 19:28:37 +01:00
ruby-builder-bot 02c9cccf0e Add ruby-3.2.0 2022-12-25 14:08:20 +01:00
Hiroshi SHIBATA 8d6236c5db Bundler-2.4 requires Ruby 2.6 or later. 2022-12-24 23:31:20 +01:00
ruby-builder-bot 4b2d1d631e Update CRuby releases on Windows 2022-12-21 20:16:13 +01:00
Benoit Daloze 349473288f Update platforms docs
* No need to duplicate docs about which is *-latest here.
2022-12-19 12:35:28 +01:00
Konstantin Filtschew 846173692d ubuntu-latest is now 22.04
According to GitHub Blog ubuntu-latest is now 22.04.

see: https://github.blog/changelog/2022-11-09-github-actions-ubuntu-latest-workflows-will-use-ubuntu-22-04/
2022-12-19 12:30:52 +01:00
kojix2 9d93e96fe7 Update README.md
Added example of using the latest stable version of ruby
Related to #364
2022-12-13 12:21:40 +01:00
Benoit Daloze ee2113536a Test 3.2 RCs 2022-12-06 07:08:21 -06:00
Benoit Daloze ee37499046 Fix README auto update for preview/RC 2022-12-06 07:08:21 -06:00
ruby-builder-bot a5e2883296 Add ruby-3.2.0-rc1 2022-12-06 07:08:21 -06:00
Benoit Daloze 705fe056cf Improve wording 2022-12-06 05:33:15 -06:00
Hiroshi SHIBATA 8e7720ca42 virtual-environment has been renamed 2022-12-06 05:33:15 -06:00
Benoit Daloze 7a0bff23cb Disable failing test on old Ruby version
* See https://github.com/ruby/setup-ruby/issues/405
2022-11-25 17:20:21 +01:00
ruby-builder-bot c7079efafd Add ruby-2.7.7,ruby-3.0.5 2022-11-25 17:14:51 +01:00
Benoit Daloze 384fc1b92f Make new version script accept multiple versions 2022-11-25 16:34:19 +01:00
ruby-builder-bot 0a6498048c Add ruby-3.1.3 2022-11-24 20:23:06 +01:00
ruby-builder-bot de6f5b9c34 Add jruby-9.4.0.0 2022-11-23 23:00:18 +01:00
Benoit Daloze 4887fd8753 Ignore Bundler dev version in Gemfile.lock
* Fixes https://github.com/ruby/setup-ruby/issues/394
2022-11-22 16:22:30 +01:00
MSP-Greg c4fe7bd15d Update Packages (tool-cache, http-client) & regenerate dist/index.js (#399) 2022-11-14 11:51:13 +01:00
ruby-builder-bot 84dd2abab6 Add ruby-3.2.0-preview3 2022-11-12 13:16:34 +01:00
Étienne Barrié 8ddb7b3348 Update @actions/cache 2022-11-10 14:42:13 +01:00
Benoit Daloze f2c070bbf7 Workaround https://github.com/oracle/truffleruby/issues/2780 2022-11-09 16:49:24 +01:00
ruby-builder-bot ece8276942 Add truffleruby-22.3.0 2022-10-25 18:52:44 +02:00
ruby-builder-bot bc92d02ed9 Add jruby-9.3.9.0 2022-10-25 12:37:24 +02:00
Benoit Daloze eae47962ba yarn upgrade 2022-10-14 13:41:58 +02:00
Benoit Daloze d240f61f8b Run pre-commit hook when changing yarn.lock 2022-10-14 13:41:53 +02:00
ruby-builder-bot 3068fa83f9 Add jruby-9.3.8.0 2022-09-13 21:14:11 +02:00
ruby-builder-bot 72d5948221 Add ruby-3.2.0-preview2 2022-09-09 09:51:50 +02:00
Benoit Daloze 51899ef157 Handle ./pre-commit being called directly and not as a git hook 2022-09-09 09:46:27 +02:00
Masato Yamashita a727442384 fix shebang in pre-commit. 2022-09-07 16:26:54 +02:00
MSP-Greg f564484a57 README.md updates & 'use ruby/setup-ruby@v1 2022-08-27 11:44:03 +02:00
Benoit Daloze ce94adffd3 Fix 2022-08-27 11:30:39 +02:00
Benoit Daloze 42a259edb2 Fix 2022-08-27 11:29:32 +02:00
Benoit Daloze f7849898b0 No blank issues 2022-08-27 11:22:59 +02:00
Benoit Daloze a3894ac3b7 Update issue templates 2022-08-27 11:22:23 +02:00
Benoit Daloze 5022ef5ab9 Update bug_report.yml 2022-08-27 11:09:32 +02:00
Benoit Daloze 875ff82065 Update bug_report.yml 2022-08-27 11:09:08 +02:00
Benoit Daloze 6776a1b083 Update bug_report.yml 2022-08-27 11:07:36 +02:00
Benoit Daloze b289c1ab17 Update bug_report.yml 2022-08-27 11:04:44 +02:00
Benoit Daloze b5206a3d03 Update bug_report.yml 2022-08-27 11:03:21 +02:00
Benoit Daloze 925d63f634 Use an issue form 2022-08-27 10:57:16 +02:00
Benoit Daloze 0b2c3ee702 Add test for when there is no Gemfile 2022-08-27 10:29:11 +02:00
Benoit Daloze 658402fc50 Only recompile if a .js or .json file was changed 2022-08-27 10:22:45 +02:00
Benoit Daloze 0a29871fe2 which rake does not work on Windows on Ruby 2.5+ 2022-08-23 20:43:55 +02:00
MSP-Greg ae403e8ff4 Don't install Bundler on Windows mingw, mswin & ucrt builds 2022-08-23 20:43:55 +02:00
Benoit Daloze 3804ad4ff2 Run which test on all platforms in shell: bash 2022-08-21 12:42:53 +02:00
Benoit Daloze 87ccb7599f Workaround the CRuby bug of bin/bundle in bash on Windows
* Fixes https://github.com/ruby/setup-ruby/issues/371
* See https://bugs.ruby-lang.org/issues/18970
2022-08-20 16:14:03 +02:00
Benoit Daloze 19b31c7064 Test that bundle is available in the bash shell 2022-08-20 16:04:04 +02:00
dependabot[bot] a1396b7d70 Bump @actions/core from 1.7.0 to 1.9.1
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.7.0 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 13:14:10 +02:00
ruby-builder-bot 5ece9850ad Add jruby-9.3.7.0 2022-08-17 18:08:13 +02:00
Benoit Daloze 6148f408d3 Test on ubuntu-22.04 2022-08-06 16:55:13 +02:00
Benoit Daloze 699560a00d Support all versions on Ubuntu 22.04 2022-08-06 16:54:03 +02:00
Benoit Daloze 8b5af312bd Fix permissions of release job 2022-07-29 18:24:39 +02:00
Benoit Daloze d5ee2364f0 Ensure Bundler 2.2+ is used for all Rubies which support Bundler 2 (Ruby >= 2.3) 2022-07-29 18:16:42 +02:00
Benoit Daloze 8731780d5e Remove extra condition 2022-07-29 18:16:42 +02:00
Benoit Daloze 3882fb634e Test gem github: in a Gemfile 2022-07-29 18:16:42 +02:00
Benoit Daloze d6ebfae201 Use read-only permissions for the test workflow 2022-07-27 19:16:35 +02:00
neilnaveen 3325fe2d4e chore: Set permissions for GitHub actions
Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

Signed-off-by: neilnaveen <42328488+neilnaveen@users.noreply.github.com>
2022-07-27 19:15:28 +02:00
Benoit Daloze e8f04a3cee Use latest Bundler on CRuby 2.6 and 2.7 as their default Bundler is too old 2022-07-26 21:55:37 +02:00
Benoit Daloze bb1d54ff77 Use a new cache version
* To make sure existing caches based on latest Bundler are not reused.
2022-07-26 21:17:48 +02:00
Benoit Daloze 4e1189c53d Use the Bundler shipped with that Ruby by default
* Fixes https://github.com/ruby/setup-ruby/issues/358
2022-07-26 20:57:23 +02:00
Benoit Daloze a54c48c94b TruffleRuby 22.2 supports OpenSSL 3 2022-07-26 15:40:56 +02:00
ruby-builder-bot cb55cb0ce4 Add truffleruby-22.2.0 2022-07-26 15:39:50 +02:00
ruby-builder-bot 08245253a7 Add jruby-9.3.6.0 2022-06-28 12:20:18 +02:00
ruby-builder-bot 51df335734 Add jruby-9.2.21.0 2022-06-28 12:16:09 +02:00
Benoit Daloze c4167d16b3 Link to JRuby on Windows issues 2022-06-26 14:06:55 +02:00
Benoit Daloze d97cd77c44 Create FUNDING.yml 2022-06-25 12:00:01 +02:00
Benoit Daloze 706bae07c5 Tweak no version found error message
* So it ends with "Use ruby/setup-ruby@v1" which seems to be what some
  people miss.
2022-06-21 11:03:22 +02:00
Benoit Daloze 2489e28c66 Use actions/checkout@v3 in workflows 2022-05-31 11:17:28 +02:00
Hiroshi SHIBATA d20d4c5fed Merge pull request #342 from kojix2/kojix2-patch1
Update README.md
2022-05-21 12:15:57 +09:00
kojix2 ad637dce55 Update README.md 2022-05-21 11:33:18 +09:00
Benoit Daloze 8029ebd6e5 Cleanup 2022-05-17 18:24:10 +02:00
MSP-Greg 356354c8aa Actions - show vcpkg list for mswin 2022-05-17 18:24:10 +02:00
MSP-Greg be54de855e Windows mswin - install vcpkg archive with required Ruby packages, cert 2022-05-17 18:24:10 +02:00
MSP-Greg cd4241788a MSP-Greg/setup-msys2-gcc -> ruby/setup-msys2-gcc, rmdirSync -> rmSync 2022-05-16 12:23:31 +02:00
MSP-Greg 3c76dcfa76 Update packages - @vercel/ncc, semver
semver was major update, but mostly refactor and dropping compatibility with old node versions
2022-05-16 12:23:31 +02:00
Benoit Daloze a7439cf424 Add support for macos-12 2022-05-16 12:08:36 +02:00
Benoit Daloze b9675e15ad Use quotes consistently for Ruby versions in docs
* To avoid issues from https://github.com/actions/runner/issues/849
2022-05-15 13:26:47 +02:00
Benoit Daloze 57a3395c80 Support some Rubies on ubuntu-22.04 2022-05-15 13:05:40 +02:00
Benoit Daloze 296bf7f67a Use an explicit list of supported platforms for nicer error messages 2022-05-15 12:21:30 +02:00
Yutaka Kamei e92b7971f0 Update Node.js from v12 to v16
According to the release policy of Node.js,
Node.js v12 reached EOL (end-of-life).

https://nodejs.org/en/about/releases/

I think ruby/setup-ruby is ready to update Node.js to v16
because GitHub Actions runners support v16.

https://github.com/actions/runner/issues/772
2022-05-10 11:19:53 +02:00
Hiroshi SHIBATA b2e1b33839 Merge pull request #329 from jwillemsen/patch-1
Updated README.md
2022-05-07 16:47:06 +09:00
Johnny Willemsen 645077fe5e Updated README.md
windows-latest is now windows-2022
2022-05-07 09:02:14 +02:00
Benoit Daloze 301d3e0984 Make it clear what is supported 2022-05-04 18:11:45 +02:00
MSP-Greg 8c72644a0b Windows mswin - use vsWhere instead of vssetup.powershell (much faster) 2022-05-02 20:51:22 +02:00
MSP-Greg d02b65e726 Actions - add windows-2022 mswin job 2022-05-02 20:51:22 +02:00
MSP-Greg d246303ba7 Windows mswin - use ucrt64 tools instead of mingw64 2022-05-02 20:51:22 +02:00
MSP-Greg d78e94b867 Windows mswin - update addVCVARSEnv 2022-05-02 20:51:22 +02:00
MSP-Greg 793715001d package.json and yarn.lock 2022-05-02 20:51:22 +02:00
Benoit Daloze 69fe46858b Use implicit defaults for most inputs so the GitHub Actions UI shows only the set options 2022-05-02 20:39:45 +02:00
Benoit Daloze dcbc29fae9 Shorten test descriptions 2022-05-02 20:31:14 +02:00
Benoit Daloze 3f53c4ecc2 Add tests 2022-05-02 20:23:57 +02:00
Benoit Daloze 9b993bc63c Use the given Bundler 1.x version if supplied on old Rubies
* Fixes https://github.com/ruby/setup-ruby/issues/327
2022-05-02 20:15:42 +02:00
Benoit Daloze d6a695ac2a Do not install Bundler if RubyGems was updated
* Updating RubyGems will install Bundler as a side effect.
* Fixes https://github.com/ruby/setup-ruby/issues/326
2022-05-02 19:39:53 +02:00
ruby-builder-bot e404913b05 Add ruby-3.2.0-preview1 2022-05-01 12:44:33 +02:00
ruby-builder-bot eb938a806e Add truffleruby-22.1.0 2022-04-26 16:44:11 +02:00
Benoit Daloze ee5764de2c Give more details on why the shipped Bundler is used in some cases 2022-04-22 17:06:58 +02:00
ruby-builder-bot 2b019609e2 Update CRuby releases on Windows 2022-04-20 21:33:41 +02:00
David Rodríguez 7e21bdc34c Reword mention to JRuby bug to make it clear that it's now fixed 2022-04-20 14:46:14 +02:00
Soumya Ranjan Mahunt b37f0a38ea add libgmp to requirements for self-hosted runners 2022-04-17 11:53:10 +02:00
ruby-builder-bot ebaea52cb2 Add ruby-3.1.2 2022-04-12 16:48:40 +02:00
ruby-builder-bot 382b2c5e9b Add ruby-3.0.4 2022-04-12 16:42:46 +02:00
ruby-builder-bot 0d85c5bbb7 Add ruby-2.6.10 2022-04-12 16:41:27 +02:00
ruby-builder-bot b80945c764 Add ruby-2.7.6 2022-04-12 16:32:06 +02:00
Jason Frey 1a68550f2e Fix bundler: with a minor version installing the wrong version
If passed `bundler: 2.2`, setup-ruby would install bundler 2.3, because
it would generate a constraint that looks like `~> 2.2`. This
unexpectedly installs the latest of the 2.x series, but the expectation
is that it would install the latest of the 2.2.x series.

Fixes #304
2022-04-05 18:04:27 +02:00
ruby-builder-bot bd94d6a504 Add jruby-9.3.4.0 2022-03-23 21:16:51 +01:00
Cliffano Subagio b9d02e5f7e Remove ubuntu-16.04 from the list of supported Ubuntu versions. 2022-03-14 10:07:50 +01:00
Benoit Daloze 4d8ce7b87d ruby-head now sets a proper ABI version
https://bugs.ruby-lang.org/issues/18249
2022-03-03 14:59:41 +01:00
Benoit Daloze cd9d3de43b Show stacktrace if available, in addition to error message 2022-02-27 17:51:33 +01:00
Benoit Daloze 7baabd2c5d Make new-version.rb windows delegate to generate-windows-versions.rb 2022-02-20 12:27:42 +01:00
Benoit Daloze e5517072e8 Add ruby-3.1.1 on Windows 2022-02-19 12:48:52 +01:00
Benoit Daloze cca23415f7 Fix test, 3.1.1 has a newer RubyGems 2022-02-18 20:50:26 +01:00
ruby-builder-bot cb1708a42d Add ruby-3.1.1 2022-02-18 20:50:21 +01:00
Benoit Daloze 339cddd0ab Update CONTRIBUTING.md about new versions 2022-02-18 18:09:56 +01:00
Benoit Daloze 0bb302e3c3 Update @actions/cache to latest to update node-fetch to 2.6.7
* Which fixes https://github.com/advisories/GHSA-r683-j2x4-v87g
2022-02-15 12:28:15 +01:00
Benoit Daloze 359bebbc29 Use the shipped Bundler on TruffleRuby 22.0
* To workaround https://github.com/oracle/truffleruby/issues/2586
2022-01-28 13:09:27 +01:00
Benoit Daloze fabf2515e6 Allow bundler: none + bundle-cache: true to use the Bundler shipped with that Ruby + the cache 2022-01-27 20:07:26 +01:00
Benoit Daloze 51c0d59222 Simplify to 22.0.0 in README (both work) 2022-01-25 20:46:56 +01:00
ruby-builder-bot 6d62a2dcce Add truffleruby-22.0.0.2 2022-01-25 20:45:27 +01:00
Benoit Daloze 8a48a656bf Update new-version script to handle truffleruby+graalvm automatically 2022-01-25 18:58:02 +01:00
Benoit Daloze 32c0569c64 Automatically update the latest version in the README 2022-01-23 17:33:38 +01:00
ruby-builder-bot f302e4ff49 Add jruby-9.3.3.0 2022-01-23 16:39:56 +01:00
Benoit Daloze 3065f0b392 Add script to automatically add a version to ruby-builder-versions.json 2022-01-23 15:03:32 +01:00
Benoit Daloze cf617ba62d Show ruby --version
* This is particularly useful for head builds and is also reasonably
  fast for all supported Rubies.
2022-01-23 12:27:11 +01:00
Benoit Daloze c96a8640af Make version files pure-data JSON files 2022-01-23 12:16:37 +01:00
Benoit Daloze d359377deb Fix title level in README 2022-01-23 11:58:25 +01:00
Benoit Daloze 4a1b0853ab Small cleanup 2022-01-23 11:55:32 +01:00
David Rodríguez c36d5afe85 Add a note about Psych + RubyGems issue 2022-01-23 11:55:32 +01:00
David Rodríguez 8781aa98b4 Tweak rubygems input behavior
When a fixed version is passed, it should be the minimum RubyGems
version for the whole matrix, i.e., RubyGems should not be dowgraded
past the default version of the oldest Ruby in the matrix.
2022-01-23 11:55:32 +01:00
David Rodríguez 578365d08b Add a short README section about the RubyGems version 2022-01-23 11:55:32 +01:00
David Rodríguez c3f0cb18af Add a new input to optionally update RubyGems 2022-01-23 11:55:32 +01:00
Benoit Daloze 180e1d1f1c windows-2016 is deprecated and windows-2022 is now supported
* Stop testing on windows-2016 to reduce the test matrix size to something reasonable.
2022-01-13 20:27:11 +01:00
Benoit Daloze 238b81ee64 Only log if changing something 2022-01-13 20:26:04 +01:00
Benoit Daloze 8f312efe12 Fix typo 2022-01-13 19:47:00 +01:00
Benoit Daloze 26470672e5 Small cleanups 2022-01-13 19:40:03 +01:00
MSP-Greg fb94cfb62e yarn run package 2022-01-13 19:25:34 +01:00
MSP-Greg f51e04d8c5 package.json & yarn.lock - @vercel/ncc: 0.28.6 -> 0.31.1 2022-01-13 19:25:34 +01:00
MSP-Greg e9c1c1bf40 windows.js - add hasMSYS2PreInstalled constant 2022-01-13 19:25:34 +01:00
MSP-Greg 24d6deea38 Windows JRuby - install MinGW tools, typo 2022-01-13 19:25:34 +01:00
MSP-Greg 3b96304b91 windows.js - suggested changes 2022-01-13 19:25:34 +01:00
MSP-Greg 18485596cf Windows - Rename 3rd party OpenSSL SYSTEM32 dll's 2022-01-13 19:25:34 +01:00
MSP-Greg 70ec766ec5 Actions - add windows-2022 jobs 2022-01-13 19:25:34 +01:00
MSP-Greg ffd46bd1d2 Only install mingw or ucrt for new Rubies 2022-01-13 19:25:34 +01:00
MSP-Greg 480fe921a2 windows.js - update addVCVARSEnv to work with all windows images 2022-01-13 19:25:34 +01:00
MSP-Greg 4fbcf63963 Install MSYS2 tools before gcc tools, clear pacman database folder 2022-01-13 19:25:34 +01:00
MSP-Greg 66308367ad log output - all 'ing', align 2022-01-13 19:25:34 +01:00
MSP-Greg b0aab3e1cf Add ruby-loco ucrt build 2022-01-13 19:25:34 +01:00
MSP-GregandLars Kanis 23b44d8ec5 Use ridk enable to set MSYS2 ENV variables
Co-authored-by: Lars Kanis <lars@greiz-reinsdorf.de>
2022-01-13 19:25:34 +01:00
MSP-Greg 6cc535991c Actions - Add Windows-2022 with ruby-head & ruby-mingw 2022-01-13 19:25:34 +01:00
MSP-Greg 226c4cceaa Add Windows MSYS2 ucrt and Windows-2022 support 2022-01-13 19:25:34 +01:00
Benoit Daloze 4726835508 Try 'gem install --force bundler' on 3.1 Windows 2022-01-10 17:52:23 +01:00
Koichi ITO bee16c98fd Support Ruby 3.1.0 for Windows
Follow up to https://github.com/oneclick/rubyinstaller2/issues/255#issuecomment-1003266597.

This PR adds Ruby 3.1.0 to windows-version.js.
2022-01-10 17:52:23 +01:00
Benoit Daloze 168d6a54b4 Remove 2.5 from example as it is EOL 2021-12-26 19:21:10 +01:00
shmokmt f0971f0dd4 Add Ruby 3.1.0 2021-12-26 19:21:10 +01:00
Benoit Daloze 471466b54c Add JRuby 9.2.20.1 and 9.3.2.0 2021-12-07 11:22:34 +01:00
Benoit Daloze be0cc84c1b Add 2.6.9, 2.7.5 and 3.0.3 on Windows 2021-11-30 19:19:02 +01:00
aparna-ravindra e7eea4e63a using actions/cache version 1.0.8 2021-11-30 15:18:35 +01:00
Ryan Laughlin bb8200704b Update CONTRIBUTING.md 2021-11-26 17:35:31 +01:00
Bertrand Paquet cf1a6dd2d8 Also add 2.6.9 and 2.7.5 2021-11-24 19:20:49 +01:00
Bertrand Paquet 5b2e10fa5f Add ruby 3.0.3 2021-11-24 19:20:49 +01:00
Benoit Daloze 313811148f Previews are not available on Windows 2021-11-24 19:19:52 +01:00
Jankees van Woezik 74cfbf0614 Clarify the use of ImageOs on self hosted runners 2021-11-24 18:57:32 +01:00
Benoit Daloze f20f1eae72 Test 3.1 too 2021-11-11 13:19:00 +01:00
Brian Kephart 330f7f5faa Add Ruby 3.1.0-preview1 2021-11-11 13:18:51 +01:00
Benoit Daloze a2b2637a7c Add JRuby 9.2.20.0 2021-11-07 15:20:50 +01:00
Benoit Daloze e5b2d1fb1e Document how to add a new Ruby version 2021-11-07 15:20:29 +01:00
Benoit Daloze b00551441a Add TruffleRuby and TruffleRuby GraalVM 2021-10-19 19:07:24 +02:00
Pavel Rosický f514fbcdac Add JRuby 9.3.1.0 2021-10-14 12:22:08 +02:00
Benoit Daloze a6f2286594 Use the proper ABI version for caching gems of truffleruby-head
* Previously the commit was used.
2021-10-05 16:57:38 +02:00
Benoit Daloze c84889b9b9 TruffleRuby correctly changes the ABI version now 2021-10-05 16:51:03 +02:00
Benoit Daloze ac03cb7d18 Use .test() instead of .match() where possible 2021-09-25 13:45:43 +02:00
Benoit Daloze 5e4f0a10bf Add JRuby 9.3.0.0
* Fixes https://github.com/ruby/setup-ruby/issues/220
2021-09-25 12:42:44 +02:00
Benoit Daloze 57d46d78b7 Installing libxml2-dev libxslt-dev is only needed on TruffleRuby < 21.1
* TruffleRuby >= 21.1 installs nokogiri with the packaged libxml2/libxslt
  like on CRuby by default. See https://github.com/oracle/truffleruby/issues/62
2021-08-07 20:08:38 +02:00
Benoit Daloze 7edf159e98 Add support for truffleruby+graalvm
* Using ruby-build to avoid duplicating too much logic.
2021-08-07 20:05:23 +02:00
Benoit Daloze d9a8687ae9 Add TruffleRuby 21.2.0.1 2021-08-04 15:35:20 +02:00
Benoit Daloze ae9cb3b565 Add Ruby 1.9 on Linux and macOS
* On Windows there are no 64-bit builds of Ruby 1.9.
* Fix floatVersion() for head versions.
* Use floatVersion() in more cases instead of regexps.
* Rely on ~/.gemrc to not install gem docs.
2021-08-01 14:56:11 +02:00
Benoit Daloze 77d7ca9909 Document a recent Bundler is needed on Windows 2021-07-29 14:18:45 +02:00
Benoit Daloze e08bf35edf Ensure the typical bundle exec rake works in all cases 2021-07-29 13:24:06 +02:00
Benoit Daloze 0997e21bf3 Fix check for TruffleRuby < 21.0 and Bundler 1 2021-07-27 13:35:24 +02:00
Benoit Daloze 0c7e9c4d53 Add TruffleRuby 21.2.0 2021-07-20 21:21:01 +02:00
Benoit Daloze ee30953387 Use an absolute path for BUNDLE_GEMFILE in tests too 2021-07-15 22:58:01 +02:00
Jonathan Hefner a4630ae79b Suggest absolute path for BUNDLE_GEMFILE
This ensures the gemfile can be found when a step changes the working
directory.
2021-07-15 22:57:05 +02:00
Benoit Daloze cae9d256bd Add Ruby 2.6.8, 2.7.4 and 3.0.2 on Windows 2021-07-14 11:45:27 +02:00
Benoit Daloze 189661fc29 Remove workflow schedule as it causes the workflow to be disabled in forks 2021-07-07 22:35:50 +02:00
Benoit Daloze d3625ee300 Add Ruby 2.6.8, 2.7.4 and 3.0.2 2021-07-07 22:35:35 +02:00
Benoit Daloze a783f957cd Remove unnecessary check 2021-06-27 13:41:20 +02:00
MSP-Greg 2ebd17bccd Update runtime logging of Path adjustments, show additions 2021-06-27 13:40:18 +02:00
MSP-Greg 9f177f2b7c Improve Path info in CI, add workflow_dispatch 2021-06-27 13:40:18 +02:00
MSP-Greg 477b21f02b Fix ruby-builder.js - Windows io.mkdirP("D:\\") 2021-06-18 16:35:19 +02:00
MSP-Greg 65c1995be7 package.json - update dependencies, @vercel/ncc 2021-06-18 16:35:19 +02:00
Benoit Daloze fe983d22a1 Add JRuby 9.2.19.0 2021-06-18 14:31:32 +02:00
Robin Wallin 517a3b1b36 Enable sassc test on JRuby on Windows
9.2.18.0 has been released, so this should work now.
2021-06-10 11:24:56 +02:00
Robin Wallin 4406a4131e Add JRuby 9.2.18.0 2021-06-09 15:26:53 +02:00
Benoit Daloze 1328335dba Cleanup 2021-06-06 11:03:36 +02:00
Benoit Daloze ea774f6ee1 CI: show gem env 2021-06-06 11:03:29 +02:00
Benoit Daloze 77ca66ce27 Add 2.0.0 on Windows too 2021-05-31 22:18:27 +02:00
Filipe Brandenburger fd1a6a00ca Mention Ruby 2.0 in README and add it to CI 2021-05-31 22:07:29 +02:00
Filipe Brandenburger 01144718b5 Add ruby-2.0.0-p648 to the list
It was added to toolcache in commit 9fa277367b8cd338cfc5aca4b91d854e8e0a58b2.
2021-05-31 22:07:29 +02:00
Jakub Pavlik b161cb92f0 document cache-version 2021-05-15 16:32:01 +02:00
Jakub Pavlik fa2182b2a4 cache-version input allowing a forced change of the cache key 2021-05-15 16:32:01 +02:00
Benoit Daloze 2eb6adbfb1 Update URLs for RubyInstaller 1 and DevKit
* See https://github.com/ruby/setup-ruby/issues/171
  and https://github.com/oneclick/rubyinstaller/issues/400
2021-04-26 23:48:02 +02:00
Benoit Daloze 6f2028eda5 Add TruffleRuby 21.1.0 2021-04-20 16:32:58 +02:00
Benoit Daloze b12138f02d Add reminder to use ruby/setup-ruby@v1 for latest Ruby releases 2021-04-20 14:17:53 +02:00
Benoit Daloze b2296551a1 Pick up new releases from RubyInstaller 2021-04-20 14:13:43 +02:00
Benoit Daloze d320226fe2 Automatically pick the latest version of 2.6 for testing
* 2.6.7 is not yet available on Windows
2021-04-05 19:47:58 +02:00
Benoit Daloze d2f535c1ed Add Ruby 2.5.9, 2.6.7, 2.7.3 and 3.0.1
* Simplify list of supported CRuby versions.
2021-04-05 19:39:06 +02:00
Benoit Daloze ad65390c0a Disable sassc test on JRuby on Windows as it fails on 9.2.17.0
* See https://github.com/jruby/jruby/issues/6648
2021-04-02 11:47:35 +02:00
Benoit Daloze c5c7583a68 Run 'yarn install' in pre-commit hook to make sure the right ncc version is used 2021-04-02 11:47:35 +02:00
Charles Oliver Nutter 117edf3c27 Update for JRuby 9.2.17.0 2021-04-02 11:47:35 +02:00
Benoit Daloze df8f44e55c Improve issue template 2021-03-28 17:31:46 +02:00
Benoit Daloze 2b7bafee36 Clarify 2021-03-28 17:26:01 +02:00
Benoit Daloze dddacd7ec1 Document the logic for whether to install Bundler 2021-03-25 16:49:40 +01:00
Benoit Daloze 5ee10197cf TruffleRuby >= 21.0 and JRuby >= 9.3 ship with Bundler 2 2021-03-25 16:46:35 +01:00
Thomas E Enebo 4f47b3664d JRuby 9.3 (head) and forward ships bundler (#164) 2021-03-25 16:43:15 +01:00
Hiroyuki Shirakawa b97fdb9941 write actual action name 2021-03-23 11:22:26 +01:00
Kazuhiro NISHIYAMA 0a19fc237d ubuntu-latest is ubuntu-20.04 now
https://github.com/actions/virtual-environments/blob/dee50eebffa60a7dd9149033675d44a027dd6b33/README.md#available-environments
2021-03-23 11:16:07 +01:00
Benoit Daloze 745f03fc1c Simplify and shorten comment 2021-03-05 13:42:15 +01:00
OKURA Masafumi 51b5bc2e0e Add a comment about version quotations to README
As described in the comment, due to a bug discussed on https://github.com/actions/runner/issues/849,
we currently have to use quotes for  '3.0' as a workaround.
This change makes it easy for people not to remove quotes as they misunderstand it's a typo.
2021-03-05 13:41:42 +01:00
Benoit Daloze 034294ac91 Add JRuby 9.2.16.0 2021-03-04 22:13:53 +01:00
Benoit Daloze b818bea8cf Add JRuby 9.2.15.0 2021-02-25 20:20:33 +01:00
Benoit Daloze 4281753149 Add a note about quoting (#155) 2021-02-23 22:06:45 +01:00
Benoit Daloze 7b5a90250e Typo 2021-02-21 11:53:40 +01:00
Benoit Daloze e90803a1bf Clarify how to find out the correct BUNDLE_ env var name 2021-02-21 11:51:34 +01:00
Bruno Pinto fdcfbcf14e Enforce bundler version 1 for ruby 2.3.0 and 2.3.1
Fix https://github.com/ruby/setup-ruby/issues/148
2021-01-26 17:34:37 +01:00
Bruno Pinto a358e49b56 Remove bundler enforcement on ruby 2.3
The fix for rubygems/rubygems#3570 was released with bundler 2.2.0.rc.1.
2021-01-26 15:20:41 +01:00
Benoit Daloze 6e288cd651 TruffleRuby 21.0.0 works on macOS 11.0 2021-01-20 16:42:36 +01:00
Benoit Daloze 3ab5bf6391 Add TruffleRuby 21.0.0 2021-01-20 16:09:38 +01:00
Benoit Daloze 1891d63a08 Fix error message when trying to install truffleruby on windows 2021-01-19 16:32:54 +01:00
Benoit Daloze c782da25bd Document how to replace bundle config commands 2021-01-16 15:16:52 +01:00
Benoit Daloze 5aaa89ff0d Automatically install libxml2-dev libxslt-dev on TruffleRuby if needed
* This is a special case, because TruffleRuby needs an extra system
  dependency that other Rubies do not, and GitHub runners do not have
  these packages installed by default, while TravisCI has them.
2021-01-09 14:48:58 +01:00
Benoit Daloze 3460195737 Update exact Bundler version test
* So that we test it does not pick the next patch version (2.2.4).
* See https://github.com/ruby/setup-ruby/issues/138
2021-01-08 21:06:57 +01:00
Benoit Daloze d195ecb9ec Move Bundler-related logic to a separate file 2021-01-08 20:56:31 +01:00
Manuel Meurer c34fe21c5f Install specific bundler version when minor and patch versions are given (#139) 2021-01-07 14:03:20 +01:00
Benoit Daloze 324b8ce0e9 Update issue templates 2021-01-03 13:37:45 +01:00
Benoit Daloze ce63da5b3b Make it clear bundler-cache: true is correct, and doing it manually is not good enough 2020-12-30 16:57:15 +01:00
Benoit Daloze 0d3b8b502e Make it clear manually caching gems is a bad idea 2020-12-30 12:36:20 +01:00
Benoit Daloze 2320cdc287 Use on: [push, pull_request] in examples 2020-12-30 11:48:57 +01:00
Benoit Daloze 95193d6d48 Ensure no \r are added when running generate-windows-versions.rb on Windows 2020-12-28 12:40:07 +01:00
MSP-Greg 9aeedd9a81 Update windows-version.js with 3.0.0, add Windows 3.0.0 to CI 2020-12-28 12:40:07 +01:00
Benoit Daloze 72d75bd883 Avoid explicit line break in README 2020-12-25 13:23:13 +01:00
Benoit Daloze 473e4d8fe5 Add Ruby 3.0.0 2020-12-25 13:14:24 +01:00
Benoit Daloze 3cb8cff23d Consistency 2020-12-22 11:49:37 +01:00
Benoit Daloze f36eef7a2f Add an example with a matrix of Gemfiles 2020-12-22 11:46:12 +01:00
Benoit Daloze ec4649be90 Add test for a Gemfile depending on Bundler 1 2020-12-22 11:46:12 +01:00
Benoit Daloze 1771151f64 Error if $BUNDLE_GEMFILE is set but does not exist 2020-12-22 11:46:12 +01:00
Benoit Daloze f5db46ebcb Fix version check 2020-12-22 11:18:45 +01:00
Benoit Daloze dc58db7220 Use an absolute path for bundle config --local path
* See https://github.com/ruby/setup-ruby/issues/131
2020-12-21 21:13:02 +01:00
Benoit Daloze 0e7d36a67f Add test using BUNDLE_GEMFILE 2020-12-21 21:12:42 +01:00
Benoit Tigeot e5b6990d51 Add 3.0.0-rc1 2020-12-21 12:30:17 +01:00
Benoit Daloze c3f248a282 Update docs about Bundler 2020-12-14 12:55:47 +01:00
Benoit Daloze a9926985f9 Small tweaks to the README example 2020-12-12 19:38:17 +01:00
Benoit Daloze 07b100f2a1 Reduce the number of CI jobs since it is becoming impractical
* It was > 100 jobs and the GitHub limits to 100 jobs.
2020-12-12 15:17:54 +01:00
Benoit Daloze 515629a013 Update to latest actions/cache to fix cache saving on Windows with MSYS2 tar
* See https://github.com/actions/toolkit/issues/632
* Fixes https://github.com/ruby/setup-ruby/issues/102
2020-12-12 14:51:32 +01:00
Benoit Daloze 0981b5ec00 Add jruby-9.2.14.0 2020-12-12 14:04:27 +01:00
Benoit Daloze c101335f33 Add test checking using an exact Bundler version works 2020-12-11 14:46:33 +01:00
Benoit Daloze 1482e9180a Install the exact same Bundler version as in the lockfile if there is a lockfile 2020-12-11 14:46:33 +01:00
Jonathan del Strother 3e7640a17e Document the bundler: "x.y.z" feature 2020-12-11 14:46:33 +01:00
Benoit Daloze f6f61ea575 Fix checks for Bundler version to consider an exact version like 2.1.4 2020-12-11 14:46:33 +01:00
Benoit Daloze 084885eaca Only set $BUNDLER_VERSION when needed (Bundler 1, Ruby >= 2.7) 2020-12-09 16:51:47 +01:00
Benoit Daloze efd6675fc9 Add 3.0.0-preview2 2020-12-08 18:42:10 +01:00
Benoit Daloze e5a267414f Fix value for options 2020-12-07 21:12:36 +01:00
ojab cadade3366 Pass selected Bundler version to bundle config & bundle lock 2020-12-07 21:06:26 +01:00
Benoit Daloze d3562e70d9 Use lowercase names for interpreters
* So the mapping to `engine-version` versions is clearer.
2020-12-05 17:23:19 +01:00
Benoit Daloze 23b2b5e5f1 Create the .complete file so tc.find() can find it for future runs for self-hosted runners 2020-12-05 16:36:46 +01:00
Benoit Daloze 42fc2d3bce Reuse builds in the toolcache when they exist 2020-12-05 16:18:50 +01:00
ojab 30f5e2d4cd Fixup bundler version for rubies with bundler as a default gem
Fixes #117
2020-12-05 15:40:47 +01:00
Benoit Daloze fd1d77b75c GitHub Actions parses 3.0 as '3', so use quotes
* And adapt excludes.
2020-12-05 13:14:51 +01:00
Benoit Daloze 2a0be7a409 Try stable versions first, and then try non-head versions
* Fixes https://github.com/ruby/setup-ruby/issues/115
2020-12-05 12:52:21 +01:00
Benoit Daloze bacba738b2 Run bundle clean when reusing a cache and the lockfile changed
* Fixes https://github.com/ruby/setup-ruby/issues/113
2020-12-02 17:36:27 +01:00
Benoit Daloze 21351ecc0a More details about BUNDLE_GEMFILE 2020-11-27 11:16:50 +01:00
Benoit Daloze 4d7e038419 Show how to set BUNDLE_GEMFILE in the README 2020-11-27 11:03:17 +01:00
Benoit Daloze e27aee156d Add TruffleRuby 20.3.0 2020-11-20 13:00:18 +01:00
Benoit Daloze 43bb24d212 Run lint explicitly on Ubuntu 20.04 to avoid warning 2020-11-20 13:00:18 +01:00
Benoit Daloze 0c4183e8b8 truffleruby-head works fine on macOS Big Sur now 2020-11-20 12:39:46 +01:00
Benoit Daloze 50ae8432ea Remove part about continue-on-error in example
* It does not seem to work well.
* See https://github.com/actions/toolkit/issues/399
2020-11-20 12:37:14 +01:00
Benoit Daloze a699edbce6 Add test for ruby-3.0.0-preview1 2020-11-19 00:33:41 +01:00
Benoit Daloze e38f9abc9e Fix usages of string.split(sep, limit)
* Since the limit just removes further matches in JavaScript.
2020-11-19 00:33:40 +01:00
Benoit Daloze 7c2bf7263d Ensure an engine-only ruby-version picks the latest stable version and not a preview or RC 2020-11-18 21:52:51 +01:00
Benoit Daloze 34fbbc1d36 Update README.md 2020-11-16 12:13:08 +01:00
Benoit Daloze 9bc07a3af0 No builds of truffleruby{,-head} on macos-11.0 yet 2020-11-13 10:48:04 +01:00
Benoit Daloze 63dde36864 Remove the Caching bundle install manually section
* It is too error prone and the automatic approach is a lot safer and easier.
2020-11-13 10:38:56 +01:00
Benoit Daloze fde3324171 Remove redundant bundle install in the usage examples 2020-11-13 10:38:56 +01:00
Benoit Daloze 59aafb8612 Add support for macos-11.0 2020-11-13 10:33:21 +01:00
Benoit Daloze ad1ebae995 Also include the version in the platform for macos and windows
* Guess the platform based on $ImageOS.
2020-11-12 20:23:53 +01:00
Benoit Daloze f4a8aa6c33 Use ImageOS for the cache key, so it also includes the OS version 2020-11-12 19:59:05 +01:00
Benoit Daloze bc0f274d1c Fix Bundler cache when there is no Gemfile.lock
* Always show the list of installed gems in the log.
2020-11-12 19:34:43 +01:00
Benoit Daloze 1c896c8ea1 Always use Bundler 1 for JRuby 9.1.x 2020-11-12 19:08:42 +01:00
Benoit Daloze ba761ba8ff Use a hardcoded toolcache path since we need to extract there to let Ruby work 2020-11-10 19:58:59 +01:00
Benoit Daloze bb3a0c6e0b Bundler 2 is shipped with truffleruby-head now 2020-11-10 15:33:41 +01:00
Benoit Daloze 8e77d9e0fa Mention RUNNER_TOOL_CACHE requirements for self-hosted runners 2020-11-10 11:44:22 +01:00
Benoit Daloze 339f055c86 Clarify Windows check 2020-11-10 11:35:50 +01:00
Benoit Daloze 0592d01dc3 Ruby 2.4 is EOL
https://www.ruby-lang.org/en/news/2020/04/05/support-of-ruby-2-4-has-ended/
2020-11-09 19:42:02 +01:00
Benoit Daloze d7b76f909a Add Ruby 3.0.0-preview1
* Fixes https://github.com/ruby/setup-ruby/issues/100
2020-11-09 13:07:33 +01:00
Benoit Daloze ebed7f7b66 Invalidate cache key since Rubies are installed in the toolcache now
* Some gems might capture the absolute path of the Ruby prefix.
2020-11-09 13:01:13 +01:00
Benoit Daloze 933dca770c Extract CRuby releases under $RUNNER_TOOL_CACHE 2020-11-09 13:00:42 +01:00
Benoit Daloze 693cf1794d Include the Gemfile path in the cache key
* See https://github.com/ruby/setup-ruby/issues/103#issuecomment-723960352
2020-11-09 13:00:04 +01:00
Benoit Daloze efda314f4a Remove Rubinius support
* Fixes https://github.com/ruby/setup-ruby/issues/101
2020-11-09 12:50:25 +01:00
Benoit Daloze c49deecea1 Rubinius builds will no longer be provided 2020-11-08 19:13:11 +01:00
Benoit Daloze 5da31b45d7 Revert "Test installing rake to check RubyGems recognizes the executable as safe to override"
* This reverts commit 35f0af38a7.
* It fails for some cases like Ruby <= 2.2 and on some RubyInstaller builds,
  see https://github.com/ruby/setup-ruby/issues/98#issuecomment-723468255
* Most users will use Bundler to install rake, and that already works fine.
2020-11-07 17:53:13 +01:00
Benoit Daloze 4bb29a57df Use the new format for ruby-builder version strings 2020-11-07 16:55:06 +01:00
Benoit Daloze 9be533b7d4 Print JRuby Windows versions for ruby-builder conveniently 2020-11-01 17:11:43 +01:00
Benoit Daloze 35f0af38a7 Test installing rake to check RubyGems recognizes the executable as safe to override 2020-11-01 16:54:38 +01:00
Benoit Daloze b9ca796ede Print RbConfig values in tests 2020-10-23 15:58:23 +02:00
Benoit Daloze 11082225e4 Mention bundler-cache: true in the README examples 2020-10-22 14:13:53 +02:00
Benoit Daloze 4de6eb91a8 Update test.yml 2020-10-22 14:12:09 +02:00
Benoit Daloze 60f215c278 Clarify the cleanups when using bundler-cache: true 2020-10-22 14:10:27 +02:00
Benoit Daloze a195098f6b Add Ruby 2.7.2 build from RubyInstaller 2020-10-06 16:41:11 +02:00
Benoit Daloze f117ca04d8 Add Ruby 2.7.2 2020-10-04 16:38:29 +02:00
dependabot[bot] 8bc9ca9ace Bump @actions/core from 1.2.4 to 1.2.6
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.4 to 1.2.6.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-01 22:10:14 +02:00
Benoit Daloze 965ef501d4 Tweak wording 2020-09-19 12:14:15 +02:00
Benoit Daloze 153ca5e38f Update documentation about self-hosted runners 2020-09-19 12:06:35 +02:00
Benoit Daloze 0effb2cc50 Document that gems.rb/gems.locked is supported now 2020-09-19 11:43:36 +02:00
Benoit Daloze b62e5d53aa Take advantage that detectGemfiles() only returns existing paths
* So use !== null instead of redoing the existsSync() check.
* Rename a few variables for consistency.
2020-09-19 11:31:18 +02:00
Samuel Williams 1c172ef5dc Add support for gems.rb/gems.locked during bundle install (#84)
* Extract detection of gemfile and lockfile.
2020-09-19 11:18:52 +02:00
dependabot[bot] 4cbbce6b48 Bump node-fetch from 2.6.0 to 2.6.1
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-13 13:21:14 +02:00
Benoit Daloze 108b3a2c8a Various cleanups 2020-09-03 13:42:03 +02:00
Benoit Daloze 25ccf0aad8 Fix interpolation in addVCVARSEnv() 2020-09-03 13:42:03 +02:00
Benoit Daloze 9ec93a2370 Print the full $PATH with bash to help debugging 2020-09-03 13:21:50 +02:00
MSP-Greg a096b998ad Add Actions 'bash test' and 'Windows JRuby' (gem install sassc) steps 2020-09-03 12:13:49 +02:00
MSP-Greg 6ead459c74 Add envPreInstall, common.setupPath, use MSYS2 bash for Windows bash
envPreInstall - sets ENV values for runners

common.setupPath - collects all Path operations into one function, runs before Ruby install

Add MSYS2 paths to all Windows builds for MSYS2 Bash use
2020-09-03 12:13:49 +02:00
MSP-Greg 45ec312a6e windows.js - remove code for embedded MSYS2 2020-09-03 12:13:49 +02:00
Benoit Daloze 568cdbf232 Revert "Add support for gems.rb/gems.locked during bundle install."
* This reverts commit 638e8fff19.
* Needs some fixes and review.
2020-09-03 11:58:37 +02:00
Samuel Williams 638e8fff19 Add support for gems.rb/gems.locked during bundle install. 2020-09-03 10:48:45 +12:00
MSP-Greg ad2d64d83c @zeit/ncc -> @vercel/ncc, update package.json 2020-08-23 13:50:07 +02:00
Scott Jacobsen 0ccde464c3 Bump @actions/cache version
The @actions/cache version currently being used has performance issue
with large gem caches. See https://github.com/actions/cache/issues/267

This was addressed here https://github.com/actions/toolkit/pull/497

Bump the @actions/cache version to a newer release that contains that
fix.
2020-08-22 11:17:58 +02:00
Benoit Daloze bdfdb53a44 Try to fix quoting issue on Windows 2020-08-20 15:29:19 +02:00
Benoit Daloze 842f7a91c4 Fix the open-uri test to work on all versions
* open-uri no longer makes #open open URLs on MRI 2.8 dev
2020-08-19 16:43:17 +02:00
Benoit Daloze 6c10c0bae0 Add TruffleRuby 20.2.0 2020-08-19 16:33:37 +02:00
Benoit Daloze 312f3d08ba Improve the README, move the working directory section, mention $BUNDLE_GEMFILE 2020-08-13 20:34:29 +02:00
Attila Večerek 273e7443b6 Move further explanation over to the README 2020-08-13 20:18:19 +02:00
Attila Večerek 33cc6f7238 Shorten the description in action.yml 2020-08-13 20:18:19 +02:00
Attila Večerek 7ac926d65e Update description of bundler input in action.yml 2020-08-13 20:18:19 +02:00
Attila Večerek 1682e5e389 Read path to gemfile from env variable 2020-08-13 20:18:19 +02:00
Attila Večerek 25388a3d11 Accept a path in readBundledWithFromGemfileLock 2020-08-13 20:18:19 +02:00
Jakob Krigovsky aa7df8d81f Fix broken Markdown link 2020-08-13 19:50:42 +02:00
Benoit Daloze 162161eab5 Remove lint command
* eslint has been removed.
2020-08-12 10:58:59 +02:00
Gregory Huczynski c233f78bee Add JRuby 9.2.13.0 2020-08-12 10:58:05 +02:00
Holger Just 5a76bd6a5f Add support for Ruby 2.1 (#71) 2020-07-16 22:23:31 +02:00
Benoit Daloze 40bbc5ec66 Also include the commit in the cache key for truffleruby-head
* That way new caches can be created if the previous cache is for a different commit.
2020-07-11 16:08:35 +02:00
Benoit DalozeandEliza Brock Marcum 1bb7de255b Treat error from restoring the cache as a cache miss (#68)
* Don't retry or error out on restore cache errors

Co-authored-by: Eliza Brock Marcum <eliza@elizamarcum.com>
2020-07-11 16:02:33 +02:00
M. Adam Kendall 973b1baf94 Update README to reflect conditions for self-hosted runners 2020-07-09 01:07:29 +02:00
Benoit Daloze ef4b00fd12 Mention JRuby 9.2.12.0 in the README 2020-07-02 11:35:41 +02:00
MSP-Greg 271876da60 Allow running external function before 'bundle install'
External actions may use setup-ruby, and some actions make changes/additions to the build environment. These may be needed for dependencies.

Hence, allow those external actions to run code before 'bundle install'. This is done by passing a function as a parameter to setupRuby().
2020-07-01 21:22:43 +02:00
Benoit Daloze 5c4fc21c57 Add JRuby 9.2.12.0 2020-07-01 21:16:36 +02:00
Benoit Daloze c8a88df157 Refactor how to call setup-ruby from other actions
* Automatically use inputs if available, use defaults otherwise.
2020-06-14 16:51:29 +02:00
Benoit Daloze d57231c9a3 Implement automatic bundle install and caching
* Not yet enabled by default.
2020-06-14 13:22:16 +02:00
Benoit Daloze 281d1c54fe Add the @actions/cache package 2020-06-14 13:22:16 +02:00
Benoit Daloze ea86920b92 Add windows-2016 to supported platforms
* Recommend to use *-latest.
2020-06-11 13:22:47 +02:00
Johnny Willemsen a43803ce44 Test all virtual environments, not just the latest, and added crontab (#60) 2020-06-11 13:15:53 +02:00
Benoit Daloze bf8b766096 Cleanups 2020-06-10 23:44:28 +02:00
MSP-Greg 44338c51c7 Fix tar extraction with windows-2016 image
1. common.js - add function win2nix(path) to convert windows style paths to nix style

2. ruby_builder.js - use Git tar for windows-2016, leave windows-2019 as is
2020-06-10 23:41:09 +02:00
Sora Morimoto 037dfa7b6b Update README.md 2020-06-09 15:38:02 +02:00
Benoit Daloze 6647273ce9 Add support for Ubuntu 20.04 2020-06-07 13:16:44 +02:00
Benoit Daloze 071acb9122 Add script to conveniently print versions for ruby-builder 2020-06-07 13:00:19 +02:00
Benoit Daloze ba5b846810 Add TruffleRuby 20.1.0 2020-06-06 17:04:00 +02:00
Benoit Daloze 81be0938f7 Add an exported setupRuby() function which can be called from other actions
* Inputs are passed as simple object properties.
* It is recommended to expose the same inputs for other actions.
* See #58 and #33.
2020-06-06 13:52:42 +02:00
Benoit Daloze b04e5b8846 Use Bundler 1 on Ruby 2.3
* At least until there is a new Bundler 2 release fixing this.
* Fixes https://github.com/ruby/setup-ruby/issues/51
2020-06-06 13:16:46 +02:00
Benoit Daloze a7df86edc6 A separate bundle config path vendor/bundle is needed for older Bundler
* See https://github.com/ruby/setup-ruby/pull/53#issuecomment-624827273
2020-05-16 18:55:34 +02:00
Scott Jacobsen 8137829321 Use the new deployment true config setting 2020-05-16 18:52:00 +02:00
Scott Jacobsen a1d280134e Use the --deployment flag for bundle install
`bundle install --deployment` should be used on CI environments - it sets additional options beyond the install path (ensures the Gemfile.lock is checked in, up to date, etc). https://bundler.io/v2.0/man/bundle-install.1.html#DEPLOYMENT-MODE
2020-05-16 18:52:00 +02:00
Benoit Daloze d01e942f09 Link to condition and expression syntax docs too 2020-05-15 13:48:07 +02:00
Benoit Daloze e74945bcae Update README example workflows
* Show how to continue-on-error for head builds.
* Use the typical `bundle install` + `bundle exec rake` commands.
2020-05-15 13:29:19 +02:00
Benoit Daloze 8bff4379b9 Ruby 2.4 is EOL 2020-05-15 13:22:42 +02:00
Benoit Daloze 23b9735206 Fix checks for head versions
* Always use common.isHeadVersion().
2020-05-15 13:01:01 +02:00
Benoit Daloze 002b15eeca Add support for ruby master debug builds 2020-05-13 23:48:52 +02:00
Benoit Daloze e5857dbffe Pass the validated engine and version to install() 2020-05-13 23:36:33 +02:00
Benoit Daloze 381e2639aa Update all dependencies 2020-04-29 20:36:28 +02:00
Benoit Daloze d4032b551d The release workflow needs a full checkout 2020-04-18 14:01:20 +02:00
Benoit Daloze da846ef6db Add a workflow to automatically bump the v1 branch when publishing a release 2020-04-18 13:51:50 +02:00
Benoit Daloze 1fe99df431 Rename CI job back to test 2020-04-18 13:36:48 +02:00
Benoit Daloze c28669c4da Mention the new working-directory input in the README 2020-04-18 13:34:32 +02:00
Benoit Daloze 9f60be7c73 Extract main logic in its own function
* So there isn't a giant try/catch around it.
2020-04-18 13:24:09 +02:00
Chris Bailey 29eefdda13 Add support for setting a working directory 2020-04-18 13:22:34 +02:00
Benoit Daloze ec106b438a Document the consequences of using a specific version or commit sha 2020-04-09 19:25:18 +02:00
Benoit Daloze d7f9647ad8 Move Versioning earlier in README 2020-04-09 19:09:20 +02:00
Benoit Daloze f25e77d702 Do not show a "Installing Bundler" group if bundler: none
* That was rather confusing.
2020-04-05 20:04:22 +02:00
Benoit Daloze 463c3a8161 Simplify conditions 2020-04-05 14:46:21 +02:00
Benoit Daloze 63190648f4 Add some spacing in workflow 2020-04-05 14:44:43 +02:00
Benoit Daloze aec70617e0 Let CI run on pushes to master 2020-04-05 14:43:13 +02:00
Benoit Daloze 759c98774b Merge CI in a single workflow with the new include syntax 2020-04-05 14:25:26 +02:00
Benoit Daloze 24d7979773 Simplify os syntax in CI to avoid so many '-latest' 2020-04-05 14:18:41 +02:00
Benoit Daloze 56996937ab Clarify messages about the shipped Bundler being reused 2020-04-05 14:16:21 +02:00
Benoit Daloze e9b0369f85 Add groups to clarify output and measure the time each group takes 2020-04-05 14:09:18 +02:00
Benoit Daloze 045dd42354 Fix indentation 2020-04-05 13:51:43 +02:00
Benoit Daloze 152ff008a3 Extract utility methods to common.js 2020-04-05 13:27:45 +02:00
Benoit Daloze d4f9058279 Reorder 2020-04-03 23:59:35 +02:00
Benoit Daloze c40ce85201 Do not install Bundler 2 for ruby-head since it already ships a version that might work better 2020-04-03 23:58:23 +02:00
Benoit Daloze c68e25cb8c Explicitly use Bundler 2 if there is no version specified
* Avoid issues when using --conservative as seen in
  https://github.com/ruby/setup-ruby/pull/48, clarifies what's getting
  installed and simplifies the following logic.
* We'll probably need changes when Bundler 3 comes out anyway.
2020-04-03 23:57:16 +02:00
MSP-Greg 95135e9903 README.md - remove reference to MSP-Greg/actions-ruby
Preferred repo is now MSP-Greg/setup-ruby-pkgs
2020-04-03 23:42:22 +02:00
Benoit Daloze 9f0a9acc35 Test 2.6.6 in CI 2020-04-03 23:32:52 +02:00
Benoit Daloze 211f6c78ad Add the latest CRuby releases on Windows from RubyInstaller 2020-04-03 23:31:28 +02:00
Benoit Daloze 47bbcca04c Move update note 2020-04-01 00:22:07 +02:00
Benoit Daloze f964e8aa48 Try to find the Bundler version from Gemfile.lock, otherwise install latest 2020-04-01 00:10:54 +02:00
Benoit Daloze e16528e678 Test all Ruby minor versions
* Skip tests on the older ubuntu-16.04 to have a reasonable number of jobs
2020-04-01 00:10:54 +02:00
Benoit Daloze 11238a2c00 Install Bundler at runtime if not already part of the stdlib
* This gives more flexibility to choose the Bundler version.
2020-03-31 22:23:11 +02:00
Benoit Daloze 1e2e6e19e3 Add the latest CRuby releases 2020-03-31 22:16:34 +02:00
Benoit Daloze a1c5b2a66c Switch to builds with --enable-shared and without Bundler pre-installed 2020-03-31 22:14:53 +02:00
MSP-Greg e648fd85b4 Windows - set ENV['MAKE'] 2020-03-31 18:44:54 +02:00
Benoit Daloze fb9d6fbc69 Automatically create a ~/.gemrc file
* To avoid generating documentation on `gem install`, which can take a long time.
2020-03-30 22:04:39 +02:00
Benoit Daloze 9c77d1b41f Prefer path.delimiter to the hardcoded value 2020-03-30 22:04:39 +02:00
MSP-Greg 2641afc25c Windows MSYS - move install to ssd drive 2020-03-30 12:28:12 +02:00
MSP-Greg d785726c7f export run 2020-03-28 15:28:40 +01:00
Benoit Daloze c33236e6da Simplify README 2020-03-28 14:06:05 +01:00
Benoit Daloze e0c562b83f Call 7z silently since it's too verbose 2020-03-28 14:05:21 +01:00
MSP-Greg 04510c677e README.md - add info re MSYS install for MinGW 2.2 and 2.3 Rubies 2020-03-28 14:00:06 +01:00
MSP-Greg c4665148cf Actions - add gcc --version output for MinGW Rubies 2020-03-28 14:00:06 +01:00
MSP-Greg 0a45f18d44 windows.js - install old MSYS devkit for MinGW 2.2 and 2.3 2020-03-28 14:00:06 +01:00
Benoit Daloze 2e60bdd7e4 Mention that only a few Ruby 2.3.x versions are available on Windows
* Fixes https://github.com/ruby/setup-ruby/issues/40
2020-03-27 15:39:59 +01:00
Benoit Daloze 0925a3eb86 Add JRuby 9.2.11.1 2020-03-25 19:18:29 +01:00
Benoit Daloze ae39a8d7d2 Deduplicate the list of path entries for MSYS2 2020-03-24 18:49:35 +01:00
MSP-Greg f70e6bf7d0 Update for Actions MSYS2 install
1. Use 'Git for Windows' cert.pem file
2. Add MSYS2 to path for mswin (after msvc additions)
3. Rearrange code for cleanup when MSYS2 is added to Window image
2020-03-24 18:45:54 +01:00
Benoit Daloze d96d3894b6 Update all dependencies 2020-03-21 12:29:35 +01:00
Benoit Daloze 047ed419ae Remove eslint dev dependency
* The many dependencies seem to have some security vulnerabilities.
2020-03-21 12:29:35 +01:00
Benoit Daloze aea40d1b5a Add JRuby 9.1.17.0 2020-03-11 11:38:17 +01:00
Charles Oliver Nutter 3dad7e20e6 Add JRuby 9.1.17.0 for testing
The jruby-launcher needs to be tested at least one major JRuby version back. In addition, there are users out there running JRuby 9.1.x that may be unable to upgrade at present.
2020-03-11 11:33:49 +01:00
Benoit Daloze 166761b310 Show a prompt sign for clarity 2020-03-10 22:45:15 +01:00
Charles Oliver Nutter 6f3ecad449 Make it clear this is a command to be run 2020-03-10 22:44:23 +01:00
Benoit Daloze 0d26c9bf64 Add pre-commit file 2020-03-10 22:42:18 +01:00
Benoit Daloze de6b99f08a Check generated files are up to date in CI 2020-03-10 11:41:27 +01:00
Benoit Daloze cfe5daad50 Add a simple CONTRIBUTING.md 2020-03-10 11:34:03 +01:00
Benoit Daloze 80b79ff73f Regenerate dist/index.js
* I forgot to `yarn` to install the newer dependencies.
2020-03-10 11:32:36 +01:00
Benoit Daloze 67ca12cfaa Small cleanups 2020-03-07 14:30:46 +01:00
Benoit Daloze 1ad4d1b6db Reorder functions 2020-03-07 14:23:16 +01:00
Benoit Daloze 2e093de9b3 Use an array of PATH entries rather a string or null 2020-03-07 14:13:52 +01:00
Benoit Daloze bd9411e978 Remove duplicated code 2020-03-07 13:51:13 +01:00
Benoit Daloze 272cf9d04a Remove commented code 2020-03-07 13:45:08 +01:00
Benoit Daloze 8363b99194 The name of the step should be enough to describe it 2020-03-07 13:44:03 +01:00
MSP-Greg 475e32ed3f test.yml - Add which/where, mswin vcvars*.bat ENV
1. Add which/where for ruby and rake
2. Remove call %VCVARS% code for mswin
3. Loosen some step 'if' checks
2020-03-07 13:41:58 +01:00
MSP-Greg 8d89ffaa2b Reorganize path manipulation, mswin tools ENV
1. Use only one 'core' call to set PATH
2. Clean PATH
3. Windows mswin - add vcvars*.bat changes to ENV
2020-03-07 13:41:58 +01:00
MSP-Greg c125fbc596 Update package.json & yarn.lock 2020-03-07 13:41:58 +01:00
David Rodríguez d8d290d206 Add JRuby 9.2.11.0 2020-03-05 23:05:44 +02:00
Benoit Daloze 6044e83b8f Clarify about mingw and mswin
From https://github.com/ruby/setup-ruby/pull/24#issuecomment-590582731
2020-02-29 11:58:11 +01:00
MSP-Greg 970f6659fb Simplify 'tar' in ruby_builder.js - downloadAndExtract 2020-02-29 11:35:47 +01:00
MSP-Greg 01b616c294 ruby-builder.js - Win32 - use C:\Windows\system32\tar.exe 2020-02-28 17:59:58 +01:00
Benoit Daloze f010ae485f Merge the list in the README to render better on GitHub 2020-02-24 23:11:16 +01:00
Benoit Daloze 739b731933 Document mingw and mswin in the README 2020-02-24 23:03:49 +01:00
Benoit Daloze 0cbcadc627 Restore original spacing 2020-02-24 22:52:23 +01:00
Benoit Daloze 91a6c780c4 Reword comment 2020-02-24 22:52:23 +01:00
Benoit Daloze dbcdcf481d Simplify the logic to set up certs dir and cert.pem 2020-02-24 22:52:23 +01:00
Benoit Daloze d2b72024f1 Split ruby -v and compiler version
* It's not always gcc, can be e.g. clang too
2020-02-24 22:16:19 +01:00
Benoit Daloze 78fd200603 Reorder jobs to test in order of increasing version numbers 2020-02-24 22:15:24 +01:00
Benoit Daloze ca7fe3d91f Use consistent array indentation in YAML 2020-02-24 22:09:17 +01:00
Benoit Daloze de68645eec Trigger CI on PRs 2020-02-24 22:03:23 +01:00
MSP-Greg 20324f7e34 Add ruby-loco mingw and mswin
1. Add ruby-loco mingw and mswin
2. Split workflow jobs into common and specials
3. Adjust workflow for mswin - 'ridk version' & 'c extension' steps
2020-02-24 22:01:08 +01:00
Benoit Daloze 7f508b5101 Add JRuby 9.2.10.0 2020-02-22 15:34:51 +01:00
Benoit Daloze 94fe02071e Add reference for jruby-head builds in README 2020-02-22 13:45:57 +01:00
Benoit Daloze d81cbeb0ce Clarify it's recommended to update to ruby/setup-ruby 2020-02-19 13:42:20 +01:00
Benoit Daloze 06ab568b6a Add TruffleRuby 20.0.0 2020-02-18 21:53:04 +01:00
Benoit Daloze d186982201 Clean yarn.lock 2020-02-17 21:26:24 +01:00
Juanito Fatas d649a291c3 Add suggestion when run on single platform 2020-02-17 14:58:58 +01:00
Benoit Daloze cdeaf534b7 Use more concise job names 2020-02-16 16:45:43 +01:00
Benoit Daloze 3197025b07 Add support for jruby-head 2020-02-16 16:39:10 +01:00
Benoit Daloze 28def02321 Use the automatic latest release asset link for head builds 2020-02-16 16:30:22 +01:00
Benoit Daloze 3d6280ad19 Add support for .tool-versions 2020-02-16 14:49:55 +01:00
Benoit Daloze 980126329a where.exe needs to be used in PowerShell
* See https://stackoverflow.com/a/304447/388803
2020-02-16 13:00:27 +01:00
Benoit Daloze 4f28d1c82e Add notes about Windows in the README 2020-02-09 23:51:09 +01:00
Benoit Daloze 53b22d2360 Don't run CI twice when merging to master
* It already ran on the feature branch.
2020-02-09 23:38:56 +01:00
Benoit Daloze 55dff253ca Do not remove any dev tools from PATH on Windows
* This might lead to more conflicts, but the flip side of a setup action
  removing capabilities seems worse and unexpected.
* See https://github.com/ruby/setup-ruby/issues/19
2020-02-09 23:38:26 +01:00
Benoit Daloze e15ecc8aaa Print entries removed from PATH on Windows 2020-02-09 23:37:52 +01:00
Benoit Daloze 71f024b642 Silence the output of 7z on Windows
* It's quite verbose (22 lines) and there is no quiet flag.
2020-02-09 23:37:52 +01:00
Benoit Daloze 30011b6444 Cleanup PATH for JRuby on Windows
* That way we remove the default Ruby in PATH which was confusing.
2020-02-08 22:14:50 +01:00
Benoit Daloze f422c055c3 Add support for Ruby 2.2
* Use Ruby 2.2.6 from RubyInstaller on Windows since there is no more
  recent release of Ruby 2.2.
2020-02-06 15:20:13 +01:00
Benoit Daloze a01ba37375 Follow builder repositories transfers 2020-02-06 13:21:29 +01:00
Benoit Daloze fdfc519f55 Clarify the maintainer now that the repo moved 2020-02-06 13:18:40 +01:00
Benoit Daloze 480f78f4b6 Compare with actions/setup-ruby 2020-02-06 13:15:21 +01:00
Benoit Daloze 48efd73814 Follow repository transfer and rename 2020-02-06 13:09:38 +01:00
Benoit Daloze 5478747ea7 Add a line about the move and rename 2020-02-06 13:02:38 +01:00
Samuel Williams 8a173f1bc2 Change title to reflect new home. 2020-02-07 01:00:48 +13:00
Benoit Daloze 48481806ad Update to latest builds fixing "Insecure world writable dir" warnings
* Update to Rubinius 4.14 which fixes some segfaults.
2020-02-02 16:33:46 +01:00
Benoit Daloze 623e527949 Rename generate script 2020-02-02 13:23:31 +01:00
Benoit Daloze c933cecfdc Follow ruby-install-builder => ruby-builder repository rename 2020-02-02 13:21:37 +01:00
Benoit Daloze 7c15ff8590 Add info about the -head builders 2020-02-01 21:21:26 +01:00
Benoit Daloze 58366f2203 Reduce the test matrix as it's getting too large
* It was 40 checks and a lot of queuing on macOS.
* Version parsing is stable and can be tested more directly.
* 2.6.5 was tested twice: .ruby-version and explicitly.
2020-02-01 18:31:35 +01:00
Benoit Daloze f5483241db Add support for ruby-head 2020-02-01 18:22:53 +01:00
Benoit Daloze 0331c8b821 Add support for truffleruby-head 2020-02-01 15:17:12 +01:00
Benoit Daloze 818f4eeb16 The :required key is required is action.yml
* See https://help.github.com/en/actions/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions
2020-02-01 13:41:57 +01:00
Benoit Daloze 052cbd8ee4 Test bundle exec too 2020-01-30 23:24:13 +01:00
Benoit Daloze 001fd1b7c7 Document the choice of the drive on Windows 2020-01-30 22:17:19 +01:00
MSP-Greg 4d7199dbd0 Use SSD drive for Windows Ruby location 2020-01-30 22:15:28 +01:00
Benoit Daloze 5dd450999e Fix link to example 2020-01-25 18:19:48 +01:00
Benoit Daloze 3551d3fbd4 Store the available Ruby versions in this repository
* That way it's always perfectly synchronized with the action. In
  practice querying another repository sometimes returned a stale copy.
* Avoids an extra HTTPS request.
* The axios dependency is no longer needed.
* Makes it possible to tweak the versions available according to the platform.
2020-01-25 18:03:33 +01:00
Benoit Daloze 07160f610f Move ruby-installer-versions.js to windows-versions.js for clarity 2020-01-25 18:03:19 +01:00
Benoit Daloze 0449254cae Add Rubinius to the README 2020-01-25 18:03:19 +01:00
Benoit Daloze 689f94552b Add support for Rubinius
* Only works on ubuntu-latest.
2020-01-25 16:54:03 +01:00
Benoit Daloze db2d09d84c Rubinius fails to build the latest json 2.3.0 gem 2020-01-25 16:54:00 +01:00
Benoit Daloze 8b354c238c Show OpenSSL version for all platforms in test 2020-01-20 22:56:18 +01:00
Benoit Daloze 7f4c88c00b Give credit where credit is due 2020-01-19 23:08:30 +01:00
Benoit Daloze dbac26120b Add support for JRuby on Windows 2020-01-19 22:56:19 +01:00
Benoit Daloze 0f26fedc26 Improve error message 2020-01-19 22:55:15 +01:00
Benoit Daloze 7da380d64e Add support for Ruby 2.3 on Windows 2020-01-19 18:24:29 +01:00
Benoit Daloze 5f2df8a190 Link to the full list of versions on Windows 2020-01-19 15:13:03 +01:00
Benoit Daloze 4ff821c778 Try to trigger CI on push to branches but not to tags
* Running CI on tag is redundant with the branch push.
* Do not build on pushes to v1 as CI already ran on the master commit before.
2020-01-19 14:46:57 +01:00
Benoit Daloze 34fa48c067 Simplify steps descriptions 2020-01-19 14:46:57 +01:00
Benoit Daloze a66a46f031 Refactor code to share logic between ruby-install-builder and windows
* Make use of ruby-installer-versions.js to validate the version on Windows.
2020-01-19 14:46:57 +01:00
Benoit Daloze 537d9f67b4 Add explicit dependency on @actions/exec 2020-01-19 14:28:24 +01:00
Benoit Daloze 69599c886c Add a script to generate a list of available version from RubyInstaller 2020-01-19 14:28:19 +01:00
Benoit Daloze 247acff66d Remove no longer needed workaround 2020-01-19 13:01:02 +01:00
Benoit Daloze 7978ff1579 Print the OpenSSL version 2020-01-18 16:42:55 +01:00
Benoit Daloze 30cd88adf9 Use the newer builds from ruby-install-builder
* Which uses a newer OpenSSL for Ruby 2.3 on Ubuntu and macOS.
2020-01-18 16:36:23 +01:00
Benoit Daloze 7005fbe92a Embed the used tag in this repo for atomic updates
* Avoids stale cached requests for the latest_release.tag file.
* This also ensures reproducible builds for this repository.
2020-01-18 16:36:05 +01:00
Benoit Daloze 026be4409b Fix typo in OpenSSL test 2020-01-18 14:39:18 +01:00
Benoit Daloze 0ed24c9d6c Use shorter links in README 2020-01-17 23:17:26 +01:00
Benoit Daloze 9dab9b8155 Use a table for the Supported Platforms 2020-01-17 23:14:05 +01:00
Benoit Daloze 69709d16de Simplify the supported versions section
* Do not recommend a specific version syntax, different projects have
  different needs. The sample usages below already show the recommendation.
2020-01-17 23:01:13 +01:00
Benoit Daloze ae627f04d2 Skip CI when only modifying the README 2020-01-17 22:55:24 +01:00
Benoit Daloze eb85b2a580 Use the full repository name as the README title 2020-01-17 22:31:38 +01:00
Benoit Daloze 61efe96192 Use a single bug tracker for the action 2020-01-17 22:30:14 +01:00
Benoit Daloze 7b9c95cc8e Use "the PATH" instead of "$PATH"
* Since $PATH is a Unix-specific syntax.
2020-01-17 22:26:52 +01:00
Benoit Daloze 74ac24dec4 Add a section about versioning 2020-01-17 22:09:58 +01:00
Benoit Daloze b01832a197 Recommend to use eregon/use-ruby-action@v1 in the README 2020-01-17 22:00:29 +01:00
41 changed files with 94107 additions and 7759 deletions
-18
View File
@@ -1,18 +0,0 @@
{
"env": {
"commonjs": true,
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"rules": {
}
}
+1
View File
@@ -0,0 +1 @@
github: [eregon]
+43
View File
@@ -0,0 +1,43 @@
name: Bug report
description: Create a report to help us improve
body:
- type: markdown
attributes:
value: |
First, take some time to think whether this is really an issue of ruby/setup-ruby and whether it is fixable in this action.
This action basically just downloads a prebuilt Ruby and adds it to `PATH`, so it is unlikely the bug is in this action.
Give some thoughts whether it could be an issue in your workflow, in the gems you use, in GitHub Actions, in Ruby, RubyGems, Bundler, etc.
This is NOT the place to ask help about your workflow failing (ask that on [GitHub Community](https://github.com/orgs/community/discussions/categories/actions) or [Discussions](https://github.com/ruby/setup-ruby/discussions) instead), it is only to report issues about ruby/setup-ruby.
Please note we will close your issue without comment if you do not fill out the requested information.
- type: checkboxes
attributes:
label: Ensure the following before filing this issue
options:
- label: |
I verified it reproduces with the latest version with `- uses: ruby/setup-ruby@v1` (see [Versioning policy](https://github.com/ruby/setup-ruby/blob/master/README.md#versioning))
required: true
- label: |
I tried to reproduce the issue locally by following the workflow steps (including all commands done by `ruby/setup-ruby`, except for `Downloading Ruby` & `Extracting Ruby`),
and it did not reproduce locally (if it does reproduce locally, it's not a ruby/setup-ruby issue)
required: true
# - label: |
# If the issue happens on JRuby or TruffleRuby, and does not happen on CRuby (please check), file an issue there instead. It's very unlikely ruby/setup-ruby is the cause.
# required: true
- type: dropdown
attributes:
label: Are you running on a GitHub-hosted runner or a self-hosted runner?
options:
- GitHub-hosted runner
- self-hosted runner
validations:
required: true
- type: input
attributes:
label: Link to the failed workflow job (must be a public workflow job, so the necessary information is available)
validations:
required: true
- type: textarea
attributes:
label: Any other notes?
validations:
required: false
+1
View File
@@ -0,0 +1 @@
blank_issues_enabled: false
@@ -0,0 +1,10 @@
---
name: Other issue (not a bug)
about: Feature requests, etc
title: ''
labels: ''
assignees: ''
---
+6
View File
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
@@ -0,0 +1,47 @@
name: Check new RubyInstaller releases
on:
schedule:
- cron: '0 7,19 * * *'
workflow_dispatch:
jobs:
check_windows_versions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- run: ruby generate-windows-versions.rb
- id: diff
run: git diff --exit-code
continue-on-error: true
- if: ${{ steps.diff.outcome == 'failure' }} # changed
run: ./pre-commit
shell: bash
# See https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#push-pull-request-branches-to-a-fork
- if: ${{ steps.diff.outcome == 'failure' }} # changed
uses: peter-evans/create-pull-request@v8
id: pr
with:
push-to-fork: ruby-builder-bot/setup-ruby
author: ruby-builder-bot <98265520+ruby-builder-bot@users.noreply.github.com>
committer: ruby-builder-bot <98265520+ruby-builder-bot@users.noreply.github.com>
title: Update CRuby releases on Windows
commit-message: Update CRuby releases on Windows
body: |
Automated PR from the check-new-windows-versions.yml workflow.
@eregon @MSP-Greg @ntkme @flavorjones @larskanis @headius Please merge this PR if the diff is correct.
And then release setup-ruby by [running the release workflow](https://github.com/ruby/setup-ruby/actions/workflows/release.yml).
branch: windows
delete-branch: true
token: ${{ secrets.PR_FROM_RUBY_BUILDER_TOKEN }}
- if: ${{ steps.diff.outcome == 'failure' }} # changed
name: PR URL
run: echo "${{ steps.pr.outputs.pull-request-url }}"
shell: bash
+24
View File
@@ -0,0 +1,24 @@
name: Create a Release
on:
workflow_dispatch:
permissions:
contents: write # for creating release
jobs:
release:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: ./
with:
ruby-version: '3.3'
- run: ruby release.rb
# The same as the update-v1-branch.yml workflow.
# That workflow is not triggered by the release created above because of
# https://docs.github.com/en/actions/security-guides/automatic-token-authentication#using-the-github_token-in-a-workflow
- run: git push origin HEAD:v1
+374 -26
View File
@@ -1,41 +1,389 @@
name: Test this action
on: [push]
on:
pull_request:
push:
branches-ignore:
- v1
tags-ignore:
- '*'
paths-ignore:
- README.md
workflow_dispatch:
permissions:
contents: read
jobs:
test-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: ruby
- id: matrix
run: echo "matrix=$(ruby generate-test-matrix.rb)" | tee -a "$GITHUB_OUTPUT"
- run: echo "$MATRIX" | yq -P
env:
MATRIX: ${{ steps.matrix.outputs.matrix }}
test:
needs: [test-matrix]
strategy:
fail-fast: false
matrix:
os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ]
# Use various version syntaxes here for testing
ruby: [ .ruby-version, 2.3, ruby-2.4, 2.5, ruby-2.6.5, 2.7.0, jruby, truffleruby ]
exclude:
- os: windows-latest
ruby: 2.3
- os: windows-latest
ruby: jruby
- os: windows-latest
ruby: truffleruby
include: ${{ fromJSON(needs.test-matrix.outputs.matrix) }}
name: ${{ matrix.os }} ${{ matrix.ruby }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: ${{ matrix.ruby }}
- run: ruby --version
- run: ridk version
if: matrix.os == 'windows-latest'
- name: OpenSSL test
run: ruby -ropen-uri -e 'puts open(%{https://rubygems.org/}) { |f| f.read(2014) }'
- name: C extension test
run: gem install json --no-document
- name: Check that Bundler is installed
run: bundle --version
- name: Check that Bundler works
run: bundle install
bundler-cache: true
- run: ruby -v
- name: PATH
shell: pwsh
run: |
# Show PATH with Powershell
$f, $r = $env:PATH.split([IO.Path]::PathSeparator); $r
lint:
- name: build compiler
run: |
ruby -e "puts 'build compiler: ' + RbConfig::CONFIG.fetch('CC_VERSION_MESSAGE', 'unknown').lines.first"
- name: gcc and ridk version (mingw)
if: runner.os == 'Windows'
run: |
$abi, $plat = $(ruby -e "STDOUT.write RbConfig::CONFIG['ruby_version'] + ' ' + RUBY_PLATFORM").split(' ')
if ($plat.Contains('mingw')) {
gcc --version
if ($abi -ge '2.4') {
ridk version
} else {
echo 'ridk is unavailable'
}
} elseif ($plat.Contains('mswin')) {
Get-ChildItem "$env:VCPKG_INSTALLATION_ROOT\installed\vcpkg\info"
}
- name: RbConfig::CONFIG
run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG'
- name: RbConfig::MAKEFILE_CONFIG
run: ruby -rrbconfig -rpp -e 'pp RbConfig::MAKEFILE_CONFIG'
- name: Subprocess test
run: ruby test_subprocess.rb
- name: OpenSSL compiled version
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
- name: OpenSSL loaded version
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'
if: matrix.ruby != '1.9'
- name: OpenSSL test
run: ruby -ropen-uri -e 'puts URI.send(:open, %{https://rubygems.org/}) { |f| f.read(1024) }'
- run: gem env
- name: C extension test
run: gem install json -v 2.2.0
- run: bundle --version
# This step is redundant with `bundler-cache: true` but is there to check a redundant `bundle install` still works
- run: bundle install
- run: bundle exec rake --version
- run: bundle exec rake
# Ensure the same bundle commands work in bash on Windows
- name: bundle install (bash)
run: bundle install
shell: bash
if: runner.os == 'Windows'
- name: bundle exec rake --version (bash)
run: bundle exec rake --version
shell: bash
if: runner.os == 'Windows'
- name: bundle exec rake (bash)
run: bundle exec rake
shell: bash
if: runner.os == 'Windows'
- name: Test `gem github:` in a Gemfile
run: bundle install
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/gem_from_github.gemfile
- name: which ruby
shell: bash
run: which -a ruby
- name: which bundle
shell: bash
run: which -a bundle
# https://github.com/ruby/setup-ruby/issues/658
if: "matrix.ruby != 'mingw' && matrix.ruby != 'mswin' && matrix.ruby != 'ucrt'"
- name: which rake
run: which -a rake
if: runner.os != 'Windows'
- name: where ruby, rake, bundle
if: runner.os == 'Windows'
run: |
$ErrorActionPreference = 'Continue'
$where = 'ruby', 'rake', 'bundle'
foreach ($e in $where) {
$rslt = where.exe $e 2>&1 | Out-String
if ($rslt.contains($e)) { echo $rslt.Trim() }
else { echo "Can't find $e" }
echo ''
}
- name: bash test
shell: bash
run: echo ~ && bundle install
testDotRubyVersion:
name: "Test .ruby-version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v7
- run: echo "ruby-3.4.0" > .ruby-version
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testToolVersions:
name: "Test .tool-versions"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: echo -e "nodejs 16.0.0\nruby 3.4.0" > .tool-versions
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testMise:
name: "Test mise.toml"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: echo -e "[tools]\nnode = '18'\nruby = '3.4.0'" > mise.toml
- uses: ./
- run: ruby -v | grep -F "ruby 3.4.0"
testNoGemfile:
name: "Test with no Gemfile"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- 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@v7
- 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
strategy:
fail-fast: false
matrix:
include:
- { ruby: '3.2', expected_rubygems_version: '3.6.1' }
- { ruby: '3.0', expected_rubygems_version: '3.5.23' }
- { 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@v7
- uses: ./
with:
ruby-version: ${{ matrix.ruby }}
rubygems: latest
- 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"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.6'
rubygems: 3.2.3
- run: gem --version | grep -F "3.2.3"
testFixedRubygemsVersionNoop:
name: "Test rubygems: version noops if the default is newer"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '3.1.0'
rubygems: 3.2.3
- run: gem --version | grep -F "3.3.3"
testUseBundlerFromRubyGemsUpdate:
name: "Test rubygems: version uses the Bundler installed by the rubygems update"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '3.1.0'
rubygems: 3.4.0
- run: gem --version | grep -F "3.4.0"
- run: bundle --version | grep -F "2.4.0"
testFixedBundlerVersionForOldRuby:
name: "Test bundler: 1.x for old Ruby"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.3'
bundler: 1.16.6
- run: bundle --version | grep -F "1.16.6" # And not 1.17.x from ~> 1
testMajorBundlerVersion:
name: "Test with a major Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.6'
bundler: 2
- run: bundle --version | grep -P "Bundler version 2\.\d+\.\d+"
testMinorBundlerVersion:
name: "Test with a minor Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.6'
bundler: 2.2
- run: bundle --version | grep -P "Bundler version 2\.2\.\d+"
testExactBundlerVersion:
name: "Test with an exact Bundler version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.6'
bundler: 2.2.3
- run: bundle --version | grep -F "Bundler version 2.2.3"
# https://github.com/ruby/setup-ruby/issues/845
testOlderBundlerVersion:
name: "Test with an older Bundler version than the one of the default gem"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '4.0'
bundler: 2.7.2
bundler-cache: true
- run: bundle --version | grep -F "Bundler version 2.7.2"
testBundlerPre:
name: "Test with a Bundler pre/rc version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.6'
bundler: 2.2.0.rc.2
- run: bundle --version | grep -F "Bundler version 2.2.0.rc.2"
testBundlerDev:
name: "Test BUNDLED WITH Bundler dev"
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler-dev.gemfile
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: ruby-head
bundler-cache: true
testDependencyOnBundler1:
name: "Test gemfile depending on Bundler 1"
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler1.gemfile
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '2.7'
bundler: 1
bundler-cache: true
- run: bundle --version | grep -F "Bundler version 1."
testGemfileMatrix:
strategy:
fail-fast: false
matrix:
gemfile: [ rails7, rails8 ]
name: "Test with ${{ matrix.gemfile }} gemfile"
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: '3.2'
bundler-cache: true
- run: bundle exec rails --version
testWindowsToolchain:
name: "Test windows-toolchain: none"
runs-on: windows-latest
steps:
- uses: actions/checkout@v7
- 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')"
validate-windows-versions:
name: "Check windows*versions.json are up-to-date"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./
with:
ruby-version: ruby
- run: ruby generate-windows-versions.rb
- name: Check generated files are up to date
run: git diff --exit-code
check-dist-index:
name: "Check dist/index.js is up-to-date"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v7
- run: yarn install
- run: yarn run lint
- run: yarn run package
- name: Check generated files are up to date
run: git diff --exit-code
+15
View File
@@ -0,0 +1,15 @@
name: Update the v1 branch when a release is published manually
on:
release:
types: [published]
permissions:
contents: write # for git push
jobs:
update_branch:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- run: git push origin HEAD:v1
-1
View File
@@ -1 +0,0 @@
ruby-2.6.5
+48
View File
@@ -0,0 +1,48 @@
# Contributing
## Installing dependencies
```bash
$ yarn install
```
`npm` doesn't install the correct dependencies for `eslint` so we use `yarn`.
## Regenerating dist/index.js
```bash
$ yarn run package
```
It is recommended to add this as a `git` `pre-commit` hook:
```bash
$ cp pre-commit .git/hooks/pre-commit
```
## Adding a new Ruby version
This is entirely automated now since [this issue](https://github.com/ruby/setup-ruby/issues/254).
If you do not see a new version more than 24 hours after it was released feel free to file an issue.
## Release team
The current release team is @eregon @MSP-Greg @ntkme @flavorjones @larskanis @headius.
They all have write access to the `setup-ruby` repository, to be able to merge and release `ruby-builder-bot` PRs adding new versions.
The `ruby-builder-bot` PRs are created by [this workflow](https://github.com/ruby/ruby-builder/actions/workflows/check-new-releases.yml) which runs every hour.
The release team can create releases by running [this workflow](https://github.com/ruby/setup-ruby/actions/workflows/release.yml).
The release team and more specifically @larskanis can run [the workflow to check for new RubyInstaller releases](https://github.com/ruby/setup-ruby/actions/workflows/check-new-windows-versions.yml) to speed things up (otherwise it's run twice a day).
The release team must not merge other PRs than the ones from `ruby-builder-bot` (unless they are also setup-ruby maintainers).
## Maintainers
@eregon is the lead maintainer and creator of this action.
Any design change (e.g. new input, different way to do things) must have his approval.
@MSP-Greg @ntkme are maintainers of setup-ruby and should feel free to merge bug fixes, etc.
They should request a review on their PR from another maintainer but they don't have to wait for the review if the fix is urgent (e.g. `setup-ruby` broke in some cases and the fix is obvious).
Naturally maintainers can also [release setup-ruby](https://github.com/ruby/setup-ruby/actions/workflows/release.yml) so the changes from their PR get published.
+2 -1
View File
@@ -1,5 +1,6 @@
# Used for testing
source 'https://rubygems.org'
gem "rake"
gem "path"
gem "json"
gem "json", "2.2.0"
+238 -58
View File
@@ -1,40 +1,69 @@
# use-ruby
# setup-ruby
This action downloads a prebuilt ruby and adds it to `$PATH`.
This action downloads a prebuilt ruby and adds it to the `PATH`.
It is very efficient and takes about 5 seconds to download, extract and add the given Ruby to `$PATH`.
It is very efficient and takes about 5 seconds to download, extract and add the given Ruby to the `PATH`.
No extra packages need to be installed.
**Important:** Prefer `ruby/setup-ruby@v1`.
If you pin to a commit or release, only the Ruby versions available at the time of the commit
will be available, and you will need to update it to use newer Ruby versions, see [Versioning](#versioning).
### Supported Versions
This action currently supports these versions of MRI, JRuby and TruffleRuby:
| Interpreter | Versions |
| ----------- | -------- |
| Ruby | 2.3.0 - 2.3.8, 2.4.0 - 2.4.9, 2.5.0 - 2.5.7, 2.6.0 - 2.6.5, 2.7.0 |
| JRuby | 9.2.9.0 |
| TruffleRuby | 19.3.0, 19.3.1 |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 4.0.6, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 10.1.0.0, head |
| `truffleruby` | 19.3.0 - 34.0.1, head |
| `truffleruby+graalvm` | 21.2.0 - 34.0.1, head |
The recommended way to refer to these versions is:
`2.3`, `2.4`, `2.5`, `2.6`, `2.7`, `jruby`, `truffleruby`.
That way, the latest compatible release is used, which contains the most bug fixes.
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
See https://github.com/eregon/ruby-install-builder/blob/metadata/versions.json
for the always up-to-date list of available Ruby versions.
`ruby-asan` is the same as `ruby-head` but with AddressSanitizer (ASan) enabled, helpful for finding memory issues in native extensions.
Native extensions are automatically compiled with AddressSanitizer when using `ruby-asan`.
`ruby-asan` is currently only available on `ubuntu-24.04`.
Note that Ruby 2.3 and the OpenSSL version it needs (1.0.2) are both end-of-life,
which means Ruby 2.3 is unmaintained and considered insecure.
On Windows, Ruby 2.4 uses OpenSSL 1.0.2, which is no longer maintained.
`asan-release` is similar to `ruby-asan` but built from the latest stable release tag.
Like `ruby-asan`, it's currently only available on `ubuntu-24.04`.
Regarding Windows ruby master builds, `mingw` is a MSYS2/MinGW build, `head` & `ucrt` are MSYS2/UCRT64
builds, and `mswin` is a MSVC/VS 2022 build.
Preview and RC versions of Ruby might be available too on Ubuntu and macOS (not on Windows).
However, it is recommended to test against `ruby-head` rather than previews,
as it provides more useful feedback for the Ruby core team and for upcoming changes.
Only release versions published by [RubyInstaller](https://rubyinstaller.org/downloads/archives/)
are available on Windows. Due to that, Ruby 2.2 resolves to 2.2.6 on Windows and 2.2.10
on other platforms. Ruby 2.3 on Windows only has builds for 2.3.0, 2.3.1 and 2.3.3.
Note that Ruby ≤ 2.4 and the OpenSSL version it needs (1.0.2) are both end-of-life,
which means Ruby ≤ 2.4 is unmaintained and considered insecure.
### Supported Platforms
The action works for all GitHub-hosted runners:
`ubuntu-16.04`, `ubuntu-18.04`, `macos-latest` and `windows-latest`.
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.
Ruby 2.3, JRuby and TruffleRuby are not yet supported on `windows-latest`.
| Operating System | Supported |
| ---------------- | --------- |
| Ubuntu | `ubuntu-22.04`, `ubuntu-24.04`, `ubuntu-26.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm`, `ubuntu-26.04-arm` |
| macOS | `macos-14` and newer versions |
| Windows | `windows-2022`, `windows-2025`, `windows-11-arm` |
The prebuilt rubies are generated by https://github.com/eregon/ruby-install-builder
and on Windows by https://github.com/oneclick/rubyinstaller2.
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
(although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
and in [windows-versions.json](windows-versions.json) for Windows.
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
The `mingw`, `ucrt` and `mswin` builds are generated by [ruby-loco](https://github.com/MSP-Greg/ruby-loco).
`ruby-head` is generated by [ruby-dev-builder](https://github.com/ruby/ruby-dev-builder),
`jruby-head` is generated by [jruby-dev-builder](https://github.com/ruby/jruby-dev-builder),
`truffleruby-head` and `truffleruby+graalvm-head` are generated by [truffleruby-dev-builder](https://github.com/ruby/truffleruby-dev-builder).
## Usage
@@ -42,83 +71,234 @@ and on Windows by https://github.com/oneclick/rubyinstaller2.
```yaml
name: My workflow
on: [push]
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: eregon/use-ruby-action@master
- uses: actions/checkout@v6
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6
- run: ruby -v
ruby-version: '4.0' # 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
```
### Matrix
### Matrix of Ruby Versions
This matrix tests all stable releases of MRI, JRuby and TruffleRuby on Ubuntu and macOS.
This matrix tests all stable releases and `head` versions of MRI, JRuby and TruffleRuby on Ubuntu and macOS.
```yaml
name: My workflow
on: [push]
on: [push, pull_request]
jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
ruby: [ 2.4, 2.5, 2.6, 2.7, jruby, truffleruby ]
os: [ubuntu-latest, macos-latest]
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
ruby: ['3.3', '3.4', '4.0', head, jruby, jruby-head, truffleruby, truffleruby-head]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: eregon/use-ruby-action@master
- uses: actions/checkout@v6
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- run: ruby -v
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake
```
### Matrix of Gemfiles
```yaml
name: My workflow
on: [push, pull_request]
jobs:
test:
strategy:
fail-fast: false
matrix:
gemfile: [ rails7, rails8 ]
runs-on: ubuntu-latest
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@v6
- uses: ruby/setup-ruby@v1
with:
ruby-version: '4.0'
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake
```
See the GitHub Actions documentation for more details about the
[workflow syntax](https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax)
and the [condition and expression syntax](https://docs.github.com/en/actions/reference/workflows-and-actions/contexts).
### Supported Version Syntax
* 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.5`)
* version only like `2.6.5`, assumes MRI for the engine
* engine only like `truffleruby`, uses the latest stable release of that implementation
* `.ruby-version` (also the default value) reads from the project's `.ruby-version` file
* 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 `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
* `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
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.
### RubyGems
By default, the default RubyGems version that comes with each Ruby is used.
However, users can optionally customize the RubyGems version that they want by
setting the `rubygems` input.
See [action.yml](action.yml) for more details about the `rubygems` input.
If you're running into `ArgumentError: wrong number of arguments (given 4,
expected 1)` errors with a stacktrace including Psych and RubyGems entries, you
should be able to fix them by setting `rubygems: 3.0.0` or higher.
### Bundler
Currently, Bundler is guaranteed to be installed for all versions.
If the Ruby ships with Bundler (Ruby >= 2.6), that version is used.
Otherwise (Ruby < 2.6), Bundler 1 is installed when that Ruby was built.
By default, Bundler is installed as follows:
### Caching `bundle install`
* If there is a `Gemfile.lock` file (or `$BUNDLE_LOCKFILE`, `$BUNDLE_GEMFILE.lock`, or `gems.locked`) with a `BUNDLED WITH` section,
that version of Bundler will be installed and used.
* If the Ruby ships with Bundler 2.2+ (as a default gem), that version is used.
* Otherwise, the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.3, Bundler 1 on Ruby < 2.3).
You can cache the installed gems with these two steps:
This behavior can be customized, see [action.yml](action.yml) for more details about the `bundler` input.
### Caching `bundle install` automatically
This action provides a way to automatically run `bundle install` and cache the result:
```yaml
- uses: actions/cache@v1
- uses: ruby/setup-ruby@v1
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby }}-
- name: Bundle install
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
bundler-cache: true
```
When using a single job with a Ruby version, replace `${{ matrix.ruby }}` with the Ruby version.
When using `.ruby-version`, replace `${{ matrix.ruby }}` with `${{ hashFiles('.ruby-version') }}`.
Note that any step doing `bundle install` (for the root `Gemfile`) or `gem install bundler` can be removed with `bundler-cache: true`.
This uses the [cache action](https://github.com/actions/cache).
The code above is a more complete version of the [Ruby - Gem example](https://github.com/actions/cache/blob/master/examples.md#ruby---gem).
Make sure to include `use-ruby` in the `key` to avoid conflicting with previous caches.
This caching speeds up installing gems significantly and avoids too many requests to RubyGems.org.
It needs a `Gemfile` (or `$BUNDLE_GEMFILE` or `gems.rb`) under the [`working-directory`](#working-directory).
If there is a `Gemfile.lock` (or `$BUNDLE_LOCKFILE`, `$BUNDLE_GEMFILE.lock`, or `gems.locked`), `bundle config --local deployment true` is used.
## Limitations
To use a `Gemfile` which is not at the root or has a different name, set `BUNDLE_GEMFILE` in the `env` at the job level
as shown in the [example](#matrix-of-gemfiles).
* This action currently only works with GitHub-hosted runners, not private runners.
#### bundle config
When using `bundler-cache: true` you might notice there is no good place to run `bundle config ...` commands.
These can be replaced by `BUNDLE_*` environment variables, which are also faster.
They should be set in the `env` at the job level as shown in the [example](#matrix-of-gemfiles).
To find the correct the environment variable name, see the [Bundler docs](https://bundler.io/man/bundle-config.1.html) or look at `.bundle/config` after running `bundle config --local KEY VALUE` locally.
You might need to `"`-quote the environment variable name in YAML if it has unusual characters like `/`.
To perform caching, this action will use `bundle config --local path $PWD/vendor/bundle`.
Therefore, the Bundler `path` should not be changed in your workflow for the cache to work (no `bundle config path`).
#### How it Works
When there is no lockfile, one is generated with `bundle lock`, which is the same as `bundle install` would do first before actually fetching any gem.
In other words, it works exactly like `bundle install`.
The hash of the generated lockfile is then used for caching, which is the only correct approach.
#### Dealing with a corrupted cache
In some rare scenarios (like using gems with C extensions whose functionality depends on libraries found on the system
at the time of the gem's build) it may be necessary to ignore contents of the cache and get and build all the gems anew.
In order to achieve this, set the `cache-version` option to any value other than `0` (or change it to a new unique value
if you have already used it before.)
```yaml
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
cache-version: 1
```
#### Caching `bundle install` manually
It is also possible to cache gems manually, but this is not recommended because it is verbose and *very difficult* to do correctly.
There are many concerns which means using `actions/cache` is never enough for caching gems (e.g., incomplete cache key, cleaning old gems when restoring from another key, correctly hashing the lockfile if not checked in, OS versions, ABI compatibility for `ruby-head`, etc).
So, please use `bundler-cache: true` instead and report any issue.
### Authentication Token
By default, this action uses `${{ github.token }}` to authenticate when downloading Ruby release assets from GitHub.
This helps avoid rate limiting issues.
If you're running this action on a GitHub Enterprise Server (GHES) instance, or if you're experiencing rate limiting,
you can provide a custom token:
```yaml
- uses: ruby/setup-ruby@v1
with:
token: ${{ secrets.MY_GITHUB_TOKEN }}
```
In most cases, you don't need to set this input as the default value is sufficient for use on github.com.
## Windows
Note that running CI on Windows can be quite challenging if you are not very familiar with Windows.
It is recommended to first get your build working on Ubuntu and macOS before trying Windows.
* Use Bundler 2.2.18+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/209#issuecomment-889064123)) by not setting the `bundler:` input and ensuring there is no `BUNDLED WITH 1.x.y` in a checked-in `Gemfile.lock`.
* The default shell on Windows is not Bash but [PowerShell](https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#using-a-specific-shell).
This can lead issues such as multi-line scripts [not working as expected](https://github.com/ruby/setup-ruby/issues/13).
* The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used.
* For Ruby ≥ 2.4, MSYS2 is prepended to the `Path`, similar to what RubyInstaller2 does.
* For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`.
* 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
It is highly recommended to use `ruby/setup-ruby@v1` for the version of this action.
This will provide the best experience by automatically getting bug fixes, new Ruby versions and new features.
If you instead choose a specific version (v1.2.3) or a commit sha, there will be no automatic bug fixes and
it will be your responsibility to update every time the action no longer works.
Make sure to always use the latest release before reporting an issue on GitHub.
This action follows semantic versioning with a moving `v1` branch.
This follows the [recommendations](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) of GitHub Actions.
## 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 [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.
* Make sure to use the same version of libssl.
* Make sure that the operating system has `libyaml-0` and [`libgmp`](https://stackoverflow.com/questions/26555902/ruby-v-dyld-library-not-loaded-usr-local-lib-libgmp-10-dylib) installed
* The default tool cache directory (`/opt/hostedtoolcache` on Linux, `/Users/runner/hostedtoolcache` on macOS,
`C:/hostedtoolcache/windows` on Windows) must be writable by the `runner` user.
This is necessary since the Ruby builds embed the install path when built and cannot be moved around.
* `/home/runner` must be writable by the `runner` user.
In other cases, you will need to install Ruby in the runner tool cache as shown by the action when it detects that case
(run it so it will show you where to install Ruby).
You could of course also not use this action and e.g. use Ruby from a system package or use a Docker image instead.
See also the [`self-hosted:` input](action.yml).
You can set it to `true` if you want to use custom-built Rubies in your self-hosted toolcache instead of prebuild Rubies.
## History
This action used to be at `eregon/use-ruby-action` and was moved to the `ruby` organization.
Please [update](https://github.com/ruby/setup-ruby/releases/tag/v1.13.0) if you are using `eregon/use-ruby-action`.
## Credits
Most of the Windows logic is from https://github.com/MSP-Greg/actions-ruby by MSP-Greg.
The creator of this action is @eregon.
The current maintainers are @eregon @MSP-Greg @ntkme.
Most of the Windows logic is based on work by MSP-Greg.
Many thanks to MSP-Greg and Lars Kanis for the help with Ruby Installer.
+3
View File
@@ -0,0 +1,3 @@
task :default do
puts "Hello World from Rake"
end
+47 -4
View File
@@ -1,16 +1,59 @@
name: 'Setup Ruby, JRuby and TruffleRuby'
description: 'Download a prebuilt Ruby and add it to $PATH in 5 seconds'
description: 'Download a prebuilt Ruby and add it to the PATH in 5 seconds'
author: 'Benoit Daloze'
branding:
color: red
icon: download
inputs:
ruby-version:
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version if unset.'
default: '.ruby-version'
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'
rubygems:
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 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: |
The version of Bundler to install. Either 'Gemfile.lock' (the default), 'default', 'latest', 'none', or a version number (e.g., 1, 2, 2.1, 2.1.4).
For 'Gemfile.lock', the version of the BUNDLED WITH section from the Gemfile.lock if it exists. If the file or section does not exist then the same as 'default'.
For 'default', if the Ruby ships with Bundler 2.2+ as a default gem, that version is used, otherwise the same as 'latest'.
For 'latest', the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.3, Bundler 1 on Ruby < 2.3).
For 'none', nothing is done.
bundler-cache:
description: 'Run "bundle install", and cache the result automatically. Either true or false.'
default: 'false'
working-directory:
description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions, mise.toml and Gemfile.lock.'
cache-version:
description: |
Arbitrary string that will be added to the cache key of the bundler cache. Set or change it if you need
to invalidate the cache.
self-hosted:
description: |
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.
token:
description: |
Used to authenticate with GitHub when downloading Ruby release assets.
When running this action on github.com, the default value is sufficient.
When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting.
default: ${{ github.server_url == 'https://github.com' && github.token || '' }}
outputs:
ruby-prefix:
description: 'The prefix of the installed ruby'
runs:
using: 'node12'
using: 'node24'
main: 'dist/index.js'
+276
View File
@@ -0,0 +1,276 @@
const fs = require('fs')
const os = require('os')
const path = require('path')
const core = require('@actions/core')
const exec = require('@actions/exec')
const cache = require('@actions/cache')
const common = require('./common')
export const DEFAULT_CACHE_VERSION = '0'
function isValidBundlerVersion(bundlerVersion) {
return /^\d+(?:\.\d+){0,2}/.test(bundlerVersion) && !bundlerVersion.endsWith('.dev')
}
// The returned gemfile is guaranteed to exist, the lockfile might not exist
export function detectGemfiles() {
const gemfilePath = process.env['BUNDLE_GEMFILE'] || 'Gemfile'
const lockfilePath = process.env['BUNDLE_LOCKFILE']
if (fs.existsSync(gemfilePath)) {
return [gemfilePath, lockfilePath || `${gemfilePath}.lock`]
} else if (process.env['BUNDLE_GEMFILE']) {
throw new Error(`$BUNDLE_GEMFILE is set to ${gemfilePath} but does not exist`)
}
if (fs.existsSync("gems.rb")) {
return ["gems.rb", lockfilePath || "gems.locked"]
}
return [null, null]
}
function readBundledWithFromGemfileLock(lockFile) {
if (lockFile !== null && fs.existsSync(lockFile)) {
const contents = fs.readFileSync(lockFile, 'utf8')
const lines = contents.split(/\r?\n/)
const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim()))
if (bundledWithLine !== -1) {
const nextLine = lines[bundledWithLine+1]
if (nextLine) {
const bundlerVersion = nextLine.trim()
if (isValidBundlerVersion(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}`)
}
}
}
}
return null
}
export async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, platform, rubyPrefix, engine, rubyVersion) {
let bundlerVersion = bundlerVersionInput
if (rubygemsInputSet && (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock')) {
console.log('Using the Bundler installed by updating RubyGems')
return 'unknown'
}
if (bundlerVersion === 'Gemfile.lock') {
let bundlerVersionFromGemfileLock = readBundledWithFromGemfileLock(lockFile)
if (bundlerVersionFromGemfileLock) {
bundlerVersion = bundlerVersionFromGemfileLock
} else {
bundlerVersion = 'default'
}
}
if (bundlerVersion === 'default') {
if (common.isBundler2dot2PlusDefault(engine, rubyVersion)) {
if (common.windows && engine === 'ruby' && (common.isStableVersion(engine, rubyVersion) || rubyVersion === 'head')) {
// https://github.com/ruby/setup-ruby/issues/371
console.log(`Installing latest Bundler for ${engine}-${rubyVersion} on Windows because bin/bundle does not work in bash otherwise`)
bundlerVersion = 'latest'
} else {
console.log(`Using Bundler shipped with ${engine}-${rubyVersion}`)
return common.isBundler4PlusDefault(engine, rubyVersion) ? '4' : '2'
}
} else if (common.hasBundlerDefaultGem(engine, rubyVersion)) {
// Those Rubies have a old Bundler default gem < 2.2 which does not work well for `gem 'foo', github: 'foo/foo'`:
// https://github.com/ruby/setup-ruby/issues/358#issuecomment-1195899304
// Also, Ruby 2.6 would get Bundler 1 yet Ruby 2.3 - 2.5 get latest Bundler 2 which might be unexpected.
console.log(`Using latest Bundler for ${engine}-${rubyVersion} because the default Bundler gem is too old for that Ruby version`)
bundlerVersion = 'latest'
} else {
bundlerVersion = 'latest'
}
}
const targetRubyVersion = common.targetRubyVersion(engine, rubyVersion)
if (bundlerVersion === 'latest') {
// Bundler 4 requires Ruby 3.2+
if (targetRubyVersion < 3.2) {
bundlerVersion = '2'
} else {
bundlerVersion = '4'
}
}
if (isValidBundlerVersion(bundlerVersion)) {
// OK - input is a 1, 2, or 3 part version number
} else {
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
}
// Only use Bundler 4 on Ruby 3.2+
if (common.floatVersion(bundlerVersion) >= 4 && targetRubyVersion < 3.2) {
console.log('Bundler 4 requires Ruby 3.2+, using Bundler 2 instead on Ruby < 3.2')
bundlerVersion = '2'
}
// Use Bundler 1 when we know Bundler 2+ does not work
if (common.floatVersion(bundlerVersion) >= 2) {
if (engine === 'ruby' && targetRubyVersion <= 2.2) {
console.log(`Bundler 2+ requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2`)
bundlerVersion = '1'
} 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 === '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'
}
}
// Use Bundler 2.3 when we use Ruby 2.3.2 - 2.5
// Use Bundler 2.4 when we use Ruby 2.6-2.7
if (bundlerVersion === '2') {
if (targetRubyVersion <= 2.5) { // < 2.3.2 already handled above
console.log('Ruby 2.3.2 - 2.5 only works with Bundler 2.3')
bundlerVersion = '2.3'
} else if (targetRubyVersion <= 2.7) {
console.log('Ruby 2.6-2.7 only works with Bundler 2.4')
bundlerVersion = '2.4'
}
}
const gem = path.join(rubyPrefix, 'bin', 'gem')
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
const bundlerVersionConstraint = versionParts >= 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
await exec.exec(gem, ['install', 'bundler', '-v', bundlerVersionConstraint])
return bundlerVersion
}
function bundlerConfigSetArgs(bundlerVersion, key, value) {
if (bundlerVersion.startsWith('1')) {
return ['config', '--local', key, value]
} else {
return ['config', 'set', '--local', key, value]
}
}
export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVersion, bundlerVersion, cacheVersion) {
if (gemfile === null) {
console.log('Could not determine gemfile path, skipping "bundle install" and caching')
return false
}
let envOptions = {}
if (bundlerVersion.match(/^\d+/)) {
// If a specific Bundler version is given or determined, we need to specify the version to use explicitly until the lockfile exists.
// Otherwise, a newer version of Bundler might be used.
console.log(`Setting BUNDLER_VERSION=${bundlerVersion} for "bundle config|lock" commands below to ensure Bundler ${bundlerVersion} is used`)
envOptions = { env: { ...process.env, BUNDLER_VERSION: bundlerVersion } }
}
// config
const cachePath = 'vendor/bundle'
// An absolute path, so it is reliably under $PWD/vendor/bundle, and not relative to the gemfile's directory
const bundleCachePath = path.join(process.cwd(), cachePath)
await exec.exec('bundle', bundlerConfigSetArgs(bundlerVersion, 'path', bundleCachePath), envOptions)
if (fs.existsSync(lockFile)) {
await exec.exec('bundle', bundlerConfigSetArgs(bundlerVersion, 'deployment', 'true'), envOptions)
} else {
// Generate the lockfile so we can use it to compute the cache key.
// This will also automatically pick up the latest gem versions compatible with the Gemfile.
await exec.exec('bundle', ['lock'], envOptions)
}
await core.group(`Print lockfile`, async () =>
await exec.exec('cat', [lockFile]))
// cache key
const paths = [cachePath]
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}-`]
console.log(`Cache key: ${key}`)
// restore cache & install
let cachedKey = null
try {
// .slice() to workaround https://github.com/actions/toolkit/issues/1377
cachedKey = await cache.restoreCache(paths.slice(), key, restoreKeys)
} catch (error) {
if (error.name === cache.ValidationError.name) {
throw error;
} else {
core.info(`[warning] There was an error restoring the cache ${error.message}`)
}
}
if (cachedKey) {
console.log(`Found cache for key: ${cachedKey}`)
}
// Number of jobs should scale with runner, up to a point
const jobs = Math.min(os.availableParallelism(), 8)
// Always run 'bundle install' to list the gems
await exec.exec('bundle', ['install', '--jobs', `${jobs}`])
// @actions/cache only allows to save for non-existing keys
// Also, skip saving cache for merge_group event
if (!common.isExactCacheKeyMatch(key, cachedKey) && process.env['GITHUB_EVENT_NAME'] !== 'merge_group') {
if (cachedKey) { // existing cache but Gemfile.lock differs, clean old gems
await exec.exec('bundle', ['clean'])
}
// Error handling from https://github.com/actions/cache/blob/master/src/save.ts
console.log('Saving cache')
try {
await cache.saveCache(paths, key)
} catch (error) {
if (error.name === cache.ValidationError.name) {
throw error;
} else if (error.name === cache.ReserveCacheError.name) {
core.info(error.message);
} else {
core.info(`[warning]${error.message}`)
}
}
}
return true
}
async function computeBaseKey(engine, version, lockFile, cacheVersion) {
const cwd = process.cwd()
const bundleWith = process.env['BUNDLE_WITH'] || ''
const bundleWithout = process.env['BUNDLE_WITHOUT'] || ''
const bundleOnly = process.env['BUNDLE_ONLY'] || ''
let key = `setup-ruby-bundler-cache-v6-${common.getOSNameVersionArch()}-${engine}-${version}-wd-${cwd}-with-${bundleWith}-without-${bundleWithout}-only-${bundleOnly}`
if (cacheVersion !== DEFAULT_CACHE_VERSION) {
key += `-v-${cacheVersion}`
}
if (common.isHeadVersion(version)) {
if (engine !== 'jruby') {
let print_abi = "print RbConfig::CONFIG['ruby_version']"
let abi = ''
await exec.exec('ruby', ['-e', print_abi], {
silent: true,
listeners: {
stdout: (data) => {
abi += data.toString();
}
}
});
key += `-ABI-${abi}`
}
}
key += `-${lockFile}`
return key
}
+451
View File
@@ -0,0 +1,451 @@
const os = require('os')
const path = require('path')
const fs = require('fs')
const util = require('util')
const stream = require('stream')
const crypto = require('crypto')
const core = require('@actions/core')
const tc = require('@actions/tool-cache')
const exec = require('@actions/exec')
const { performance } = require('perf_hooks')
const linuxOSInfo = require('linux-os-info')
export const windows = (os.platform() === 'win32')
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
export const drive = (windows ? (process.env['RUNNER_TEMP'] || 'C')[0] : undefined)
const PATH_ENV_VAR = windows ? 'Path' : 'PATH'
export const inputs = {
selfHosted: undefined,
token: undefined
}
export function partition(string, separator) {
const i = string.indexOf(separator)
if (i === -1) {
throw new Error(`No separator ${separator} in string ${string}`)
}
return [string.slice(0, i), string.slice(i + separator.length, string.length)]
}
let inGroup = false
export async function measure(name, block) {
const body = async () => {
const start = performance.now()
try {
return await block()
} finally {
const end = performance.now()
const duration = (end - start) / 1000.0
console.log(`Took ${duration.toFixed(2).padStart(6)} seconds`)
}
}
if (inGroup) {
// Nested groups are not yet supported on GitHub Actions
console.log(`> ${name}`)
return await body()
} else {
inGroup = true
try {
return await core.group(name, body)
} finally {
inGroup = false
}
}
}
// Same as mesaure() but without the group, and no time shown on error
export async function time(name, block) {
console.log(`> ${name}`)
const start = performance.now()
const value = await block()
const end = performance.now()
const duration = (end - start) / 1000.0
console.log(`Took ${duration.toFixed(2).padStart(6)} seconds`)
return value
}
export function isHeadVersion(rubyVersion) {
// asan-release counts as "head" because the version cannot be selected -- you can only get whatever's latest
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan', 'asan-release'].includes(rubyVersion)
}
export function isStableVersion(engine, rubyVersion) {
if (engine.startsWith('truffleruby')) {
return /^\d+(\.\d+)*(-preview\d+)?$/.test(rubyVersion)
} else {
return /^\d+(\.\d+)*$/.test(rubyVersion)
}
}
export function hasBundlerDefaultGem(engine, rubyVersion) {
return isBundler1Default(engine, rubyVersion) || isBundler2PlusDefault(engine, rubyVersion)
}
export function isBundler1Default(engine, rubyVersion) {
if (engine === 'ruby') {
return floatVersion(rubyVersion) >= 2.6 && floatVersion(rubyVersion) < 2.7
} else if (engine.startsWith('truffleruby')) {
return floatVersion(rubyVersion) < 21.0
} else if (engine === 'jruby') {
return false
} else {
return false
}
}
export function isBundler2PlusDefault(engine, rubyVersion) {
if (engine === 'ruby') {
return floatVersion(rubyVersion) >= 2.7
} else if (engine.startsWith('truffleruby')) {
return floatVersion(rubyVersion) >= 21.0
} else if (engine === 'jruby') {
return floatVersion(rubyVersion) >= 9.3
} else {
return false
}
}
export function isBundler2dot2PlusDefault(engine, rubyVersion) {
if (engine === 'ruby') {
return floatVersion(rubyVersion) >= 3.0
} else if (engine.startsWith('truffleruby')) {
return floatVersion(rubyVersion) >= 22.0
} else if (engine === 'jruby') {
return floatVersion(rubyVersion) >= 9.3
} else {
return false
}
}
const UNKNOWN_TARGET_RUBY_VERSION = 9.9
export function isBundler4PlusDefault(engine, rubyVersion) {
const version = targetRubyVersion(engine, rubyVersion)
return version != UNKNOWN_TARGET_RUBY_VERSION && version >= 4.0
}
export function targetRubyVersion(engine, rubyVersion) {
const version = floatVersion(rubyVersion)
if (engine === 'ruby') {
return version
} else if (engine === 'jruby') {
if (version === 9.1) {
return 2.3
} else if (version === 9.2) {
return 2.5
} else if (version === 9.3) {
return 2.6
} else if (version === 9.4) {
return 3.1
} else if (version === 10.0) {
return 3.4
}
} else if (engine.startsWith('truffleruby')) {
if (version < 21.0) {
return 2.6
} else if (version < 22.0) {
return 2.7
} else if (version < 23.0) {
return 3.0
} else if (version < 23.1) {
return 3.1
} else if (version < 24.2) {
return 3.2
}
}
return UNKNOWN_TARGET_RUBY_VERSION // unknown, assume recent
}
export function floatVersion(rubyVersion) {
const match = rubyVersion.match(/^\d+(\.\d+|$)/)
if (match) {
return parseFloat(match[0])
} else if (isHeadVersion(rubyVersion)) {
return 999.999
} else {
throw new Error(`Could not convert version ${rubyVersion} to a float`)
}
}
export async function hashFile(file) {
// See https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
const hash = crypto.createHash('sha256')
const pipeline = util.promisify(stream.pipeline)
await pipeline(fs.createReadStream(file), hash)
return hash.digest('hex')
}
// macos is not listed explicitly, see below
const GitHubHostedPlatforms = [
'ubuntu-22.04-x64',
'ubuntu-22.04-arm64',
'ubuntu-24.04-x64',
'ubuntu-24.04-arm64',
'ubuntu-26.04-x64',
'ubuntu-26.04-arm64',
'windows-2022-x64',
'windows-2025-x64',
'windows-11-arm64'
]
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
function isSupportedPlatform() {
const platform = getOSName()
switch (platform) {
case 'ubuntu':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
case 'macos':
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
// 13 on arm64 because of old macos-arm-oss runners
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 13) ||
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
case 'windows':
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
}
}
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
export function isSelfHostedRunner() {
if (inputs.selfHosted === undefined) {
throw new Error('inputs.selfHosted should have been already set')
}
return inputs.selfHosted === 'true' || !isSupportedPlatform()
}
export function selfHostedRunnerReason() {
if (inputs.selfHosted === 'true') {
return 'the self-hosted input was set'
} else if (!isSupportedPlatform()) {
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
} else {
return 'unknown reason'
}
}
let osName = undefined
let osVersion = undefined
export function getOSName() {
if (osName !== undefined) {
return osName
}
const platform = os.platform()
if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'})
osName = info.id
} else if (platform === 'darwin') {
osName = 'macos'
} else if (platform === 'win32') {
osName = 'windows'
} else {
throw new Error(`Unknown platform ${platform}`)
}
return osName
}
export function getOSVersion() {
if (osVersion !== undefined) {
return osVersion
}
const platform = os.platform()
if (platform === 'linux') {
const info = linuxOSInfo({mode: 'sync'})
osVersion = info.version_id
} else if (platform === 'darwin') {
// See https://github.com/sindresorhus/macos-release/blob/main/index.js
const darwinVersion = parseInt(os.release().match(/^\d+/)[0])
osVersion = `${darwinVersion - 9}`
} else if (platform === 'win32') {
osVersion = findWindowsVersion()
} else {
throw new Error(`Unknown platform ${platform}`)
}
return osVersion
}
export function getOSNameVersion() {
return `${getOSName()}-${getOSVersion()}`
}
export function getOSNameVersionArch() {
return `${getOSName()}-${getOSVersion()}-${os.arch()}`
}
function findWindowsVersion() {
const version = os.version()
const match = version.match(/^Windows(?: Server)? (\d+) (?:Standard|Datacenter|Enterprise)/)
if (match) {
return match[1]
} else {
throw new Error('Could not find Windows version')
}
}
export function shouldUseToolCache(engine, version) {
return (engine === 'ruby' && !isHeadVersion(version)) || isSelfHostedRunner()
}
export function getToolCachePath() {
if (isSelfHostedRunner()) {
return getRunnerToolCache()
} else {
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
// so use that path if not isSelfHostedRunner()
return getDefaultToolCachePath()
}
}
export function getRunnerToolCache() {
const runnerToolCache = process.env['RUNNER_TOOL_CACHE']
if (!runnerToolCache) {
throw new Error('$RUNNER_TOOL_CACHE must be set')
}
return runnerToolCache
}
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
function getDefaultToolCachePath() {
const platform = getOSName()
switch (platform) {
case 'ubuntu':
return '/opt/hostedtoolcache'
case 'macos':
return '/Users/runner/hostedtoolcache'
case 'windows':
return 'C:\\hostedtoolcache\\windows'
}
}
// tc.find() but using RUNNER_TOOL_CACHE=getToolCachePath()
export function toolCacheFind(engine, version) {
const originalToolCache = getToolCachePath()
process.env['RUNNER_TOOL_CACHE'] = getToolCachePath()
try {
return tc.find(engineToToolCacheName(engine), version)
} finally {
process.env['RUNNER_TOOL_CACHE'] = originalToolCache
}
}
function engineToToolCacheName(engine) {
return {
ruby: 'Ruby',
jruby: 'JRuby',
truffleruby: 'TruffleRuby',
"truffleruby+graalvm": 'TruffleRubyGraalVM'
}[engine]
}
export function getToolCacheRubyPrefix(_platform, engine, version) {
const toolCache = getToolCachePath()
return path.join(toolCache, engineToToolCacheName(engine), version, os.arch())
}
export function toolCacheCompleteFile(toolCacheRubyPrefix) {
return `${toolCacheRubyPrefix}.complete`
}
export function createToolCacheCompleteFile(toolCacheRubyPrefix) {
fs.writeFileSync(toolCacheCompleteFile(toolCacheRubyPrefix), '')
}
// convert windows path like C:\Users\runneradmin to /c/Users/runneradmin
export function win2nix(path) {
if (/^[A-Z]:/i.test(path)) {
// path starts with drive
path = `/${path[0].toLowerCase()}${partition(path, ':')[1]}`
}
return path.replace(/\\/g, '/').replace(/ /g, '\\ ')
}
export function setupPath(newPathEntries) {
const originalPath = process.env[PATH_ENV_VAR].split(path.delimiter)
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
core.group(`Modifying ${PATH_ENV_VAR}`, async () => {
// First remove the conflicting path entries
if (cleanPath.length !== originalPath.length) {
console.log(`Entries removed from ${PATH_ENV_VAR} to avoid conflicts with default Ruby:`)
for (const entry of originalPath) {
if (!cleanPath.includes(entry)) {
console.log(` ${entry}`)
}
}
core.exportVariable(PATH_ENV_VAR, cleanPath.join(path.delimiter))
}
console.log(`Entries added to ${PATH_ENV_VAR} to use selected Ruby:`)
for (const entry of newPathEntries) {
console.log(` ${entry}`)
}
})
core.addPath(newPathEntries.join(path.delimiter))
}
export async function setupJavaHome(rubyPrefix) {
await measure("Modifying JAVA_HOME for JRuby", async () => {
console.log("attempting to run with existing JAVA_HOME")
const javaHome = process.env['JAVA_HOME']
let java = javaHome ? path.join(javaHome, 'bin/java') : 'java'
let ret = await exec.exec(java, ['-jar', path.join(rubyPrefix, 'lib/jruby.jar'), '--version'], {ignoreReturnCode: true})
if (ret === 0) {
console.log("JRuby successfully starts, using existing JAVA_HOME")
} else {
console.log("JRuby failed to start, try Java 21 envs")
let arch = os.arch()
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]
let bin = path.join(newHome, 'bin')
if (newHome === "undefined") {
throw new Error(`JAVA_HOME is not Java 21+ needed for JRuby and \$${newHomeVar} is not defined`)
}
console.log(`Setting JAVA_HOME to ${newHomeVar} path ${newHome}`)
core.exportVariable("JAVA_HOME", newHome)
console.log(`Adding ${bin} to ${PATH_ENV_VAR}`)
core.addPath(bin)
}
})
}
// 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
);
}
export async function download(url) {
const auth = inputs.token ? `token ${inputs.token}` : undefined
return await tc.downloadTool(url, undefined, auth)
}
Generated Vendored
+90514 -6677
View File
File diff suppressed because one or more lines are too long
+3
View File
@@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem "path"
+13
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem "bundler", "~> 1.0"
+12
View File
@@ -0,0 +1,12 @@
source "https://rubygems.org"
# Ruby < 2.3 only support Bundler 1, which no longer works with gem github:
if RUBY_VERSION >= '2.3'
unless Gem::Version.new(Bundler::VERSION) >= Gem::Version.new("2.2.0")
raise "Expected Bundler 2.2+ is used on Ruby >= 2.3"
end
# From https://github.com/ruby/setup-ruby/issues/358#issuecomment-1195899304
# Tests using github: and the repository uses a non-master default branch.
gem 'rack-test', github: 'rack/rack-test'
end
+3
View File
@@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "rails", "~> 7.2.0"
+3
View File
@@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "rails", "~> 8.0.0"
+84
View File
@@ -0,0 +1,84 @@
require 'json'
# Returns unique semantic versions and symbolic versions
#
# segment_count = 1 returns unique major versions
# segment_count = 2 returns unique minor versions
# segment_count = 3 returns unique patch versions
def unique_versions(versions, segment_count, *symbolic)
versions.filter_map do |version|
next unless Gem::Version.correct?(version)
ruby_version = Gem::Version.new(version)
next if ruby_version.prerelease? && ruby_version.segments[-2] != 'p'
ruby_version.segments[0, segment_count].join('.')
end.uniq + versions.intersection(symbolic)
end
# Runners
runners = %w[
macos-14
macos-15
macos-15-intel
ubuntu-22.04
ubuntu-24.04
ubuntu-26.04
ubuntu-22.04-arm
ubuntu-24.04-arm
ubuntu-26.04-arm
windows-2022
windows-2025
windows-11-arm
].freeze
macos_runners = runners.select { |runner| runner.start_with?('macos-') }
ubuntu_runners = runners.select { |runner| runner.start_with?('ubuntu-') }
windows_runners, non_windows_runners = runners.partition { |runner| runner.start_with?('windows-') }
macos_arm64_runners, macos_x64_runners = macos_runners.partition { |runner| !runner.end_with?('-intel')}
ubuntu_arm64_runners, ubuntu_x64_runners = ubuntu_runners.partition { |runner| runner.end_with?('-arm')}
windows_arm64_runners, windows_x64_runners = windows_runners.partition { |runner| runner.end_with?('-arm') }
asan_runners = ubuntu_x64_runners.grep(/ubuntu-24\.04/)
ubuntu2604_runners = ubuntu_runners.grep(/ubuntu-26\.04/)
# Versions
ruby_builder_versions = JSON.load(File.read('ruby-builder-versions.json'))
windows_versions = JSON.load(File.read('windows-versions.json'))
# ruby: each minor release + head
ruby_versions = unique_versions(ruby_builder_versions['ruby'], 2, 'head')
windows_ruby_versions = unique_versions(windows_versions.keys, 2, 'head')
matrix = non_windows_runners.product(ruby_versions) + windows_runners.product(windows_ruby_versions)
# jruby: each major release + head
jruby_versions = unique_versions(ruby_builder_versions['jruby'], 1, 'head').map { |version| "jruby-#{version}" }
matrix += runners.product(jruby_versions)
# truffleruby: latest release + head
truffleruby_versions = %w[truffleruby truffleruby-head truffleruby+graalvm truffleruby+graalvm-head]
matrix += (macos_arm64_runners + ubuntu_runners).product(truffleruby_versions)
# ruby-loco: head
ruby_loco_versions = %w[mingw mswin ucrt]
matrix += windows_x64_runners.product(ruby_loco_versions)
# asan: latest release + head
asan_versions = %w[asan-release asan]
matrix += asan_runners.sort.last(1).product(asan_versions)
# https://github.com/ruby/setup-ruby/pull/596#discussion_r1606047680
matrix -= (ubuntu_runners - %w[ubuntu-22.04]).product(%w[1.9])
# https://github.com/ruby/setup-ruby/issues/496
matrix -= ubuntu_runners.product(%w[2.2])
# These old Rubies fail to compile on macOS arm64
matrix -= macos_arm64_runners.product(%w[1.9 2.0 2.1 2.2 2.3 2.4 2.5])
# These old Rubies fail to compile or segfault on Linux arm64
matrix -= ubuntu_arm64_runners.product(%w[1.9 2.0 2.1 2.2])
# These old Rubies fail to compile on ubuntu-26.04
matrix -= ubuntu2604_runners.product(%w[1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.0 3.1])
# RubyInstaller windows-arm64 builds only exist for Ruby 3.4+
matrix -= windows_arm64_runners.product(%w[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.0 3.1 3.2 3.3])
puts(JSON.generate(matrix.sort.map { |os, ruby| { os:, ruby: } }))
+120
View File
@@ -0,0 +1,120 @@
require 'open-uri'
require 'yaml'
require 'json'
# General rules:
# - All the static parts of the expected URL are checked literally.
# - Each path component must begin with [\w], or a more restrictive character set.
# - Percent (`%`) shall not be allowed to avoid any percent encoding.
WINDOWS_VERSIONS_URLS_REGEXPS = [
%r{\A#{Regexp.escape 'https://github.com/oneclick/rubyinstaller/releases/download'}/\w[\w.-]*/\w[\w.-]*\z},
%r{\A#{Regexp.escape 'https://github.com/oneclick/rubyinstaller2/releases/download'}/\w[\w.-]*/\w[\w.-]*\z},
%r{\A#{Regexp.escape 'https://github.com/MSP-Greg/ruby-loco/releases/download'}/\w[\w.-]*/\w[\w.-]*\z}
].freeze
WINDOWS_TOOLCHAIN_VERSIONS_URLS_REGEXPS = [
%r{\A#{Regexp.escape 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe'}\z},
%r{\A#{Regexp.escape 'https://github.com/ruby/setup-msys2-gcc/releases/download'}/\w[\w.-]*/\w[\w@.-]*\z},
%r{\A#{Regexp.escape 'https://github.com/ruby/setup-msys2-gcc/releases/latest/download'}/\w[\w@.-]*\z}
].freeze
# Validate all the URLs in the versions json
def validate(versions, allowed_urls_regexps)
versions.values.flat_map(&:values).each do |url|
if allowed_urls_regexps.none? { |regexp| regexp.match? url }
raise SecurityError, "Unexpected URL: #{url}"
end
end
end
min_requirements = ['~> 2.0.0', '~> 2.1.9', '>= 2.2.6'].map { |req| Gem::Requirement.new(req) }
url = 'https://raw.githubusercontent.com/oneclick/rubyinstaller.org-website/master/_data/downloads.yaml'
entries = YAML.load(URI.open(url, &:read), symbolize_names: true)
versions = entries.select { |entry|
entry[:filetype] == 'rubyinstaller7z' and
entry[:name].include?('(x64)') || entry[:name].include?('(arm)')
}.group_by { |entry|
entry[:name][/Ruby (\d+\.\d+\.\d+)/, 1]
}.map { |version, builds_by_version|
builds = builds_by_version.group_by { |entry|
entry[:name][/\((x64|arm)\)/, 1]
}.map { |arch, builds_by_arch|
arch = 'arm64' if arch == 'arm'
unless builds_by_arch.sort_by { |build| build[:name] } == builds_by_arch.reverse
raise "not sorted as expected for #{version}"
end
[arch, builds_by_arch.first[:href]]
}.sort_by { |arch, builds|
arch
}.to_h
[version, builds]
}.sort_by { |version, entry|
Gem::Version.new(version)
}.select { |version, entry|
min_requirements.any? { |req| req.satisfied_by?(Gem::Version.new(version)) }
}.to_h
latest_version = Gem::Version.new(versions.keys.last)
head_version = Gem::Version.new("#{latest_version.bump}.0dev")
versions['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'
}
versions['mingw'] = {
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
}
versions['mswin'] = {
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z'
}
versions['ucrt'] = {
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
}
validate(versions, WINDOWS_VERSIONS_URLS_REGEXPS)
File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
base_url = 'https://github.com/ruby/setup-msys2-gcc/releases/latest/download/windows-toolchain.json'
windows_toolchain = JSON.parse(URI.open(base_url, &:read), symbolize_names: true)
versions.each do |raw_version, archs|
version = Gem::Version.correct?(raw_version) ? Gem::Version.new(raw_version) : head_version
archs.each_key do |raw_arch|
arch = raw_arch == 'arm64' ? 'aarch64' : raw_arch
platform =
case raw_version
when 'head', 'ucrt'
"#{arch}-mingw-ucrt"
when 'mingw'
"#{arch}-mingw32"
when 'mswin'
"#{arch}-mswin64"
else
if version >= Gem::Version.new('3.1.0.dev')
"#{arch}-mingw-ucrt"
else
"#{arch}-mingw32"
end
end
toolchain =
windows_toolchain.select do |pkg|
pkg[:platform] == platform && pkg[:required_ruby_version].any? do |requirement|
Gem::Requirement.new(requirement).satisfied_by?(version)
end
end
unless toolchain.one?
raise "#{toolchain.empty? ? 'no' : 'multiple'} toolchains found for #{raw_version} #{raw_arch}: #{toolchain}"
end
archs[raw_arch] = URI.join(base_url, toolchain.first[:href]).to_s
end
end
validate(versions, WINDOWS_TOOLCHAIN_VERSIONS_URLS_REGEXPS)
File.binwrite 'windows-toolchain-versions.json', "#{JSON.pretty_generate(versions)}\n"
+184 -69
View File
@@ -1,116 +1,231 @@
const os = require('os')
const fs = require('fs')
const path = require('path')
const core = require('@actions/core')
const io = require('@actions/io')
const tc = require('@actions/tool-cache')
const axios = require('axios')
const windows = require('./windows')
const exec = require('@actions/exec')
const common = require('./common')
const rubygems = require('./rubygems')
const bundler = require('./bundler')
const releasesURL = 'https://github.com/eregon/ruby-install-builder/releases'
const metadataURL = 'https://raw.githubusercontent.com/eregon/ruby-install-builder/metadata'
const windows = common.windows
async function run() {
const inputDefaults = {
'ruby-version': 'default',
'rubygems': 'default',
'bundler': 'Gemfile.lock',
'bundler-cache': 'false',
'working-directory': '.',
'cache-version': bundler.DEFAULT_CACHE_VERSION,
'self-hosted': 'false',
'windows-toolchain': 'default',
'token': '',
}
// entry point when this action is run on its own
export async function run() {
try {
const platform = getVirtualEnvironmentName()
const ruby = await getRubyEngineAndVersion(core.getInput('ruby-version'))
let rubyPrefix
if (platform === 'windows-latest') {
rubyPrefix = await windows.downloadExtractAndSetPATH(ruby)
} else {
if (ruby.startsWith('jruby')) {
// Workaround for https://github.com/actions/virtual-environments/issues/242
core.exportVariable('CLASSPATH', '')
}
rubyPrefix = await downloadAndExtract(platform, ruby)
core.addPath(`${rubyPrefix}/bin`)
}
core.setOutput('ruby-prefix', rubyPrefix)
await setupRuby()
} catch (error) {
core.setFailed(error.message)
if (/\bprocess\b.+\bfailed\b/.test(error.message)) {
core.setFailed(error.message)
} else {
core.setFailed(error.stack)
}
}
// Explicit process.exit() to not wait hanging promises,
// see https://github.com/ruby/setup-ruby/issues/543
process.exit()
}
async function downloadAndExtract(platform, ruby) {
const rubiesDir = `${process.env.HOME}/.rubies`
await io.mkdirP(rubiesDir)
// entry point when this action is run from other actions
export async function setupRuby(options = {}) {
const inputs = { ...options }
for (const key in inputDefaults) {
if (!Object.prototype.hasOwnProperty.call(inputs, key)) {
inputs[key] = core.getInput(key) || inputDefaults[key]
}
}
common.inputs.selfHosted = inputs['self-hosted']
common.inputs.token = inputs['token']
const tag = await getLatestReleaseTag()
const url = `${releasesURL}/download/${tag}/${ruby}-${platform}.tar.gz`
console.log(url)
process.chdir(inputs['working-directory'])
const downloadPath = await tc.downloadTool(url)
await tc.extractTar(downloadPath, rubiesDir)
const platform = common.getOSNameVersion()
const [engine, parsedVersion] = parseRubyEngineAndVersion(inputs['ruby-version'])
return `${rubiesDir}/${ruby}`
let installer
if (platform.startsWith('windows-') && engine === 'ruby' && !common.isSelfHostedRunner()) {
installer = require('./windows')
} else {
installer = require('./ruby-builder')
}
let version
if (common.isSelfHostedRunner()) {
// The list of available Rubies in the hostedtoolcache is unrelated to getAvailableVersions()
version = parsedVersion
} else {
const engineVersions = installer.getAvailableVersions(platform, engine)
version = validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVersion)
}
createGemRC(engine, version)
envPreInstall()
const rubyPrefix = await installer.install(platform, engine, version)
await common.measure('Print Ruby version', async () =>
await exec.exec('ruby', ['--version']))
const rubygemsInputSet = inputs['rubygems'] !== 'default'
if (rubygemsInputSet) {
await common.measure('Updating RubyGems', async () =>
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix, platform, engine, version))
}
// When setup-ruby is used by other actions, this allows code in them to run
// before 'bundle install'. Installed dependencies may require additional
// libraries & headers, build tools, etc.
if (inputs['afterSetupPathHook'] instanceof Function) {
await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version })
}
const [gemfile, lockFile] = bundler.detectGemfiles()
let bundlerVersion = 'unknown'
if (inputs['bundler'] !== 'none') {
bundlerVersion = await common.measure('Installing Bundler', async () =>
bundler.installBundler(inputs['bundler'], rubygemsInputSet, lockFile, platform, rubyPrefix, engine, version))
}
if (inputs['bundler-cache'] === 'true') {
await common.time('bundle install', async () =>
bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version']))
}
core.setOutput('ruby-prefix', rubyPrefix)
}
async function getLatestReleaseTag() {
const response = await axios.get(`${metadataURL}/latest_release.tag`)
return response.data.trim()
}
function parseRubyEngineAndVersion(rubyVersion) {
if (rubyVersion === 'default') {
if (fs.existsSync('.ruby-version')) {
rubyVersion = '.ruby-version'
} else if (fs.existsSync('.tool-versions')) {
rubyVersion = '.tool-versions'
} else if (fs.existsSync('mise.toml')) {
rubyVersion = 'mise.toml'
} else {
throw new Error('input ruby-version needs to be specified if no .ruby-version or .tool-versions file exists')
}
}
async function getRubyEngineAndVersion(rubyVersion) {
if (rubyVersion === '.ruby-version') { // Read from .ruby-version
rubyVersion = fs.readFileSync('.ruby-version', 'utf8').trim()
console.log(`Using ${rubyVersion} as input from file .ruby-version`)
} else if (rubyVersion === '.tool-versions') { // Read from .tool-versions
const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim()
const regexp = /^ruby\s+(\S+)/
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
rubyVersion = rubyLine.match(regexp)[1]
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 regexp = /^\s*ruby\s*=\s*['"]([^'"]+)['"]\s*(?:#.*)?$/
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
rubyVersion = rubyLine.match(regexp)[1]
console.log(`Using ${rubyVersion} as input from file mise.toml`)
}
let engine, version
if (rubyVersion.match(/^\d+/)) { // X.Y.Z => ruby-X.Y.Z
if (/^(\d+)/.test(rubyVersion) || common.isHeadVersion(rubyVersion)) { // X.Y.Z => ruby-X.Y.Z
engine = 'ruby'
version = rubyVersion
} else if (!rubyVersion.includes('-')) { // myruby -> myruby-stableVersion
engine = rubyVersion
version = '' // Let the logic below find the version
version = '' // Let the logic in validateRubyEngineAndVersion() find the version
} else { // engine-X.Y.Z
[engine, version] = rubyVersion.split('-', 2)
[engine, version] = common.partition(rubyVersion, '-')
}
const response = await axios.get(`${metadataURL}/versions.json`)
const stableVersions = response.data
const engineVersions = stableVersions[engine]
return [engine, version]
}
function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVersion) {
if (!engineVersions) {
throw new Error(`Unknown engine ${engine} (input: ${rubyVersion})`)
throw new Error(`Unknown engine ${engine} on ${platform}`)
}
if (!engineVersions.includes(version)) {
let version = parsedVersion
if (!engineVersions.includes(parsedVersion)) {
const latestToFirstVersion = engineVersions.slice().reverse()
const found = latestToFirstVersion.find(v => v.startsWith(version))
// Try to match stable versions first, so an empty version (engine-only) matches the latest stable version
let found = latestToFirstVersion.find(v => common.isStableVersion(engine, v) && v.startsWith(parsedVersion))
if (!found) {
// Exclude head versions, they must be exact matches
found = latestToFirstVersion.find(v => !common.isHeadVersion(v) && v.startsWith(parsedVersion))
}
if (found) {
version = found
} else {
throw new Error(`Unknown version ${version} for ${engine}
input: ${rubyVersion}
available versions for ${engine}: ${engineVersions.join(', ')}
File an issue at https://github.com/eregon/ruby-install-builder/issues if would like support for a new version`)
throw new Error(`Unknown version ${parsedVersion} for ${engine} on ${platform}
Available versions for ${engine} on ${platform}: ${engineVersions.join(', ')}
Make sure you use the latest version of the action with - uses: ruby/setup-ruby@v1`)
}
}
return engine + '-' + version
// Well known version-platform combinations which do not work:
if (engine === 'ruby' && platform.startsWith('macos') && os.arch() === 'arm64' && common.floatVersion(version) < 2.6) {
throw new Error(`CRuby < 2.6 does not support macos-arm64.
Either use a newer Ruby version or use a macOS image running on amd64, e.g., macos-15-intel.
Note that GitHub changed the meaning of macos-latest from macos-12 (amd64) to macos-14 (arm64):
https://github.blog/changelog/2024-04-01-macos-14-sonoma-is-generally-available-and-the-latest-macos-runner-image/
If you are using a matrix of Ruby versions, a good solution is to run only < 2.6 on amd64, like so:
matrix:
ruby: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3']
os: [ ubuntu-latest, macos-latest ]
# CRuby < 2.6 does not support macos-arm64, so test those on amd64 instead
exclude:
- { os: macos-latest, ruby: '2.4' }
- { os: macos-latest, ruby: '2.5' }
include:
- { os: macos-15-intel, ruby: '2.4' }
- { os: macos-15-intel, ruby: '2.5' }
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
} else if (engine === 'truffleruby' && platform.startsWith('windows')) {
throw new Error('TruffleRuby does not currently support Windows.')
} else if (engine === 'truffleruby' && platform.startsWith('macos') && os.arch() === 'x64' && common.floatVersion(version) >= 34.0) {
throw new Error('TruffleRuby 34+ no longer supports macOS Intel, please exclude that combination from CI.')
}
return version
}
function getVirtualEnvironmentName() {
const platform = os.platform()
if (platform == 'linux') {
return `ubuntu-${findUbuntuVersion()}`
} else if (platform == 'darwin') {
return 'macos-latest'
} else if (platform == 'win32') {
return 'windows-latest'
} else {
throw new Error(`Unknown platform ${platform}`)
function createGemRC(engine, version) {
const gemrc = path.join(os.homedir(), '.gemrc')
if (!fs.existsSync(gemrc)) {
if (engine === 'ruby' && common.floatVersion(version) < 2.0) {
fs.writeFileSync(gemrc, `install: --no-rdoc --no-ri${os.EOL}update: --no-rdoc --no-ri${os.EOL}`)
} else {
fs.writeFileSync(gemrc, `gem: --no-document${os.EOL}`)
}
}
}
function findUbuntuVersion() {
const lsb_release = fs.readFileSync('/etc/lsb-release', 'utf8')
const match = lsb_release.match(/^DISTRIB_RELEASE=(\d+\.\d+)$/m)
if (match) {
return match[1]
} else {
throw new Error('Could not find Ubuntu version')
// sets up ENV variables
// currently only used on Windows runners
function envPreInstall() {
const ENV = process.env
if (windows) {
// puts normal Ruby temp folder on SSD
core.exportVariable('TMPDIR', ENV['RUNNER_TEMP'])
// bash - sets home to match native windows
core.exportVariable('HOME', os.homedir())
// bash - needed to maintain Path from Windows
core.exportVariable('MSYS2_PATH_TYPE', 'inherit')
}
}
run()
if (__filename.endsWith('index.js')) { run() }
+57
View File
@@ -0,0 +1,57 @@
versions = ARGV.fetch(0).split(',').map(&:strip)
p versions
versions.each do |engine_version|
puts engine_version
engine, version = engine_version.split('-', 2)
p [engine, version]
match = case engine
when 'ruby', 'jruby'
/^\d+\.\d+\./
when 'truffleruby', 'truffleruby+graalvm'
/^\d+\./
end
raise engine_version unless version[match]
# 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
+14 -13
View File
@@ -1,15 +1,15 @@
{
"name": "use-ruby-action",
"name": "setup-ruby",
"version": "0.1.0",
"description": "Download a prebuilt ruby and add it to $PATH",
"description": "Download a prebuilt Ruby and add it to the PATH in 5 seconds",
"main": "index.js",
"license": "MIT",
"scripts": {
"lint": "eslint *.js",
"package": "ncc build index.js -o dist"
},
"repository": {
"type": "git",
"url": "git+https://github.com/eregon/use-ruby-action.git"
"url": "git+https://github.com/ruby/setup-ruby.git"
},
"keywords": [
"GitHub",
@@ -17,19 +17,20 @@
"Ruby"
],
"author": "Benoit Daloze",
"license": "MIT",
"bugs": {
"url": "https://github.com/eregon/use-ruby-action/issues"
"url": "https://github.com/ruby/setup-ruby/issues"
},
"homepage": "https://github.com/eregon/use-ruby-action",
"homepage": "https://github.com/ruby/setup-ruby",
"dependencies": {
"@actions/core": "^1.1.1",
"@actions/io": "^1.0.1",
"@actions/tool-cache": "^1.1.2",
"axios": "^0.19.0"
"@actions/cache": "^5.0.3",
"@actions/core": "^2.0.2",
"@actions/exec": "^2.0.0",
"@actions/io": "^2.0.0",
"@actions/tool-cache": "^3.0.0",
"linux-os-info": "^2.0.0",
"semver": "^7.7.3"
},
"devDependencies": {
"@zeit/ncc": "^0.20.5",
"eslint": "^6.3.0"
"@vercel/ncc": "^0.38.3"
}
}
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
set -e
if [ "$(dirname "$0")" != ".git/hooks" ] || git diff --cached --name-only | grep -E '.(js|json)$|yarn.lock'; then
yarn install
yarn run package
exec git add dist/index.js
fi
+17
View File
@@ -0,0 +1,17 @@
require 'json'
def run(command_line)
puts "$ #{command_line}"
output = `#{command_line}`
puts output
raise $?.inspect unless $?.success?
output
end
latest_release_tag = run 'gh release view --json tagName'
latest_release_tag = JSON.load(latest_release_tag).fetch('tagName')
raise latest_release_tag unless latest_release_tag =~ /\Av(\d+).(\d+).(\d+)\z/
tag = "v#{$1}.#{Integer($2)+1}.0"
run "gh release create --generate-notes --latest #{tag}"
+52
View File
@@ -0,0 +1,52 @@
{
"ruby": [
"1.9.3-p551",
"2.0.0-p648",
"2.1.9",
"2.2.10",
"2.3.0", "2.3.1", "2.3.2", "2.3.3", "2.3.4", "2.3.5", "2.3.6", "2.3.7", "2.3.8",
"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", "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.2.9", "3.2.10", "3.2.11",
"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.3.10", "3.3.11", "3.3.12",
"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.4.7", "3.4.8", "3.4.9", "3.4.10",
"3.5.0-preview1",
"4.0.0-preview2", "4.0.0-preview3", "4.0.0", "4.0.1", "4.0.2", "4.0.3", "4.0.4", "4.0.5", "4.0.6",
"head", "debug", "asan", "asan-release"
],
"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.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", "9.4.14.0", "9.4.15.0",
"10.0.0.0", "10.0.0.1", "10.0.1.0", "10.0.2.0", "10.0.3.0", "10.0.4.0", "10.0.5.0", "10.0.6.0",
"10.1.0.0",
"head"
],
"truffleruby": [
"19.3.0", "19.3.1",
"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.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",
"33.0.0", "33.0.1",
"34.0.0", "34.0.1",
"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.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",
"33.0.0", "33.0.1",
"34.0.0", "34.0.1",
"head"
]
}
+130
View File
@@ -0,0 +1,130 @@
const os = require('os')
const fs = require('fs')
const path = require('path')
const core = require('@actions/core')
const exec = require('@actions/exec')
const io = require('@actions/io')
const common = require('./common')
const rubyBuilderVersions = require('./ruby-builder-versions')
const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
const windows = common.windows
export function getAvailableVersions(platform, engine) {
return rubyBuilderVersions[engine]
}
export async function install(platform, engine, version) {
let rubyPrefix, inToolCache
if (common.shouldUseToolCache(engine, version)) {
inToolCache = common.toolCacheFind(engine, version)
if (inToolCache) {
rubyPrefix = inToolCache
} else {
const toolCacheRubyPrefix = common.getToolCacheRubyPrefix(platform, engine, version)
if (common.isSelfHostedRunner()) {
const rubyBuildDefinition = engine === 'ruby' ? version : `${engine}-${version}`
core.error(
`The current runner (${common.getOSNameVersionArch()}) was detected as self-hosted because ${common.selfHostedRunnerReason()}.\n` +
`In such a case, you should install Ruby in the $RUNNER_TOOL_CACHE yourself, for example using https://github.com/rbenv/ruby-build\n` +
`You can take inspiration from this workflow for more details: https://github.com/ruby/ruby-builder/blob/master/.github/workflows/build.yml\n` +
`$ ruby-build ${rubyBuildDefinition} ${toolCacheRubyPrefix}\n` +
`Once that completes successfully, mark it as complete with:\n` +
`$ touch ${common.toolCacheCompleteFile(toolCacheRubyPrefix)}\n` +
`It is your responsibility to ensure installing Ruby like that is not done in parallel.\n`)
process.exit(1)
} else {
rubyPrefix = toolCacheRubyPrefix
}
}
} else if (windows) {
rubyPrefix = path.join(`${common.drive}:`, `${engine}-${version}`)
} else {
rubyPrefix = path.join(os.homedir(), '.rubies', `${engine}-${version}`)
}
const paths = [path.join(rubyPrefix, 'bin')]
// JRuby can use compiled extension code via ffi, so make sure gcc exists.
if (platform.startsWith('windows') && engine === 'jruby') {
paths.push(...await require('./windows').installJRubyTools())
}
// Set the PATH now, so the MSYS2 'tar' is in Path on Windows
common.setupPath(paths)
if (!inToolCache) {
await io.mkdirP(rubyPrefix)
await downloadAndExtract(platform, engine, version, rubyPrefix)
}
// Ensure JRuby has minimum Java version to run
if (engine === "jruby") {
await common.setupJavaHome(rubyPrefix)
}
return rubyPrefix
}
async function downloadAndExtract(platform, engine, version, rubyPrefix) {
const parentDir = path.dirname(rubyPrefix)
const downloadPath = await common.measure('Downloading Ruby', async () => {
const url = getDownloadURL(platform, engine, version)
console.log(url)
try {
return await common.download(url)
} catch (error) {
if (error.message.includes('404')) {
throw new Error(`Unavailable version ${version} for ${engine} on ${platform}
You can request it at https://github.com/ruby/setup-ruby/issues
Cause: ${error.message}`)
} else {
throw error
}
}
})
await common.measure('Extracting Ruby', async () => {
if (windows) {
// Windows 2016 doesn't have system tar, use MSYS2's, it needs unix style paths
await exec.exec('tar', ['-xz', '-C', common.win2nix(parentDir), '-f', common.win2nix(downloadPath)])
} else {
await exec.exec('tar', ['-xz', '-C', parentDir, '-f', downloadPath])
}
})
if (common.shouldUseToolCache(engine, version)) {
common.createToolCacheCompleteFile(rubyPrefix)
}
}
function getDownloadURL(platform, engine, version) {
let builderPlatform = null
if (platform.startsWith('windows-')) {
builderPlatform = `windows-${os.arch()}`
} else if (platform.startsWith('macos-')) {
builderPlatform = `darwin-${os.arch()}`
} else if (platform.startsWith('ubuntu-')) {
builderPlatform = `${platform}-${os.arch()}`
}
if (builderPlatform === null || !['x64', 'arm64'].includes(os.arch())) {
throw new Error(`Unknown download URL for platform ${platform}-${os.arch()}`)
}
if (common.isHeadVersion(version)) {
return getLatestHeadBuildURL(builderPlatform, engine, version)
} else {
return `${releasesURL}/download/${engine}-${version}/${engine}-${version}-${builderPlatform}.tar.gz`
}
}
function getLatestHeadBuildURL(platform, engine, version) {
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`
}
+62
View File
@@ -0,0 +1,62 @@
const common = require('./common')
const path = require('path')
const exec = require('@actions/exec')
const semver = require('semver')
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix, platform, engine, rubyVersion) {
const gem = path.join(rubyPrefix, 'bin', 'gem')
let gemVersion = ''
await exec.exec(gem, ['--version'], {
listeners: {
stdout: (data) => (gemVersion += data.toString()),
}
});
gemVersion = semver.coerce(gemVersion.trim())
console.log(`Default RubyGems version is ${gemVersion}`)
if (rubygemsVersionInput === 'latest') {
console.log('Updating RubyGems to latest version')
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])
} else {
console.log(`Skipping RubyGems update because the given version (${rubygemsVersionInput}) is not newer than the default version (${gemVersion})`)
}
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.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) {
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'])
}
}
+13
View File
@@ -0,0 +1,13 @@
require 'rbconfig'
require 'stringio'
puts "CPPFLAGS: #{RbConfig::CONFIG["CPPFLAGS"]}"
$stderr = StringIO.new
begin
system RbConfig.ruby, "-e", "p :OK"
out = $stderr.string
ensure
$stderr = STDERR
end
abort out unless out.empty?
+35
View File
@@ -0,0 +1,35 @@
require 'json'
hash = File.read('ruby-builder-versions.json')
versions = JSON.load(hash).transform_keys(&:to_sym)
ONLY_LATEST_PATCH = ENV['ONLY_LATEST_PATCH']
def filter(versions)
versions -= %w[head debug asan asan-release 3.5.0-preview1]
if ONLY_LATEST_PATCH
versions = versions.group_by { |v| v[/^\d+\.\d+/] }.map { _2.last }
end
versions
end
if ONLY_LATEST_PATCH
puts filter(versions[:ruby]).map { |v| "ruby-#{v}" }.join(', ')
else
by_minor = versions[:ruby].group_by { |v| v[/^\d+\.\d+/] }
by_minor.each_pair do |minor, versions|
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
end
end
puts
puts filter(versions[:truffleruby]).map { |v| "truffleruby-#{v}" }.join(', ')
puts
puts filter(versions[:"truffleruby+graalvm"]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
puts
puts filter(versions[:jruby]).map { |v| "jruby-#{v}" }.join(', ')
puts
puts "For Windows:"
puts filter(versions[:jruby]).join(', ')
+332
View File
@@ -0,0 +1,332 @@
{
"2.0.0": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.1.9": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.2.6": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.3.0": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.3.1": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.3.3": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
},
"2.4.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.9": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.4.10": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.8": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.5.9": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.8": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.9": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.6.10": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"2.7.8": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.0.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.1.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
},
"3.2.0": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.2.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"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.2.10": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
},
"3.2.11": {
"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"
},
"3.3.1": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.2": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.3": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.4": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.5": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.6": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"3.3.7": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
},
"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.3.10": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
},
"3.3.11": {
"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"
},
"3.4.2": {
"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"
},
"3.4.3": {
"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"
},
"3.4.4": {
"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"
},
"3.4.6": {
"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.7": {
"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.8": {
"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.9": {
"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.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"
},
"4.0.0": {
"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"
},
"4.0.1": {
"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"
},
"4.0.2": {
"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"
},
"4.0.3": {
"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"
},
"4.0.4": {
"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"
},
"4.0.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"
},
"4.0.6": {
"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"
},
"mingw": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64.7z"
},
"mswin": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/vcpkg-x64-windows.7z"
},
"ucrt": {
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
}
}
+332
View File
@@ -0,0 +1,332 @@
{
"2.0.0": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z"
},
"2.1.9": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z"
},
"2.2.6": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z"
},
"2.3.0": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.0/ruby-2.3.0-x64-mingw32.7z"
},
"2.3.1": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.1/ruby-2.3.1-x64-mingw32.7z"
},
"2.3.3": {
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/ruby-2.3.3-x64-mingw32.7z"
},
"2.4.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-2/rubyinstaller-2.4.1-2-x64.7z"
},
"2.4.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.2-2/rubyinstaller-2.4.2-2-x64.7z"
},
"2.4.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.3-2/rubyinstaller-2.4.3-2-x64.7z"
},
"2.4.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.4-2/rubyinstaller-2.4.4-2-x64.7z"
},
"2.4.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.5-1/rubyinstaller-2.4.5-1-x64.7z"
},
"2.4.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x64.7z"
},
"2.4.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.7-1/rubyinstaller-2.4.7-1-x64.7z"
},
"2.4.9": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.9-1/rubyinstaller-2.4.9-1-x64.7z"
},
"2.4.10": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.10-1/rubyinstaller-2.4.10-1-x64.7z"
},
"2.5.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.0-2/rubyinstaller-2.5.0-2-x64.7z"
},
"2.5.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z"
},
"2.5.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z"
},
"2.5.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.5-1/rubyinstaller-2.5.5-1-x64.7z"
},
"2.5.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.6-1/rubyinstaller-2.5.6-1-x64.7z"
},
"2.5.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.7-1/rubyinstaller-2.5.7-1-x64.7z"
},
"2.5.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.8-2/rubyinstaller-2.5.8-2-x64.7z"
},
"2.5.9": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.9-1/rubyinstaller-2.5.9-1-x64.7z"
},
"2.6.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.0-1/rubyinstaller-2.6.0-1-x64.7z"
},
"2.6.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.1-1/rubyinstaller-2.6.1-1-x64.7z"
},
"2.6.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x64.7z"
},
"2.6.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x64.7z"
},
"2.6.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.4-1/rubyinstaller-2.6.4-1-x64.7z"
},
"2.6.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.7z"
},
"2.6.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z"
},
"2.6.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z"
},
"2.6.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z"
},
"2.6.9": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z"
},
"2.6.10": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z"
},
"2.7.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z"
},
"2.7.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z"
},
"2.7.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z"
},
"2.7.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z"
},
"2.7.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z"
},
"2.7.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z"
},
"2.7.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z"
},
"2.7.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z"
},
"2.7.8": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.8-1/rubyinstaller-2.7.8-1-x64.7z"
},
"3.0.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z"
},
"3.0.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z"
},
"3.0.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z"
},
"3.0.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z"
},
"3.0.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z"
},
"3.0.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z"
},
"3.0.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z"
},
"3.0.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z"
},
"3.1.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z"
},
"3.1.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z"
},
"3.1.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z"
},
"3.1.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z"
},
"3.1.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z"
},
"3.1.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z"
},
"3.1.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.6-1/rubyinstaller-3.1.6-1-x64.7z"
},
"3.1.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.7-1/rubyinstaller-3.1.7-1-x64.7z"
},
"3.2.0": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z"
},
"3.2.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z"
},
"3.2.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z"
},
"3.2.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z"
},
"3.2.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z"
},
"3.2.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.5-1/rubyinstaller-3.2.5-1-x64.7z"
},
"3.2.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.6-1/rubyinstaller-3.2.6-1-x64.7z"
},
"3.2.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.7-1/rubyinstaller-3.2.7-1-x64.7z"
},
"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.2.10": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.10-1/rubyinstaller-3.2.10-1-x64.7z"
},
"3.2.11": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.11-1/rubyinstaller-3.2.11-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"
},
"3.3.1": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-x64.7z"
},
"3.3.2": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.2-1/rubyinstaller-3.3.2-1-x64.7z"
},
"3.3.3": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.3-1/rubyinstaller-3.3.3-1-x64.7z"
},
"3.3.4": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z"
},
"3.3.5": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z"
},
"3.3.6": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z"
},
"3.3.7": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.7-1/rubyinstaller-3.3.7-1-x64.7z"
},
"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.3.10": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.10-1/rubyinstaller-3.3.10-1-x64.7z"
},
"3.3.11": {
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.11-1/rubyinstaller-3.3.11-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"
},
"3.4.2": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-x64.7z"
},
"3.4.3": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-x64.7z"
},
"3.4.4": {
"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"
},
"3.4.6": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.6-1/rubyinstaller-3.4.6-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.6-1/rubyinstaller-3.4.6-1-x64.7z"
},
"3.4.7": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.7-1/rubyinstaller-3.4.7-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.7-1/rubyinstaller-3.4.7-1-x64.7z"
},
"3.4.8": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.8-1/rubyinstaller-3.4.8-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.8-1/rubyinstaller-3.4.8-1-x64.7z"
},
"3.4.9": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.9-1/rubyinstaller-3.4.9-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.9-1/rubyinstaller-3.4.9-1-x64.7z"
},
"3.4.10": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.10-1/rubyinstaller-3.4.10-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.10-1/rubyinstaller-3.4.10-1-x64.7z"
},
"4.0.0": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.0-1/rubyinstaller-4.0.0-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.0-1/rubyinstaller-4.0.0-1-x64.7z"
},
"4.0.1": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.1-1/rubyinstaller-4.0.1-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.1-1/rubyinstaller-4.0.1-1-x64.7z"
},
"4.0.2": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.2-1/rubyinstaller-4.0.2-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.2-1/rubyinstaller-4.0.2-1-x64.7z"
},
"4.0.3": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.3-1/rubyinstaller-4.0.3-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.3-1/rubyinstaller-4.0.3-1-x64.7z"
},
"4.0.4": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.4-1/rubyinstaller-4.0.4-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.4-1/rubyinstaller-4.0.4-1-x64.7z"
},
"4.0.5": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.5-1/rubyinstaller-4.0.5-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.5-1/rubyinstaller-4.0.5-1-x64.7z"
},
"4.0.6": {
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.6-1/rubyinstaller-4.0.6-1-arm.7z",
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-4.0.6-1/rubyinstaller-4.0.6-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"
},
"mingw": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z"
},
"mswin": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z"
},
"ucrt": {
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z"
}
}
+213 -44
View File
@@ -1,68 +1,237 @@
// Most of this logic is from
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
// 7z arguments
// -aoa overwrite existing, -bd disable progress indicator
const fs = require('fs')
const os = require('os')
const path = require('path')
const cp = require('child_process')
const core = require('@actions/core')
const exec = require('@actions/exec')
const tc = require('@actions/tool-cache')
const common = require('./common')
const rubyInstallerVersions = require('./windows-versions.json')
const toolchainVersions = require('./windows-toolchain-versions.json')
const releasesURL = 'https://github.com/oneclick/rubyinstaller2/releases'
export async function downloadExtractAndSetPATH(ruby) {
const version = ruby.split('-', 2)[1]
if (!ruby.startsWith('ruby-') || version.startsWith('2.3')) {
throw new Error(`Only ruby >= 2.4 is supported on Windows currently (input: ${ruby})`)
export function getAvailableVersions(_platform, engine) {
if (engine === 'ruby') {
return Object.keys(rubyInstallerVersions).filter(version => os.arch() in rubyInstallerVersions[version])
} else {
return undefined
}
const tag = `RubyInstaller-${version}-1`
const base = `${tag.toLowerCase()}-x64`
}
const url = `${releasesURL}/download/${tag}/${base}.7z`
console.log(url)
export async function install(platform, engine, version) {
const url = rubyInstallerVersions[version][os.arch()]
const downloadPath = await tc.downloadTool(url)
await exec.exec(`7z x ${downloadPath} -xr!${base}\\share\\doc -oC:\\`)
const rubyPrefix = `C:\\${base}`
if (!url.endsWith('.7z')) {
throw new Error(`URL should end in .7z: ${url}`)
}
const base = path.posix.basename(url, '.7z')
const msys2 = await linkMSYS2()
const newPath = setupPath(msys2, rubyPrefix)
core.exportVariable('PATH', newPath)
if (!fs.existsSync(`${rubyPrefix}\\bin\\bundle.cmd`)) {
await exec.exec(`${rubyPrefix}\\bin\\gem install bundler -v "~> 1" --no-document`)
let rubyPrefix, inToolCache
if (common.shouldUseToolCache(engine, version)) {
inToolCache = common.toolCacheFind(engine, version)
if (inToolCache) {
rubyPrefix = inToolCache
} else {
rubyPrefix = common.getToolCacheRubyPrefix(platform, engine, version)
}
} else {
rubyPrefix = `${common.drive}:\\${base}`
}
if (!inToolCache) {
await downloadAndExtract(engine, version, url, base, rubyPrefix);
}
const paths = [`${rubyPrefix}\\bin`]
const windowsToolchain = core.getInput('windows-toolchain')
if (windowsToolchain === 'none') {
common.setupPath(paths)
return rubyPrefix
}
const toolchainUrl = toolchainVersions[version][os.arch()]
// Examples:
// - DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
// - msys2-clangarm64.7z
// - vcpkg-x64-windows.7z
const toolchainName = path.posix.basename(toolchainUrl).split('-')[0].toLowerCase()
if (toolchainName === 'msys2') {
paths.push(...await installMSYS2(toolchainUrl, rubyPrefix))
} else {
if (toolchainName === 'vcpkg') {
paths.push(...await installVCPKG(toolchainUrl))
} else if (toolchainName === 'devkit') {
paths.push(...await installMSYS1(toolchainUrl))
} else {
throw new Error(`Unknown toolchain type: ${toolchainUrl}`)
}
// Install msys2 for other rubies to provide better command line tools
paths.push(...await installMSYS2(toolchainVersions['head'][os.arch()]))
}
common.setupPath(paths)
return rubyPrefix
}
async function linkMSYS2() {
const toolCacheVersions = tc.findAllVersions('Ruby')
toolCacheVersions.sort()
if (toolCacheVersions.length == 0) {
throw new Error('Could not find MSYS2 in the toolcache')
async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
const downloadPath = await common.measure('Downloading Ruby', async () => {
console.log(url)
return await common.download(url)
})
const extractPath = process.env.RUNNER_TEMP
await common.measure('Extracting Ruby', async () =>
// -xr extract but exclude share\doc files
exec.exec('7z', ['x', downloadPath, '-bd', `-xr!${base}\\share\\doc`, `-o${extractPath}`], { silent: true }))
const parentDir = path.dirname(rubyPrefix)
if (!fs.existsSync(parentDir)) {
fs.mkdirSync(parentDir, { recursive: true })
}
const latestVersion = toolCacheVersions.slice(-1)[0]
const latestHostedRuby = tc.find('Ruby', latestVersion)
const hostedMSYS2 = `${latestHostedRuby}\\msys64`
const msys2 = 'C:\\msys64'
await exec.exec(`cmd /c mklink /D ${msys2} ${hostedMSYS2}`)
return msys2
const extractedPath = path.join(extractPath, base)
if (extractedPath[0] === rubyPrefix[0]) {
fs.renameSync(extractedPath, rubyPrefix)
} else {
fs.symlinkSync(extractedPath, rubyPrefix, 'junction')
}
if (common.shouldUseToolCache(engine, version)) {
common.createToolCacheCompleteFile(rubyPrefix)
}
}
function setupPath(msys2, rubyPrefix) {
let path = process.env['PATH'].split(';')
export async function installJRubyTools() {
return await installMSYS2(toolchainVersions['head'][os.arch()])
}
// Remove conflicting dev tools from PATH
path = path.filter(e => !e.match(/\b(Chocolatey|CMake|mingw64|OpenSSL|Strawberry)\b/))
async function installMSYS2(url, rubyPrefix = process.env.RUNNER_TEMP) {
const downloadPath = await common.measure('Downloading msys2 build tools', async () => {
console.log(url)
return await common.download(url)
})
// Remove default Ruby in PATH
path = path.filter(e => !e.match(/\bRuby\b/))
const extractPath = path.join(process.env.RUNNER_TEMP, 'msys64')
await common.measure('Extracting msys2 build tools', async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${extractPath}`], { silent: true }))
// Add MSYS2 in PATH
path.unshift(`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`)
// https://github.com/oneclick/rubyinstaller2/blob/HEAD/lib/ruby_installer/build/msys2_installation.rb
//
// ri2 searches for msys64 in the following order:
// - ENV["MSYS2_PATH"]
// - File.join(RbConfig::TOPDIR, "msys64")
// - File.join(File.dirname(RbConfig::TOPDIR), "msys64")
// - "C:\msys64"
// - ...
//
// The first option ENV["MSYS2_PATH"] is only supported in ruby >=3.0.7.
// Therefore we use the second option to avoid conflict with existing "C:\msys64"
const msys2Path = path.join(rubyPrefix, 'msys64')
if (extractPath !== msys2Path) {
fs.symlinkSync(extractPath, msys2Path, 'junction')
}
// Add the downloaded Ruby in PATH
path.unshift(`${rubyPrefix}\\bin`)
const ridk = `${rubyPrefix}\\bin\\ridk.cmd`
if (fs.existsSync(ridk)) {
await common.measure('Setting up ridk environment', async () => exportCommandEnv(`set "MAKE=make" && "${ridk}" enable`))
}
return path.join(';')
// Examples:
// - msys2-clangarm64.7z
// - msys2-ucrt64-gcc@14.7z
// - msys2-mingw64-gcc@14-openssl@1.1.7z
const msys2Type = path.posix.basename(url).split(/[-.]/)[1]
return [`${msys2Path}\\${msys2Type}\\bin`, `${msys2Path}\\usr\\bin`]
}
async function installMSYS1(url) {
const certFile = [
'C:\\Program Files\\Git\\mingw64\\etc\\ssl\\cert.pem',
'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem',
].find(file => fs.existsSync(file))
if (certFile === undefined) {
throw new Error("Cannot find Git's cert file")
}
const downloadPath = await common.measure('Downloading msys1 build tools', async () => {
console.log(url)
return await common.download(url)
})
const msys1Path = `${common.drive}:\\DevKit64`
await common.measure('Extracting msys1 build tools', async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys1Path}`], { silent: true }))
await common.measure('Setting up DevKit environment', async () => {
// ssl dlls cause issues with msys1 Rubies
const sys32 = 'C:\\Windows\\System32\\'
const badFiles = [`${sys32}libcrypto-1_1-x64.dll`, `${sys32}libssl-1_1-x64.dll`]
const existing = badFiles.filter((dll) => fs.existsSync(dll))
if (existing.length > 0) {
core.warning(`Renaming ${existing.join(' and ')} to avoid dll resolution conflicts on Ruby < 2.4`)
existing.forEach(dll => fs.renameSync(dll, `${dll}_`))
}
exportEnv({
CC: 'gcc',
CPP: 'cpp',
CXX: 'g++',
MAKE: 'make',
RI_DEVKIT: msys1Path,
SSL_CERT_FILE: certFile
})
})
return [`${msys1Path}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1Path}\\mingw\\bin`, `${msys1Path}\\bin`]
}
/* Sets MSVC environment for use in Actions
* allows steps to run without running vcvars*.bat, also for PowerShell
* this assumes a single Visual Studio version being available in the Windows images */
async function installVCPKG(url) {
const downloadPath = await common.measure('Downloading mswin vcpkg packages', async () => {
console.log(url)
return await common.download(url)
})
const extractPath = process.env.VCPKG_INSTALLATION_ROOT
await common.measure('Extracting mswin vcpkg packages', async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${extractPath}`], { silent: true }))
return await common.measure('Setting up MSVC environment', async () => {
const cmd = 'vswhere -latest -property installationPath'
const vcVarsBat = os.arch() === 'arm64' ? 'vcvarsarm64.bat' : 'vcvars64.bat'
const vcVars = `${cp.execSync(cmd).toString().trim()}\\VC\\Auxiliary\\Build\\${vcVarsBat}`
if (!fs.existsSync(vcVars)) {
throw new Error(`Missing vcVars file: ${vcVars}`)
}
return exportCommandEnv(`set "MAKE=nmake" && "${vcVars}"`)
})
}
// Run a cmd command, export its environment, and return new paths
function exportCommandEnv(command) {
const cmd = `cmd.exe /s /c "${command} >NUL && "${process.execPath}" -e console.log(JSON.stringify(process.env))"`
const env = JSON.parse(cp.execSync(cmd).toString())
const paths = env.Path.replace(`${path.delimiter}${process.env.Path}`, '').split(path.delimiter)
delete env.Path
exportEnv(env)
return paths
}
function exportEnv(env) {
for (const [k, v] of Object.entries(env)) {
if (process.env[k] !== v) {
console.log(`${k}=${v}`)
core.exportVariable(k, v)
}
}
}
Generated
+317 -848
View File
File diff suppressed because it is too large Load Diff