Compare commits

..
338 Commits
Author SHA1 Message Date
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
34 changed files with 36396 additions and 19795 deletions
+1
View File
@@ -0,0 +1 @@
github: [eregon]
-21
View File
@@ -1,21 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!--
Before filing this issue:
* Make sure you use the latest version with `- uses: ruby/setup-ruby@v1` (see https://github.com/ruby/setup-ruby/blob/master/README.md#versioning)
* 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.
* Try to reproduce the issue locally by following the workflow steps (including all commands done by ruby/setup-ruby, except for `Downloading Ruby` & `Extracting Ruby`). If it does reproduce locally, it's not a ruby/setup-ruby issue.
Please provide:
* the code of or a link to the workflow used
* the link to the log of a failed workflow job
* the command and output of the step failing
* whether you are using a self-hosted runner
-->
+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'
+16 -4
View File
@@ -1,12 +1,24 @@
name: Update the v1 branch when a release is published name: Create a Release
on: on:
release: workflow_dispatch:
types: [published] permissions:
contents: write # for creating release
jobs: jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 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 - run: git push origin HEAD:v1
+223 -24
View File
@@ -9,36 +9,68 @@ on:
paths-ignore: paths-ignore:
- README.md - README.md
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
test: test:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0, windows-2016, windows-2019 ] os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-13, macos-14, macos-15, windows-2019, windows-2022 ]
ruby: [ 1.9, '2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ] ruby: [
'1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', ruby-head,
jruby, jruby-head,
truffleruby, truffleruby-head,
truffleruby+graalvm, truffleruby+graalvm-head
]
include: include:
- { os: windows-2016, ruby: mingw }
- { os: windows-2019, ruby: mingw } - { os: windows-2019, ruby: mingw }
- { os: windows-2019, ruby: mswin } - { os: windows-2019, ruby: mswin }
- { os: windows-2022, ruby: mingw }
- { os: windows-2022, ruby: mswin }
- { os: windows-2022, ruby: ucrt }
- { os: ubuntu-24.04, ruby: asan }
exclude: exclude:
- { os: windows-2016, ruby: 1.9 } # https://github.com/ruby/setup-ruby/issues/496
- { os: windows-2016, ruby: debug } - { os: ubuntu-22.04, ruby: '2.2' }
- { os: windows-2016, ruby: truffleruby } - { os: ubuntu-24.04, ruby: '1.9' }
- { os: windows-2016, ruby: truffleruby-head } - { os: ubuntu-24.04, ruby: '2.2' }
- { os: windows-2016, ruby: truffleruby+graalvm } # These old Rubies fail to compile on macOS arm64
- { os: windows-2016, ruby: truffleruby+graalvm-head } - { os: macos-14, ruby: '1.9' }
- { os: windows-2019, ruby: 1.9 } - { os: macos-14, ruby: '2.0' }
- { os: macos-14, ruby: '2.1' }
- { os: macos-14, ruby: '2.2' }
- { os: macos-14, ruby: '2.3' }
- { os: macos-14, ruby: '2.4' }
- { os: macos-14, ruby: '2.5' }
- { os: macos-15, ruby: '1.9' }
- { os: macos-15, ruby: '2.0' }
- { os: macos-15, ruby: '2.1' }
- { os: macos-15, ruby: '2.2' }
- { os: macos-15, ruby: '2.3' }
- { os: macos-15, ruby: '2.4' }
- { os: macos-15, ruby: '2.5' }
# Windows (note: previews are not available on Windows)
- { os: windows-2019, ruby: '1.9' }
- { os: windows-2022, ruby: '1.9' }
- { os: windows-2019, ruby: '3.4' } # 3.4.0-preview2
- { os: windows-2022, ruby: '3.4' } # 3.4.0-preview2
- { os: windows-2019, ruby: debug } - { os: windows-2019, ruby: debug }
- { os: windows-2022, ruby: debug }
- { os: windows-2019, ruby: truffleruby } - { os: windows-2019, ruby: truffleruby }
- { os: windows-2022, ruby: truffleruby }
- { os: windows-2019, ruby: truffleruby-head } - { os: windows-2019, ruby: truffleruby-head }
- { os: windows-2022, ruby: truffleruby-head }
- { os: windows-2019, ruby: truffleruby+graalvm } - { os: windows-2019, ruby: truffleruby+graalvm }
- { os: windows-2022, ruby: truffleruby+graalvm }
- { os: windows-2019, ruby: truffleruby+graalvm-head } - { os: windows-2019, ruby: truffleruby+graalvm-head }
- { os: windows-2022, ruby: truffleruby+graalvm-head }
name: ${{ matrix.os }} ${{ matrix.ruby }} name: ${{ matrix.os }} ${{ matrix.ruby }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
@@ -65,6 +97,8 @@ jobs:
} else { } else {
echo 'ridk is unavailable' echo 'ridk is unavailable'
} }
} elseif ($plat.Contains('mswin')) {
&"$env:VCPKG_INSTALLATION_ROOT\vcpkg" list
} }
- name: RbConfig::CONFIG - name: RbConfig::CONFIG
run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG' run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG'
@@ -90,14 +124,41 @@ jobs:
- run: bundle exec rake --version - run: bundle exec rake --version
- run: bundle exec rake - run: bundle exec rake
- name: which ruby, rake # Ensure the same bundle commands work in bash on Windows
- name: bundle install (bash)
run: bundle install
shell: bash
if: startsWith(matrix.os, 'windows')
- name: bundle exec rake --version (bash)
run: bundle exec rake --version
shell: bash
if: startsWith(matrix.os, 'windows')
- name: bundle exec rake (bash)
run: bundle exec rake
shell: bash
if: startsWith(matrix.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: "!startsWith(matrix.os, 'windows')" if: "!startsWith(matrix.os, 'windows')"
run: which -a ruby rake - name: where ruby, rake, bundle
- name: where ruby, rake
if: startsWith(matrix.os, 'windows') if: startsWith(matrix.os, 'windows')
run: | run: |
$ErrorActionPreference = 'Continue' $ErrorActionPreference = 'Continue'
$where = 'ruby', 'rake' $where = 'ruby', 'rake', 'bundle'
foreach ($e in $where) { foreach ($e in $where) {
$rslt = where.exe $e 2>&1 | Out-String $rslt = where.exe $e 2>&1 | Out-String
if ($rslt.contains($e)) { echo $rslt.Trim() } if ($rslt.contains($e)) { echo $rslt.Trim() }
@@ -106,32 +167,155 @@ jobs:
} }
- name: bash test - name: bash test
shell: bash shell: bash
run: echo ~ run: echo ~ && bundle install
- name: Windows JRuby - name: Windows JRuby
if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby') if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby')
run: gem install sassc run: gem install sassc
testNoGemfile:
name: "Test with no Gemfile"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rm Gemfile
- uses: ./
with:
ruby-version: '2.6'
- 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@v4
- 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@v4
- 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@v4
- 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@v4
- 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-20.04
steps:
- uses: actions/checkout@v4
- uses: ./
with:
ruby-version: '2.2'
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@v4
- 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@v4
- uses: ./
with:
ruby-version: '2.6'
bundler: 2.2
- run: bundle --version | grep -P "Bundler version 2\.2\.\d+"
testExactBundlerVersion: testExactBundlerVersion:
name: "Test with an exact Bundler version" name: "Test with an exact Bundler version"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: 2.6 ruby-version: '2.6'
bundler: 2.2.3 bundler: 2.2.3
- run: bundle --version | grep -F "Bundler version 2.2.3" - run: bundle --version | grep -F "Bundler version 2.2.3"
testBundlerPre:
name: "Test with a Bundler pre/rc version"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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@v4
- uses: ./
with:
ruby-version: ruby-head
bundler-cache: true
testDependencyOnBundler1: testDependencyOnBundler1:
name: "Test gemfile depending on Bundler 1" name: "Test gemfile depending on Bundler 1"
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler1.gemfile BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler1.gemfile
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: 2.7 ruby-version: '2.7'
bundler: 1 bundler: 1
bundler-cache: true bundler-cache: true
- run: bundle --version | grep -F "Bundler version 1." - run: bundle --version | grep -F "Bundler version 1."
@@ -146,12 +330,14 @@ jobs:
env: env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: 2.6 ruby-version: '2.6'
bundler-cache: true bundler-cache: true
- run: bundle exec rails --version - run: bundle exec rails --version
env:
RUBYOPT: '-rlogger' # Rails 6 is missing a require 'logger' in active_support/logger_thread_safe_level.rb
testTruffleRubyNokogiri: testTruffleRubyNokogiri:
name: "Test installing a Gemfile with nokogiri on TruffleRuby" name: "Test installing a Gemfile with nokogiri on TruffleRuby"
@@ -159,17 +345,30 @@ jobs:
env: env:
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/nokogiri.gemfile BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/nokogiri.gemfile
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ./ - uses: ./
with: with:
ruby-version: truffleruby-head ruby-version: truffleruby-head
bundler-cache: true bundler-cache: true
- run: bundle list | grep nokogiri - run: bundle list | grep nokogiri
testWindowsToolchain:
name: "Test windows-toolchain: none"
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: ./
with:
ruby-version: '2.7'
windows-toolchain: none
bundler: none
- name: C:/msys64/mingw64/bin/gcc.exe not installed
run: ruby -e "abort if File.exist?('C:/msys64/mingw64/bin/gcc.exe')"
lint: lint:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- run: yarn install - run: yarn install
- run: yarn run package - run: yarn run package
- name: Check generated files are up to date - name: Check generated files are up to date
+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@v4
with:
fetch-depth: 0
- run: git push origin HEAD:v1
-1
View File
@@ -1 +0,0 @@
ruby-2.6.5
-2
View File
@@ -1,2 +0,0 @@
nodejs 12.0.0
ruby 2.7.0
+6 -1
View File
@@ -22,4 +22,9 @@ $ cp pre-commit .git/hooks/pre-commit
## Adding a new Ruby version ## Adding a new Ruby version
Add the new version in `ruby-builder-versions.js` and update the README. 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
Maintainers can create a release automatically by running [this workflow](https://github.com/ruby/setup-ruby/actions/workflows/release.yml).
+67 -39
View File
@@ -5,8 +5,9 @@ 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 the `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. No extra packages need to be installed.
Compared to [actions/setup-ruby](https://github.com/actions/setup-ruby), **Important:** Prefer `ruby/setup-ruby@v1`.
this actions supports many more versions and features. 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 ### Supported Versions
@@ -14,44 +15,50 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
| Interpreter | Versions | | Interpreter | Versions |
| ----------- | -------- | | ----------- | -------- |
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.0.2, head, debug, mingw, mswin | | `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.4.1, head, debug, mingw, mswin, ucrt |
| `jruby` | 9.1.17.0 - 9.3.1.0, head | | `jruby` | 9.1.17.0 - 9.4.9.0, head |
| `truffleruby` | 19.3.0 - 21.3.0, head | | `truffleruby` | 19.3.0 - 24.1.1, head |
| `truffleruby+graalvm` | 21.2.0 - 21.3.0, head | | `truffleruby+graalvm` | 21.2.0 - 24.1.1, head |
`ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`). `ruby-debug` is the same as `ruby-head` but with assertions enabled (`-DRUBY_DEBUG=1`).
On Windows, `mingw` and `mswin` are `ruby-head` builds using the MSYS2/MinGW and the MSVC toolchains respectively.
`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`.
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). 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, 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. as it provides more useful feedback for the Ruby core team and for upcoming changes.
Only versions published by [RubyInstaller](https://rubyinstaller.org/downloads/archives/) are available on Windows. Only release versions published by [RubyInstaller](https://rubyinstaller.org/downloads/archives/)
Due to that, Ruby 2.2 resolves to 2.2.6 on Windows and 2.2.10 on other platforms. are available on Windows. Due to that, Ruby 2.2 resolves to 2.2.6 on Windows and 2.2.10
And Ruby 2.3 on Windows only has builds for 2.3.0, 2.3.1 and 2.3.3. 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, 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. which means Ruby ≤ 2.4 is unmaintained and considered insecure.
### Supported Platforms ### Supported Platforms
The action works for all [GitHub-hosted runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners). The action works on these [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) images. Runner images not listed below are not supported yet. `$OS-latest` just alias to one of these images.
| Operating System | Recommended | Other Supported Versions | | Operating System | Supported |
| ----------- | -------- | -------- | | ---------------- | --------- |
| Ubuntu | `ubuntu-latest` (= `ubuntu-20.04`) | `ubuntu-18.04`, `ubuntu-16.04` | | Ubuntu | `ubuntu-20.04`, `ubuntu-22.04`, `ubuntu-24.04` |
| macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` | | macOS | `macos-13` and newer versions |
| Windows | `windows-latest` (= `windows-2019`) | `windows-2016` | | Windows | `windows-2019`, `windows-2022` |
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder) The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2). and on Windows by [RubyInstaller2](https://github.com/oneclick/rubyinstaller2).
`mingw` and `mswin` builds are generated by [ruby-loco](https://github.com/MSP-Greg/ruby-loco). 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), `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), `jruby-head` is generated by [jruby-dev-builder](https://github.com/ruby/jruby-dev-builder),
`truffleruby-head` is generated by [truffleruby-dev-builder](https://github.com/ruby/truffleruby-dev-builder) `truffleruby-head` and `truffleruby+graalvm-head` are generated by [truffleruby-dev-builder](https://github.com/ruby/truffleruby-dev-builder).
and `truffleruby+graalvm` is generated by [graalvm-ce-dev-builds](https://github.com/graalvm/graalvm-ce-dev-builds). The full list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
The full list of available Ruby versions can be seen in [ruby-builder-versions.js](ruby-builder-versions.js) (although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
for Ubuntu and macOS and in [windows-versions.js](windows-versions.js) for Windows. and in [windows-versions.json](windows-versions.json) for Windows.
## Usage ## Usage
@@ -64,10 +71,10 @@ jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: 2.6 # Not needed with a .ruby-version file ruby-version: '3.3' # Not needed with a `.ruby-version` or `.tool-versions`
bundler-cache: true # runs 'bundle install' and caches installed gems automatically bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake - run: bundle exec rake
``` ```
@@ -86,10 +93,10 @@ jobs:
matrix: matrix:
os: [ubuntu-latest, macos-latest] os: [ubuntu-latest, macos-latest]
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0' # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
ruby: [2.5, 2.6, 2.7, '3.0', head, jruby, jruby-head, truffleruby, truffleruby-head] ruby: ['2.7', '3.0', '3.1', '3.2', '3.3', head, jruby, jruby-head, truffleruby, truffleruby-head]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: ${{ matrix.ruby }} ruby-version: ${{ matrix.ruby }}
@@ -112,10 +119,10 @@ jobs:
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps 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 BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@v1
with: with:
ruby-version: 2.6 ruby-version: '3.3'
bundler-cache: true # runs 'bundle install' and caches installed gems automatically bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake - run: bundle exec rake
``` ```
@@ -127,9 +134,9 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
### Supported Version Syntax ### Supported Version Syntax
* engine-version like `ruby-2.6.5` and `truffleruby-19.3.0` * 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`) * 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 * version only like `'2.6.5'`, assumes MRI for the engine
* engine only like `truffleruby`, uses the latest stable release of that implementation * engine only like `ruby` and `truffleruby`, uses the latest stable release of that implementation
* `.ruby-version` reads from the project's `.ruby-version` file * `.ruby-version` reads from the project's `.ruby-version` file
* `.tool-versions` reads from the project's `.tool-versions` file * `.tool-versions` reads from the project's `.tool-versions` file
* If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions` * If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions`
@@ -139,11 +146,26 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock` The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock`
if they are not at the root of the repository, see [action.yml](action.yml) for details. if they are not at the root of the repository, see [action.yml](action.yml) for details.
### RubyGems
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 ### Bundler
By default, if there is a `Gemfile.lock` file (or `$BUNDLE_GEMFILE.lock` or `gems.locked`) with a `BUNDLED WITH` section, By default, Bundler is installed as follows:
that version of Bundler will be installed and used.
Otherwise, the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.4, Bundler 1 on Ruby < 2.4). * If there is a `Gemfile.lock` file (or `$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).
This behavior can be customized, see [action.yml](action.yml) for more details about the `bundler` input. This behavior can be customized, see [action.yml](action.yml) for more details about the `bundler` input.
@@ -213,7 +235,9 @@ It is recommended to first get your build working on Ubuntu and macOS before try
* The `PATH` contains [multiple compiler toolchains](https://github.com/ruby/setup-ruby/issues/19). Use `where.exe` to debug which tool is used. * 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, 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`. * For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the `Path`.
* JRuby on Windows has a known bug that `bundle exec rake` [fails](https://github.com/ruby/setup-ruby/issues/18). * Use JRuby 9.2.20+ on Windows (older versions have [bugs](https://github.com/ruby/setup-ruby/issues/18#issuecomment-889072695)).
* JRuby on Windows has multiple issues ([jruby/jruby#7106](https://github.com/jruby/jruby/issues/7106), [jruby/jruby#7182](https://github.com/jruby/jruby/issues/7182)).
* When compiling extension code, note that the packages required to build Ruby are included when using Windows 2022, but that Windows 2019 does not include all of them, and may require installing package(s). This can be done 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 std-lib extension gems.
## Versioning ## Versioning
@@ -230,18 +254,22 @@ This follows the [recommendations](https://github.com/actions/toolkit/blob/maste
## Using self-hosted runners ## 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) This action might work with [self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners)
if the [virtual environment](https://github.com/actions/virtual-environments) is very similar to the ones used by GitHub runners. Notably: if the [Runner Image](https://github.com/actions/runner-images) is very similar to the ones used by GitHub runners. Notably:
* Make sure to use the same operating system and version. * Make sure to use the same operating system and version.
* Set the environment variable `ImageOS` on the runner to the corresponding value on GitHub-hosted runners (e.g. `ubuntu18`/`macos1015`/`win19`). This is necessary to detect the operating system and version.
* Make sure to use the same version of libssl. * Make sure to use the same version of libssl.
* Make sure that the operating system has `libyaml-0` installed * 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, * 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. `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. 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. * `/home/runner` must be writable by the `runner` user.
In other cases, please use a system Ruby or [install Ruby manually](https://github.com/postmodern/chruby/wiki#installing-rubies) instead. 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 ## History
+27 -12
View File
@@ -7,32 +7,47 @@ branding:
inputs: inputs:
ruby-version: ruby-version:
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.' description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.'
required: false
default: 'default' 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: bundler:
description: | description: |
The version of Bundler to install. Either 'none', 'latest', 'Gemfile.lock', or a version number (e.g., 1, 2, 2.1.4). 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 is determined based on the BUNDLED WITH section from the file Gemfile.lock, $BUNDLE_GEMFILE.lock or gems.locked. 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'.
Defaults to 'Gemfile.lock' if the file exists and 'latest' otherwise. For 'default', if the Ruby ships with Bundler 2.2+ as a default gem, that version is used, otherwise the same as 'latest'.
required: false For 'latest', the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.3, Bundler 1 on Ruby < 2.3).
default: 'default' For 'none', nothing is done.
bundler-cache: bundler-cache:
description: 'Run "bundle install", and cache the result automatically. Either true or false.' description: 'Run "bundle install", and cache the result automatically. Either true or false.'
required: false
default: 'false' default: 'false'
working-directory: working-directory:
description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions and Gemfile.lock.' description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions and Gemfile.lock.'
required: false
default: '.'
cache-version: cache-version:
description: | description: |
Arbitrary string that will be added to the cache key of the bundler cache. Set or change it if you need Arbitrary string that will be added to the cache key of the bundler cache. Set or change it if you need
to invalidate the cache. to invalidate the cache.
required: false self-hosted:
default: '0' 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.
outputs: outputs:
ruby-prefix: ruby-prefix:
description: 'The prefix of the installed ruby' description: 'The prefix of the installed ruby'
runs: runs:
using: 'node12' using: 'node20'
main: 'dist/index.js' main: 'dist/index.js'
+92 -33
View File
@@ -7,6 +7,10 @@ const common = require('./common')
export const DEFAULT_CACHE_VERSION = '0' 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 // The returned gemfile is guaranteed to exist, the lockfile might not exist
export function detectGemfiles() { export function detectGemfiles() {
const gemfilePath = process.env['BUNDLE_GEMFILE'] || 'Gemfile' const gemfilePath = process.env['BUNDLE_GEMFILE'] || 'Gemfile'
@@ -30,10 +34,14 @@ function readBundledWithFromGemfileLock(lockFile) {
const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim())) const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim()))
if (bundledWithLine !== -1) { if (bundledWithLine !== -1) {
const nextLine = lines[bundledWithLine+1] const nextLine = lines[bundledWithLine+1]
if (nextLine && /^\d+/.test(nextLine.trim())) { if (nextLine) {
const bundlerVersion = nextLine.trim() const bundlerVersion = nextLine.trim()
console.log(`Using Bundler ${bundlerVersion} from ${lockFile} BUNDLED WITH ${bundlerVersion}`) if (isValidBundlerVersion(bundlerVersion)) {
return 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}`)
}
} }
} }
} }
@@ -50,13 +58,43 @@ async function afterLockFile(lockFile, platform, engine, rubyVersion) {
} }
} }
export async function installBundler(bundlerVersionInput, lockFile, platform, rubyPrefix, engine, rubyVersion) { export async function installBundler(bundlerVersionInput, rubygemsInputSet, lockFile, platform, rubyPrefix, engine, rubyVersion) {
let bundlerVersion = bundlerVersionInput let bundlerVersion = bundlerVersionInput
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') { if (rubygemsInputSet && (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock')) {
bundlerVersion = readBundledWithFromGemfileLock(lockFile) console.log('Using the Bundler installed by updating RubyGems')
return 'unknown'
}
if (!bundlerVersion) { if (bundlerVersion === 'Gemfile.lock') {
let bundlerVersionFromGemfileLock = readBundledWithFromGemfileLock(lockFile)
if (bundlerVersionFromGemfileLock) {
bundlerVersion = bundlerVersionFromGemfileLock
} else {
bundlerVersion = 'default'
}
}
const floatVersion = common.floatVersion(rubyVersion)
if (bundlerVersion === 'default') {
if (common.isBundler2dot2Default(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 2 shipped with ${engine}-${rubyVersion}`)
return '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' bundlerVersion = 'latest'
} }
} }
@@ -65,35 +103,49 @@ export async function installBundler(bundlerVersionInput, lockFile, platform, ru
bundlerVersion = '2' bundlerVersion = '2'
} }
if (/^\d+/.test(bundlerVersion)) { if (isValidBundlerVersion(bundlerVersion)) {
// OK // OK - input is a 1, 2, or 3 part version number
} else { } else {
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`) throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
} }
if (engine === 'ruby' && common.floatVersion(rubyVersion) <= 2.2) { // Use Bundler 1 when we know Bundler 2 does not work
console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2') if (bundlerVersion.startsWith('2')) {
bundlerVersion = '1' if (engine === 'ruby' && floatVersion <= 2.2) {
} else if (engine === 'ruby' && /^2\.3\.[01]/.test(rubyVersion)) { console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby <= 2.2')
console.log('Ruby 2.3.0 and 2.3.1 have shipped with an old rubygems that only works with Bundler 1') bundlerVersion = '1'
bundlerVersion = '1' } else if (engine === 'ruby' && /^2\.3\.[01]/.test(rubyVersion)) {
} else if (engine === 'jruby' && rubyVersion.startsWith('9.1')) { // JRuby 9.1 targets Ruby 2.3, treat it the same console.log('Ruby 2.3.0 and 2.3.1 have shipped with an old rubygems that only works with Bundler 1')
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'
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'
}
} }
if (common.isHeadVersion(rubyVersion) && common.isBundler2Default(engine, rubyVersion) && bundlerVersion.startsWith('2')) { const targetRubyVersion = common.targetRubyVersion(engine, rubyVersion)
// Avoid installing a newer Bundler version for head versions as it might not work. // Use Bundler 2.3 when we use Ruby 2.3.2 - 2.5
// For releases, even if they ship with Bundler 2 we install the latest Bundler. // Use Bundler 2.4 when we use Ruby 2.6-2.7
console.log(`Using Bundler 2 shipped with ${engine}-${rubyVersion}`) if (bundlerVersion == '2') {
} else if (engine.startsWith('truffleruby') && common.isBundler1Default(engine, rubyVersion) && bundlerVersion.startsWith('1')) { if (targetRubyVersion <= 2.5) { // < 2.3.2 already handled above
console.log(`Using Bundler 1 shipped with ${engine}-${rubyVersion}`) console.log('Ruby 2.3.2 - 2.5 only works with Bundler 2.3')
} else { bundlerVersion = '2.3'
const gem = path.join(rubyPrefix, 'bin', 'gem') } else if (targetRubyVersion <= 2.7) {
const bundlerVersionConstraint = /^\d+\.\d+\.\d+/.test(bundlerVersion) ? bundlerVersion : `~> ${bundlerVersion}` console.log('Ruby 2.6-2.7 only works with Bundler 2.4')
await exec.exec(gem, ['install', 'bundler', '-v', bundlerVersionConstraint]) bundlerVersion = '2.4'
}
} }
const gem = path.join(rubyPrefix, 'bin', 'gem')
// Workaround for https://github.com/rubygems/rubygems/issues/5245
// and for https://github.com/oracle/truffleruby/issues/2780
const force = ((platform.startsWith('windows-') && engine === 'ruby' && floatVersion >= 3.1) || (engine === 'truffleruby')) ? ['--force'] : []
const versionParts = [...bundlerVersion.matchAll(/\d+/g)].length
const bundlerVersionConstraint = versionParts >= 3 ? bundlerVersion : `~> ${bundlerVersion}.0`
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
return bundlerVersion return bundlerVersion
} }
@@ -139,7 +191,8 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
// restore cache & install // restore cache & install
let cachedKey = null let cachedKey = null
try { try {
cachedKey = await cache.restoreCache(paths, key, restoreKeys) // .slice() to workaround https://github.com/actions/toolkit/issues/1377
cachedKey = await cache.restoreCache(paths.slice(), key, restoreKeys)
} catch (error) { } catch (error) {
if (error.name === cache.ValidationError.name) { if (error.name === cache.ValidationError.name) {
throw error; throw error;
@@ -180,13 +233,19 @@ export async function bundleInstall(gemfile, lockFile, platform, engine, rubyVer
} }
async function computeBaseKey(platform, engine, version, lockFile, cacheVersion) { async function computeBaseKey(platform, engine, version, lockFile, cacheVersion) {
const cacheVersionSuffix = DEFAULT_CACHE_VERSION === cacheVersion ? '' : `-cachever:${cacheVersion}` const cwd = process.cwd()
let key = `setup-ruby-bundler-cache-v3-${platform}-${engine}-${version}${cacheVersionSuffix}` 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 (common.isHeadVersion(version)) {
if (engine !== 'jruby') { if (engine !== 'jruby') {
// CRuby dev versions do not change the ABI version when the ABI changes, so use the commit as the ABI version let print_abi = "print RbConfig::CONFIG['ruby_version']"
let print_abi = engine === 'ruby' ? 'print RUBY_REVISION' : "print RbConfig::CONFIG['ruby_version']"
let abi = '' let abi = ''
await exec.exec('ruby', ['-e', print_abi], { await exec.exec('ruby', ['-e', print_abi], {
silent: true, silent: true,
+243 -40
View File
@@ -5,12 +5,18 @@ const util = require('util')
const stream = require('stream') const stream = require('stream')
const crypto = require('crypto') const crypto = require('crypto')
const core = require('@actions/core') const core = require('@actions/core')
const tc = require('@actions/tool-cache')
const { performance } = require('perf_hooks') const { performance } = require('perf_hooks')
const linuxOSInfo = require('linux-os-info')
export const windows = (os.platform() === 'win32') export const windows = (os.platform() === 'win32')
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14 // Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
export const drive = (windows ? (process.env['GITHUB_WORKSPACE'] || 'C')[0] : undefined) export const drive = (windows ? (process.env['GITHUB_WORKSPACE'] || 'C')[0] : undefined)
export const inputs = {
selfHosted: undefined
}
export function partition(string, separator) { export function partition(string, separator) {
const i = string.indexOf(separator) const i = string.indexOf(separator)
if (i === -1) { if (i === -1) {
@@ -47,16 +53,44 @@ export async function measure(name, block) {
} }
} }
export function isHeadVersion(rubyVersion) { // Same as mesaure() but without the group, and no time shown on error
return rubyVersion === 'head' || rubyVersion === 'debug' || rubyVersion === 'mingw' || rubyVersion === 'mswin' 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 isStableVersion(rubyVersion) { export function isHeadVersion(rubyVersion) {
return /^\d+(\.\d+)*$/.test(rubyVersion) return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan'].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) || isBundler2Default(engine, rubyVersion)
} }
export function isBundler1Default(engine, rubyVersion) { export function isBundler1Default(engine, rubyVersion) {
return !isBundler2Default(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 isBundler2Default(engine, rubyVersion) { export function isBundler2Default(engine, rubyVersion) {
@@ -71,6 +105,43 @@ export function isBundler2Default(engine, rubyVersion) {
} }
} }
export function isBundler2dot2Default(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
}
}
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 (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
}
}
return 9.9 // unknown, assume recent
}
export function floatVersion(rubyVersion) { export function floatVersion(rubyVersion) {
const match = rubyVersion.match(/^\d+\.\d+/) const match = rubyVersion.match(/^\d+\.\d+/)
if (match) { if (match) {
@@ -90,60 +161,179 @@ export async function hashFile(file) {
return hash.digest('hex') return hash.digest('hex')
} }
function getImageOS() { // macos is not listed explicitly, see below
const imageOS = process.env['ImageOS'] const GitHubHostedPlatforms = [
if (!imageOS) { 'ubuntu-20.04-x64',
throw new Error('The environment variable ImageOS must be set') 'ubuntu-22.04-x64',
'ubuntu-24.04-x64',
'windows-2019-x64',
'windows-2022-x64',
]
// 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())
} }
return imageOS
} }
export function getVirtualEnvironmentName() { // Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
const imageOS = getImageOS() export function isSelfHostedRunner() {
if (inputs.selfHosted === undefined) {
let match = imageOS.match(/^ubuntu(\d+)/) // e.g. ubuntu18 throw new Error('inputs.selfHosted should have been already set')
if (match) {
return `ubuntu-${match[1]}.04`
} }
match = imageOS.match(/^macos(\d{2})(\d+)?/) // e.g. macos1015, macos11 return inputs.selfHosted === 'true' || !isSupportedPlatform()
if (match) { }
return `macos-${match[1]}.${match[2] || '0'}`
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
} }
match = imageOS.match(/^win(\d+)/) // e.g. win19 const platform = os.platform()
if (match) { if (platform === 'linux') {
return `windows-20${match[1]}` 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}`)
} }
throw new Error(`Unknown ImageOS ${imageOS}`) 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+) Datacenter/)
if (match) {
return match[1]
} else {
throw new Error('Could not find Windows version')
}
} }
export function shouldUseToolCache(engine, version) { export function shouldUseToolCache(engine, version) {
return engine === 'ruby' && !isHeadVersion(version) return (engine === 'ruby' && !isHeadVersion(version)) || isSelfHostedRunner()
} }
function getPlatformToolCache(platform) { export function getToolCachePath() {
// Hardcode paths rather than using $RUNNER_TOOL_CACHE because the prebuilt Rubies cannot be moved anyway if (isSelfHostedRunner()) {
if (platform.startsWith('ubuntu-')) { return getRunnerToolCache()
return '/opt/hostedtoolcache'
} else if (platform.startsWith('macos-')) {
return '/Users/runner/hostedtoolcache'
} else if (platform.startsWith('windows-')) {
return 'C:/hostedtoolcache/windows'
} else { } else {
throw new Error('Unknown platform') // 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 getToolCacheRubyPrefix(platform, version) { export function getRunnerToolCache() {
const toolCache = getPlatformToolCache(platform) const runnerToolCache = process.env['RUNNER_TOOL_CACHE']
return path.join(toolCache, 'Ruby', version, 'x64') 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) { export function createToolCacheCompleteFile(toolCacheRubyPrefix) {
const completeFile = `${toolCacheRubyPrefix}.complete` fs.writeFileSync(toolCacheCompleteFile(toolCacheRubyPrefix), '')
fs.writeFileSync(completeFile, '')
} }
// convert windows path like C:\Users\runneradmin to /c/Users/runneradmin // convert windows path like C:\Users\runneradmin to /c/Users/runneradmin
@@ -155,7 +345,15 @@ export function win2nix(path) {
return path.replace(/\\/g, '/').replace(/ /g, '\\ ') return path.replace(/\\/g, '/').replace(/ /g, '\\ ')
} }
// JRuby is installed after setupPath is called, so folder doesn't exist
function rubyIsUCRT(path) {
return !!(fs.existsSync(path) &&
fs.readdirSync(path, { withFileTypes: true }).find(dirent =>
dirent.isFile() && dirent.name.match(/^x64-(ucrt|vcruntime\d{3})-ruby\d{3}\.dll$/)))
}
export function setupPath(newPathEntries) { export function setupPath(newPathEntries) {
let msys2Type = null
const envPath = windows ? 'Path' : 'PATH' const envPath = windows ? 'Path' : 'PATH'
const originalPath = process.env[envPath].split(path.delimiter) const originalPath = process.env[envPath].split(path.delimiter)
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry)) let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
@@ -175,9 +373,13 @@ export function setupPath(newPathEntries) {
// Then add new path entries using core.addPath() // Then add new path entries using core.addPath()
let newPath let newPath
if (windows) { const windowsToolchain = core.getInput('windows-toolchain')
if (windows && windowsToolchain !== 'none') {
// main Ruby dll determines whether mingw or ucrt build
msys2Type = rubyIsUCRT(newPathEntries[0]) ? 'ucrt64' : 'mingw64'
// add MSYS2 in path for all Rubies on Windows, as it provides a better bash shell and a native toolchain // add MSYS2 in path for all Rubies on Windows, as it provides a better bash shell and a native toolchain
const msys2 = ['C:\\msys64\\mingw64\\bin', 'C:\\msys64\\usr\\bin'] const msys2 = [`C:\\msys64\\${msys2Type}\\bin`, 'C:\\msys64\\usr\\bin']
newPath = [...newPathEntries, ...msys2] newPath = [...newPathEntries, ...msys2]
} else { } else {
newPath = newPathEntries newPath = newPathEntries
@@ -189,4 +391,5 @@ export function setupPath(newPathEntries) {
core.endGroup() core.endGroup()
core.addPath(newPath.join(path.delimiter)) core.addPath(newPath.join(path.delimiter))
return msys2Type
} }
Generated Vendored
+34512 -19083
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
+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
+2 -2
View File
@@ -28,6 +28,6 @@ versions = entries.select { |entry|
versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z' versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z'
versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z' versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z' versions['mswin'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z'
versions['ucrt'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
js = "export const versions = #{JSON.pretty_generate(versions)}\n" File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
File.binwrite 'windows-versions.js', js
+78 -19
View File
@@ -2,17 +2,22 @@ const os = require('os')
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const core = require('@actions/core') const core = require('@actions/core')
const exec = require('@actions/exec')
const common = require('./common') const common = require('./common')
const rubygems = require('./rubygems')
const bundler = require('./bundler') const bundler = require('./bundler')
const windows = common.windows const windows = common.windows
const inputDefaults = { const inputDefaults = {
'ruby-version': 'default', 'ruby-version': 'default',
'bundler': 'default', 'rubygems': 'default',
'bundler-cache': 'true', 'bundler': 'Gemfile.lock',
'bundler-cache': 'false',
'working-directory': '.', 'working-directory': '.',
'cache-version': bundler.DEFAULT_CACHE_VERSION, 'cache-version': bundler.DEFAULT_CACHE_VERSION,
'self-hosted': 'false',
'windows-toolchain': 'default',
} }
// entry point when this action is run on its own // entry point when this action is run on its own
@@ -20,8 +25,15 @@ export async function run() {
try { try {
await setupRuby() await setupRuby()
} catch (error) { } 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()
} }
// entry point when this action is run from other actions // entry point when this action is run from other actions
@@ -32,27 +44,50 @@ export async function setupRuby(options = {}) {
inputs[key] = core.getInput(key) || inputDefaults[key] inputs[key] = core.getInput(key) || inputDefaults[key]
} }
} }
common.inputs.selfHosted = inputs['self-hosted']
process.chdir(inputs['working-directory']) process.chdir(inputs['working-directory'])
const platform = common.getVirtualEnvironmentName() const platform = common.getOSNameVersion()
const [engine, parsedVersion] = parseRubyEngineAndVersion(inputs['ruby-version']) const [engine, parsedVersion] = parseRubyEngineAndVersion(inputs['ruby-version'])
let installer let installer
if (platform.startsWith('windows-') && engine !== 'jruby') { if (platform.startsWith('windows-') && engine === 'ruby' && !common.isSelfHostedRunner()) {
installer = require('./windows') installer = require('./windows')
} else { } else {
installer = require('./ruby-builder') installer = require('./ruby-builder')
} }
const engineVersions = installer.getAvailableVersions(platform, engine) let version
const version = validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVersion) 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) createGemRC(engine, version)
envPreInstall() envPreInstall()
// JRuby can use compiled extension code, so make sure gcc exists.
// As of Jan-2022, JRuby compiles against msvcrt.
if (platform.startsWith('windows') && engine === 'jruby' &&
!fs.existsSync('C:\\msys64\\mingw64\\bin\\gcc.exe')) {
await require('./windows').installJRubyTools()
}
const rubyPrefix = await installer.install(platform, engine, version) 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 // When setup-ruby is used by other actions, this allows code in them to run
// before 'bundle install'. Installed dependencies may require additional // before 'bundle install'. Installed dependencies may require additional
// libraries & headers, build tools, etc. // libraries & headers, build tools, etc.
@@ -60,16 +95,17 @@ export async function setupRuby(options = {}) {
await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version }) await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version })
} }
const [gemfile, lockFile] = bundler.detectGemfiles()
let bundlerVersion = 'unknown'
if (inputs['bundler'] !== 'none') { if (inputs['bundler'] !== 'none') {
const [gemfile, lockFile] = bundler.detectGemfiles() bundlerVersion = await common.measure('Installing Bundler', async () =>
bundler.installBundler(inputs['bundler'], rubygemsInputSet, lockFile, platform, rubyPrefix, engine, version))
}
const bundlerVersion = await common.measure('Installing Bundler', async () => if (inputs['bundler-cache'] === 'true') {
bundler.installBundler(inputs['bundler'], lockFile, platform, rubyPrefix, engine, version)) await common.time('bundle install', async () =>
bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version']))
if (inputs['bundler-cache'] === 'true') {
await common.measure('bundle install', async () =>
bundler.bundleInstall(gemfile, lockFile, platform, engine, version, bundlerVersion, inputs['cache-version']))
}
} }
core.setOutput('ruby-prefix', rubyPrefix) core.setOutput('ruby-prefix', rubyPrefix)
@@ -119,7 +155,7 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
if (!engineVersions.includes(parsedVersion)) { if (!engineVersions.includes(parsedVersion)) {
const latestToFirstVersion = engineVersions.slice().reverse() const latestToFirstVersion = engineVersions.slice().reverse()
// Try to match stable versions first, so an empty version (engine-only) matches the latest stable 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(v) && v.startsWith(parsedVersion)) let found = latestToFirstVersion.find(v => common.isStableVersion(engine, v) && v.startsWith(parsedVersion))
if (!found) { if (!found) {
// Exclude head versions, they must be exact matches // Exclude head versions, they must be exact matches
found = latestToFirstVersion.find(v => !common.isHeadVersion(v) && v.startsWith(parsedVersion)) found = latestToFirstVersion.find(v => !common.isHeadVersion(v) && v.startsWith(parsedVersion))
@@ -129,12 +165,35 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
version = found version = found
} else { } else {
throw new Error(`Unknown version ${parsedVersion} for ${engine} on ${platform} throw new Error(`Unknown version ${parsedVersion} for ${engine} on ${platform}
available versions for ${engine} on ${platform}: ${engineVersions.join(', ')} Available versions for ${engine} on ${platform}: ${engineVersions.join(', ')}
Make sure you use the latest version of the action with - uses: ruby/setup-ruby@v1 Make sure you use the latest version of the action with - uses: ruby/setup-ruby@v1`)
File an issue at https://github.com/ruby/setup-ruby/issues if would like support for a new 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-13.
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-13, ruby: '2.4' }
- { os: macos-13, 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.')
}
return version return version
} }
+62
View File
@@ -0,0 +1,62 @@
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]
if engine == 'windows'
require_relative 'generate-windows-versions'
exit
end
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
+8 -6
View File
@@ -22,13 +22,15 @@
}, },
"homepage": "https://github.com/ruby/setup-ruby", "homepage": "https://github.com/ruby/setup-ruby",
"dependencies": { "dependencies": {
"@actions/cache": "^1.0.7", "@actions/cache": "^4.0.0",
"@actions/core": "^1.4.0", "@actions/core": "^1.11.1",
"@actions/exec": "^1.1.0", "@actions/exec": "^1.1.1",
"@actions/io": "^1.1.1", "@actions/io": "^1.1.2",
"@actions/tool-cache": "^1.7.1" "@actions/tool-cache": "^2",
"linux-os-info": "^2.0.0",
"semver": "^7.3.7"
}, },
"devDependencies": { "devDependencies": {
"@vercel/ncc": "^0.28.6" "@vercel/ncc": "^0.33.4"
} }
} }
+7 -4
View File
@@ -1,5 +1,8 @@
#!/usr/bin/sh #!/bin/sh
set -e set -e
yarn install
yarn run package if [ "$(dirname "$0")" != ".git/hooks" ] || git diff --cached --name-only | grep -E '.(js|json)$|yarn.lock'; then
exec git add dist/index.js 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}"
-35
View File
@@ -1,35 +0,0 @@
export function getVersions(platform) {
const versions = {
"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.7.0", "2.7.1", "2.7.2", "2.7.3", "2.7.4",
"3.0.0-preview1", "3.0.0-preview2", "3.0.0-rc1", "3.0.0", "3.0.1", "3.0.2",
"head", "debug"
],
"jruby": [
"9.1.17.0",
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0", "9.2.14.0", "9.2.15.0", "9.2.16.0", "9.2.17.0", "9.2.18.0", "9.2.19.0", "9.2.20.0",
"9.3.0.0", "9.3.1.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",
"head"
],
"truffleruby+graalvm": [
"21.2.0", "21.3.0",
"head"
]
}
return versions
}
+42
View File
@@ -0,0 +1,42 @@
{
"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.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.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1", "3.3.2", "3.3.3", "3.3.4", "3.3.5", "3.3.6", "3.3.7",
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1",
"head", "debug", "asan"
],
"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",
"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",
"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",
"head"
]
}
+43 -38
View File
@@ -1,6 +1,7 @@
const os = require('os') const os = require('os')
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const core = require('@actions/core')
const exec = require('@actions/exec') const exec = require('@actions/exec')
const io = require('@actions/io') const io = require('@actions/io')
const tc = require('@actions/tool-cache') const tc = require('@actions/tool-cache')
@@ -13,17 +14,31 @@ const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
const windows = common.windows const windows = common.windows
export function getAvailableVersions(platform, engine) { export function getAvailableVersions(platform, engine) {
return rubyBuilderVersions.getVersions(platform)[engine] return rubyBuilderVersions[engine]
} }
export async function install(platform, engine, version) { export async function install(platform, engine, version) {
let rubyPrefix, inToolCache let rubyPrefix, inToolCache
if (common.shouldUseToolCache(engine, version)) { if (common.shouldUseToolCache(engine, version)) {
inToolCache = tc.find('Ruby', version) inToolCache = common.toolCacheFind(engine, version)
if (inToolCache) { if (inToolCache) {
rubyPrefix = inToolCache rubyPrefix = inToolCache
} else { } else {
rubyPrefix = common.getToolCacheRubyPrefix(platform, version) 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) { } else if (windows) {
rubyPrefix = path.join(`${common.drive}:`, `${engine}-${version}`) rubyPrefix = path.join(`${common.drive}:`, `${engine}-${version}`)
@@ -35,51 +50,33 @@ export async function install(platform, engine, version) {
common.setupPath([path.join(rubyPrefix, 'bin')]) common.setupPath([path.join(rubyPrefix, 'bin')])
if (!inToolCache) { if (!inToolCache) {
await preparePrefix(rubyPrefix) await io.mkdirP(rubyPrefix)
if (engine === 'truffleruby+graalvm') { await downloadAndExtract(platform, engine, version, rubyPrefix)
await installWithRubyBuild(engine, version, rubyPrefix)
} else {
await downloadAndExtract(platform, engine, version, rubyPrefix)
}
} }
return rubyPrefix return rubyPrefix
} }
async function preparePrefix(rubyPrefix) {
const parentDir = path.dirname(rubyPrefix)
await io.rmRF(rubyPrefix)
if (!(fs.existsSync(parentDir) && fs.statSync(parentDir).isDirectory())) {
await io.mkdirP(parentDir)
}
}
async function installWithRubyBuild(engine, version, rubyPrefix) {
const tmp = process.env['RUNNER_TEMP'] || os.tmpdir()
const rubyBuildDir = path.join(tmp, 'ruby-build-for-setup-ruby')
await common.measure('Cloning ruby-build', async () => {
await exec.exec('git', ['clone', 'https://github.com/rbenv/ruby-build.git', rubyBuildDir])
})
const rubyName = `${engine}-${version === 'head' ? 'dev' : version}`
await common.measure(`Installing ${engine}-${version} with ruby-build`, async () => {
await exec.exec(`${rubyBuildDir}/bin/ruby-build`, [rubyName, rubyPrefix])
})
await io.rmRF(rubyBuildDir)
}
async function downloadAndExtract(platform, engine, version, rubyPrefix) { async function downloadAndExtract(platform, engine, version, rubyPrefix) {
const parentDir = path.dirname(rubyPrefix) const parentDir = path.dirname(rubyPrefix)
const downloadPath = await common.measure('Downloading Ruby', async () => { const downloadPath = await common.measure('Downloading Ruby', async () => {
const url = getDownloadURL(platform, engine, version) const url = getDownloadURL(platform, engine, version)
console.log(url) console.log(url)
return await tc.downloadTool(url) try {
return await tc.downloadTool(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 () => { await common.measure('Extracting Ruby', async () => {
if (windows) { if (windows) {
// Windows 2016 doesn't have system tar, use MSYS2's, it needs unix style paths // 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)]) await exec.exec('tar', ['-xz', '-C', common.win2nix(parentDir), '-f', common.win2nix(downloadPath)])
@@ -95,10 +92,14 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
function getDownloadURL(platform, engine, version) { function getDownloadURL(platform, engine, version) {
let builderPlatform = platform let builderPlatform = platform
if (platform.startsWith('windows-')) { if (platform.startsWith('windows-') && os.arch() === 'x64') {
builderPlatform = 'windows-latest' builderPlatform = 'windows-latest'
} else if (platform.startsWith('macos-')) { } else if (platform.startsWith('macos-')) {
builderPlatform = 'macos-latest' if (os.arch() === 'x64') {
builderPlatform = 'macos-latest'
} else if (os.arch() === 'arm64') {
builderPlatform = 'macos-13-arm64'
}
} }
if (common.isHeadVersion(version)) { if (common.isHeadVersion(version)) {
@@ -109,5 +110,9 @@ function getDownloadURL(platform, engine, version) {
} }
function getLatestHeadBuildURL(platform, engine, version) { function getLatestHeadBuildURL(platform, engine, version) {
return `https://github.com/ruby/${engine}-dev-builder/releases/latest/download/${engine}-${version}-${platform}.tar.gz` var repo = `${engine}-dev-builder`
if (engine === 'truffleruby+graalvm') {
repo = 'truffleruby-dev-builder'
}
return `https://github.com/ruby/${repo}/releases/latest/download/${engine}-${version}-${platform}.tar.gz`
} }
+60
View File
@@ -0,0 +1,60 @@
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.1) {
await exec.exec(gem, ['update', '--system'])
} 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'])
}
}
+10 -6
View File
@@ -1,17 +1,21 @@
hash = File.read('ruby-builder-versions.js')[/\bversions = {[^}]+}/] require 'json'
versions = eval hash hash = File.read('ruby-builder-versions.json')
versions = JSON.load(hash).transform_keys(&:to_sym)
by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] } by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] }
(1..7).each do |minor| by_minor.each_pair do |minor, versions|
p by_minor["2.#{minor}"].map { |v| "ruby-#{v}" } puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
end end
puts puts
p (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" } puts (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" }.join(', ')
puts puts
p (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" } puts (versions[:"truffleruby+graalvm"] - %w[head]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
puts
puts (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" }.join(', ')
(versions[:jruby] - %w[head]).each do |v| (versions[:jruby] - %w[head]).each do |v|
puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }" puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }"
+36 -2
View File
@@ -1,4 +1,4 @@
export const versions = { {
"2.0.0": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z", "2.0.0": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-x64-mingw32.7z",
"2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z", "2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z",
"2.2.6": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z", "2.2.6": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z",
@@ -31,15 +31,49 @@ export const versions = {
"2.6.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z", "2.6.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z",
"2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z", "2.6.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z",
"2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z", "2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z",
"2.6.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z",
"2.6.10": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z",
"2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z", "2.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z",
"2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z", "2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z",
"2.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z", "2.7.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z",
"2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z", "2.7.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z",
"2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z", "2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z",
"2.7.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z",
"2.7.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z",
"2.7.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z",
"2.7.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.8-1/rubyinstaller-2.7.8-1-x64.7z",
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z", "3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z",
"3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z", "3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z",
"3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z", "3.0.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z",
"3.0.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z",
"3.0.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z",
"3.0.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z",
"3.0.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z",
"3.0.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z",
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
"3.1.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z",
"3.1.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z",
"3.1.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z",
"3.1.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z",
"3.1.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z",
"3.1.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.6-1/rubyinstaller-3.1.6-1-x64.7z",
"3.2.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z",
"3.2.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z",
"3.2.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z",
"3.2.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z",
"3.2.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z",
"3.2.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.5-1/rubyinstaller-3.2.5-1-x64.7z",
"3.2.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.6-1/rubyinstaller-3.2.6-1-x64.7z",
"3.3.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z",
"3.3.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-x64.7z",
"3.3.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.2-1/rubyinstaller-3.3.2-1-x64.7z",
"3.3.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.3-1/rubyinstaller-3.3.3-1-x64.7z",
"3.3.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z",
"3.3.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z",
"3.3.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z",
"3.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-1/rubyinstaller-3.4.1-1-x64.7z",
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z", "head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z", "mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z" "mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",
"ucrt": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z"
} }
+172 -37
View File
@@ -1,5 +1,7 @@
// Most of this logic is from // 7z arguments
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js // -aoa overwrite existing, -bd disable progress indicator
// OpenSSL version detection is needed in installGCCTools and installJRubyTools
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
@@ -9,16 +11,27 @@ const exec = require('@actions/exec')
const io = require('@actions/io') const io = require('@actions/io')
const tc = require('@actions/tool-cache') const tc = require('@actions/tool-cache')
const common = require('./common') const common = require('./common')
const rubyInstallerVersions = require('./windows-versions').versions const rubyInstallerVersions = require('./windows-versions.json')
const drive = common.drive const drive = common.drive
// needed for 2.0-2.3, and mswin, cert file used by Git for Windows const msys2GCCReleaseURI = 'https://github.com/ruby/setup-msys2-gcc/releases/download'
const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
// location & path for old RubyInstaller DevKit (MSYS), Ruby 2.0-2.3 const msys2BasePath = process.env['GHCUP_MSYS2']
const msys = `${drive}:\\DevKit64` const vcPkgBasePath = process.env['VCPKG_INSTALLATION_ROOT']
const msysPathEntries = [`${msys}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys}\\mingw\\bin`, `${msys}\\bin`]
// needed for Ruby 2.0-2.3, cert file used by Git for Windows
let certFile = 'C:\\Program Files\\Git\\mingw64\\etc\\ssl\\cert.pem'
if (!fs.existsSync(certFile)) {
certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
if (!fs.existsSync(certFile)) {
throw new Error("Cannot find Git's cert file")
}
}
// location & path for old RubyInstaller DevKit (MSYS1), used with Ruby 2.0-2.3
const msys1 = `${drive}:\\DevKit64`
const msysPathEntries = [`${msys1}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1}\\mingw\\bin`, `${msys1}\\bin`]
export function getAvailableVersions(platform, engine) { export function getAvailableVersions(platform, engine) {
if (engine === 'ruby') { if (engine === 'ruby') {
@@ -31,6 +44,10 @@ export function getAvailableVersions(platform, engine) {
export async function install(platform, engine, version) { export async function install(platform, engine, version) {
const url = rubyInstallerVersions[version] const url = rubyInstallerVersions[version]
// The windows-2016 and windows-2019 images have MSYS2 build tools (C:/msys64/usr)
// and MinGW build tools installed. The windows-2022 image has neither.
const hasMSYS2PreInstalled = ['windows-2019', 'windows-2016'].includes(platform)
if (!url.endsWith('.7z')) { if (!url.endsWith('.7z')) {
throw new Error(`URL should end in .7z: ${url}`) throw new Error(`URL should end in .7z: ${url}`)
} }
@@ -38,27 +55,113 @@ export async function install(platform, engine, version) {
let rubyPrefix, inToolCache let rubyPrefix, inToolCache
if (common.shouldUseToolCache(engine, version)) { if (common.shouldUseToolCache(engine, version)) {
inToolCache = tc.find('Ruby', version) inToolCache = common.toolCacheFind(engine, version)
if (inToolCache) { if (inToolCache) {
rubyPrefix = inToolCache rubyPrefix = inToolCache
} else { } else {
rubyPrefix = common.getToolCacheRubyPrefix(platform, version) rubyPrefix = common.getToolCacheRubyPrefix(platform, engine, version)
} }
} else { } else {
rubyPrefix = `${drive}:\\${base}` rubyPrefix = `${drive}:\\${base}`
} }
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
if (!inToolCache) { if (!inToolCache) {
await downloadAndExtract(engine, version, url, base, rubyPrefix); await downloadAndExtract(engine, version, url, base, rubyPrefix);
} }
const windowsToolchain = core.getInput('windows-toolchain')
if (windowsToolchain === 'none') {
common.setupPath([`${rubyPrefix}\\bin`])
return rubyPrefix
}
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
const msys2Type = common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4
if (!hasMSYS2PreInstalled) {
await installMSYS2Tools()
}
// windows 2016 and 2019 need ucrt64 installed, 2022 and future images need
// ucrt64 or mingw64 installed, depending on Ruby version
if (((msys2Type === 'ucrt64') || !hasMSYS2PreInstalled) && common.floatVersion(version) >= 2.4) {
await installGCCTools(msys2Type, version)
}
if (version === 'mswin') {
await installVCPkg()
}
const ridk = `${rubyPrefix}\\bin\\ridk.cmd`
if (fs.existsSync(ridk)) {
await common.measure('Adding ridk env variables', async () => addRidkEnv(ridk))
}
return rubyPrefix return rubyPrefix
} }
// Actions windows-2022 image does not contain any mingw or ucrt build tools. Install tools for it,
// and also install ucrt tools on earlier versions, which have msys2 and mingw tools preinstalled.
async function installGCCTools(type, version) {
// 2022-Dec ruby/msys2-gcc-pkgs now uses a suffix to delineate different archive versions.
// At present, the only use is to indicate the included OpenSSL version.
// With no suffix, archives include OpenSSL 1.1.1, with a '-3.0' suffix, they include
// OpenSSL 3.0.x. Note that the mswin archive uses OpenSSL 3.
// As of Jan-2023, OpenSSL 3 is used in Ruby 3.2 & all head versions. MSYS2 updated
// to OpenSSL 3 on 14-Jan-2023.
let suffix = ''
if (common.isHeadVersion(version) || common.floatVersion(version) >= 3.2) {
suffix = '-3.0'
}
const downloadPath = await common.measure(`Downloading ${type}${suffix} build tools`, async () => {
let url = `${msys2GCCReleaseURI}/msys2-gcc-pkgs/${type}${suffix}.7z`
console.log(url)
return await tc.downloadTool(url)
})
await common.measure(`Extracting ${type}${suffix} build tools`, async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys2BasePath}`], { silent: true }))
}
// Actions windows-2022 image does not contain any MSYS2 build tools. Install tools for it.
// A subset of the MSYS2 base-devel group
async function installMSYS2Tools() {
const downloadPath = await common.measure(`Downloading msys2 build tools`, async () => {
let url = `${msys2GCCReleaseURI}/msys2-gcc-pkgs/msys2.7z`
console.log(url)
return await tc.downloadTool(url)
})
// need to remove all directories, since they may indicate old packages are installed,
// otherwise, error of "error: duplicated database entry"
fs.rmSync(`${msys2BasePath}\\var\\lib\\pacman\\local`, { recursive: true, force: true })
await common.measure(`Extracting msys2 build tools`, async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys2BasePath}`], { silent: true }))
}
// Windows JRuby can install gems that require compile tools, only needed for
// windows-2022 and later images
export async function installJRubyTools() {
await installMSYS2Tools()
// Will need to add OpenSSL version detection when JRuby uses OpenSSL 3.0 ?
await installGCCTools('mingw64', '2.7')
}
// Install vcpkg files needed to build mswin Ruby
async function installVCPkg() {
const downloadPath = await common.measure(`Downloading mswin vcpkg packages`, async () => {
let url = `${msys2GCCReleaseURI}/msys2-gcc-pkgs/mswin.7z`
console.log(url)
return await tc.downloadTool(url)
})
await common.measure(`Extracting mswin vcpkg packages`, async () =>
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${vcPkgBasePath}`], { silent: true }))
}
async function downloadAndExtract(engine, version, url, base, rubyPrefix) { async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
const parentDir = path.dirname(rubyPrefix) const parentDir = path.dirname(rubyPrefix)
@@ -67,8 +170,9 @@ async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
return await tc.downloadTool(url) return await tc.downloadTool(url)
}) })
await common.measure('Extracting Ruby', async () => await common.measure('Extracting Ruby', async () =>
exec.exec('7z', ['x', downloadPath, `-xr!${base}\\share\\doc`, `-o${parentDir}`], { silent: true })) // -xr extract but exclude share\doc files
exec.exec('7z', ['x', downloadPath, '-bd', `-xr!${base}\\share\\doc`, `-o${parentDir}`], { silent: true }))
if (base !== path.basename(rubyPrefix)) { if (base !== path.basename(rubyPrefix)) {
await io.mv(path.join(parentDir, base), rubyPrefix) await io.mv(path.join(parentDir, base), rubyPrefix)
@@ -82,23 +186,29 @@ async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
async function setupMingw(version) { async function setupMingw(version) {
core.exportVariable('MAKE', 'make.exe') core.exportVariable('MAKE', 'make.exe')
// rename these to avoid confusion when Ruby is using OpenSSL 1.0.2.
// most current extconf files look for 1.1.x dll files first, which is the version of the renamed files
if (common.floatVersion(version) <= 2.4) {
renameSystem32Dlls()
}
if (common.floatVersion(version) <= 2.3) { if (common.floatVersion(version) <= 2.3) {
core.exportVariable('SSL_CERT_FILE', certFile) core.exportVariable('SSL_CERT_FILE', certFile)
await common.measure('Installing MSYS', async () => installMSYS(version)) await common.measure('Installing MSYS1', async () => installMSYS1(version))
return msysPathEntries return msysPathEntries
} else { } else {
return [] return []
} }
} }
// Ruby 2.0, 2.1, 2.2 and 2.3 // Ruby 2.0-2.3
async function installMSYS(version) { async function installMSYS1(version) {
const url = 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe' const url = 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe'
const downloadPath = await tc.downloadTool(url) const downloadPath = await tc.downloadTool(url)
await exec.exec('7z', ['x', downloadPath, `-o${msys}`], { silent: true }) await exec.exec('7z', ['x', downloadPath, `-o${msys1}`], { silent: true })
// below are set in the old devkit.rb file ? // below are set in the old devkit.rb file ?
core.exportVariable('RI_DEVKIT', msys) core.exportVariable('RI_DEVKIT', msys1)
core.exportVariable('CC' , 'gcc') core.exportVariable('CC' , 'gcc')
core.exportVariable('CXX', 'g++') core.exportVariable('CXX', 'g++')
core.exportVariable('CPP', 'cpp') core.exportVariable('CPP', 'cpp')
@@ -107,32 +217,25 @@ async function installMSYS(version) {
async function setupMSWin() { async function setupMSWin() {
core.exportVariable('MAKE', 'nmake.exe') core.exportVariable('MAKE', 'nmake.exe')
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
if (!fs.existsSync(certsDir)) {
fs.mkdirSync(certsDir)
}
// cert.pem location is hard-coded by OpenSSL msvc builds
const cert = 'C:\\Program Files\\Common Files\\SSL\\cert.pem'
if (!fs.existsSync(cert)) {
fs.copyFileSync(certFile, cert)
}
return await common.measure('Setting up MSVC environment', async () => addVCVARSEnv()) return await common.measure('Setting up MSVC environment', async () => addVCVARSEnv())
} }
/* Sets MSVC environment for use in Actions /* Sets MSVC environment for use in Actions
* allows steps to run without running vcvars*.bat, also for PowerShell * allows steps to run without running vcvars*.bat, also for PowerShell
* adds a convenience VCVARS environment variable * adds a convenience VCVARS environment variable
* this assumes a single Visual Studio version being available in the windows-latest image */ * this assumes a single Visual Studio version being available in the Windows images */
export function addVCVARSEnv() { export function addVCVARSEnv() {
const vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"' let cmd = 'vswhere -latest -property installationPath'
let vcVars = `${cp.execSync(cmd).toString().trim()}\\VC\\Auxiliary\\Build\\vcvars64.bat`
if (!fs.existsSync(vcVars)) {
throw new Error(`Missing vcVars file: ${vcVars}`)
}
core.exportVariable('VCVARS', vcVars) core.exportVariable('VCVARS', vcVars)
cmd = `cmd.exe /c ""${vcVars}" && set"`
let newEnv = new Map() let newEnv = new Map()
let cmd = `cmd.exe /c "${vcVars} && set"`
let newSet = cp.execSync(cmd).toString().trim().split(/\r?\n/) let newSet = cp.execSync(cmd).toString().trim().split(/\r?\n/)
newSet = newSet.filter(line => /\S=\S/.test(line)) newSet = newSet.filter(line => /\S=\S/.test(line))
newSet.forEach(s => { newSet.forEach(s => {
@@ -153,3 +256,35 @@ export function addVCVARSEnv() {
} }
return newPathEntries return newPathEntries
} }
// ssl files cause issues with non RI2 Rubies (<2.4) and ruby/ruby's CI from build folder due to dll resolution
function renameSystem32Dlls() {
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) {
console.log(`Renaming ${existing.join(' and ')} to avoid dll resolution conflicts on Ruby <= 2.4`)
existing.forEach(dll => fs.renameSync(dll, `${dll}_`))
}
}
// Sets MSYS2 ENV variables set from running `ridk enable`
function addRidkEnv(ridk) {
let newEnv = new Map()
let cmd = `cmd.exe /c "${ridk} enable && set"`
let newSet = cp.execSync(cmd).toString().trim().split(/\r?\n/)
newSet = newSet.filter(line => /^\S+=\S+/.test(line))
newSet.forEach(s => {
let [k, v] = common.partition(s, '=')
newEnv.set(k, v)
})
for (let [k, v] of newEnv) {
if (process.env[k] !== v) {
if (!/^Path$/i.test(k)) {
console.log(`${k}=${v}`)
core.exportVariable(k, v)
}
}
}
}
Generated
+569 -386
View File
@@ -1,386 +1,569 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1 # yarn lockfile v1
"@actions/cache@^1.0.7": "@actions/cache@^4.0.0":
version "1.0.7" version "4.0.0"
resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.7.tgz#d80b0f5ac1e1ad48a5e77c39685100bd49b56b1c" resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-4.0.0.tgz#24845cced4326b11b6115fd3e2cff8e7ea3afed2"
integrity sha512-MY69kxuubqUFq84pFlu8m6Poxl5sR/xyhpC4JEvno7Yg9ASYdGizEmKgt0m8ovewpYKf15UAOcSC0hzS+DuosA== integrity sha512-WIuxjnZ44lNYtIS4fqSaYvF00hORdy3cSin+jx8xNgBVGWnNIAiCBHjlwusVQlcgExoQC9pHXGrDsZyZr7rCDQ==
dependencies: dependencies:
"@actions/core" "^1.2.6" "@actions/core" "^1.11.1"
"@actions/exec" "^1.0.1" "@actions/exec" "^1.0.1"
"@actions/glob" "^0.1.0" "@actions/glob" "^0.1.0"
"@actions/http-client" "^1.0.9" "@actions/http-client" "^2.1.1"
"@actions/io" "^1.0.1" "@actions/io" "^1.0.1"
"@azure/ms-rest-js" "^2.0.7" "@azure/abort-controller" "^1.1.0"
"@azure/storage-blob" "^12.1.2" "@azure/ms-rest-js" "^2.6.0"
semver "^6.1.0" "@azure/storage-blob" "^12.13.0"
uuid "^3.3.3" "@protobuf-ts/plugin" "^2.9.4"
semver "^6.3.1"
"@actions/core@^1.2.6", "@actions/core@^1.4.0": twirp-ts "^2.5.0"
version "1.4.0"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.4.0.tgz#cf2e6ee317e314b03886adfeb20e448d50d6e524" "@actions/core@^1.11.1", "@actions/core@^1.2.6":
integrity sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg== version "1.11.1"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172"
"@actions/exec@^1.0.0", "@actions/exec@^1.0.1", "@actions/exec@^1.1.0": integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==
version "1.1.0" dependencies:
resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.0.tgz#53441d968e56d2fec69ad3f15773d4d94e01162c" "@actions/exec" "^1.1.1"
integrity sha512-LImpN9AY0J1R1mEYJjVJfSZWU4zYOlEcwSTgPve1rFQqK5AwrEs6uWW5Rv70gbDIQIAUwI86z6B+9mPK4w9Sbg== "@actions/http-client" "^2.0.1"
dependencies:
"@actions/io" "^1.0.1" "@actions/exec@^1.0.0", "@actions/exec@^1.0.1", "@actions/exec@^1.1.1":
version "1.1.1"
"@actions/glob@^0.1.0": resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611"
version "0.1.2" integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==
resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974" dependencies:
integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A== "@actions/io" "^1.0.1"
dependencies:
"@actions/core" "^1.2.6" "@actions/glob@^0.1.0":
minimatch "^3.0.4" version "0.1.2"
resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974"
"@actions/http-client@^1.0.8", "@actions/http-client@^1.0.9": integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==
version "1.0.11" dependencies:
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0" "@actions/core" "^1.2.6"
integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg== minimatch "^3.0.4"
dependencies:
tunnel "0.0.6" "@actions/http-client@^2.0.1", "@actions/http-client@^2.1.1":
version "2.1.1"
"@actions/io@^1.0.1", "@actions/io@^1.1.1": resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.1.1.tgz#a8e97699c315bed0ecaeaaeb640948470d4586a0"
version "1.1.1" integrity sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.1.tgz#4a157406309e212ab27ed3ae30e8c1d641686a66" dependencies:
integrity sha512-Qi4JoKXjmE0O67wAOH6y0n26QXhMKMFo7GD/4IXNVcrtLjUlGjGuVys6pQgwF3ArfGTQu0XpqaNr0YhED2RaRA== tunnel "^0.0.6"
"@actions/tool-cache@^1.7.1": "@actions/io@^1.0.1", "@actions/io@^1.1.1", "@actions/io@^1.1.2":
version "1.7.1" version "1.1.3"
resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-1.7.1.tgz#f9f4f822cb639da6facdf3e22ea571361ab26f92" resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71"
integrity sha512-y1xxxOhXaBUIUit3lhepmu/0xdgiTMpnZRLmVdtF0hTm521doi+MdRRRP62czHvM7wxH6epj4JPNJQ3iJpOrkQ== integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==
dependencies:
"@actions/core" "^1.2.6" "@actions/tool-cache@^2":
"@actions/exec" "^1.0.0" version "2.0.1"
"@actions/http-client" "^1.0.8" resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720"
"@actions/io" "^1.1.1" integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==
semver "^6.1.0" dependencies:
uuid "^3.3.2" "@actions/core" "^1.2.6"
"@actions/exec" "^1.0.0"
"@azure/abort-controller@^1.0.0": "@actions/http-client" "^2.0.1"
version "1.0.4" "@actions/io" "^1.1.1"
resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" semver "^6.1.0"
integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== uuid "^3.3.2"
dependencies:
tslib "^2.0.0" "@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0":
version "1.1.0"
"@azure/core-asynciterator-polyfill@^1.0.0": resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249"
version "1.0.0" integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==
resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" dependencies:
integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== tslib "^2.2.0"
"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0": "@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0":
version "1.3.0" version "1.5.0"
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.0.tgz#0d55517cf0650aefe755669aca8a2f3724fcf536" resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.5.0.tgz#a41848c5c31cb3b7c84c409885267d55a2c92e44"
integrity sha512-kSDSZBL6c0CYdhb+7KuutnKGf2geeT+bCJAgccB0DD7wmNJSsQPcF7TcuoZX83B7VK4tLz/u+8sOO/CnCsYp8A== integrity sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
tslib "^2.0.0" "@azure/core-util" "^1.1.0"
tslib "^2.2.0"
"@azure/core-http@^1.2.0":
version "1.2.6" "@azure/core-http@^3.0.0":
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-1.2.6.tgz#9cd508418572d2062fd3175274219438772bdb65" version "3.0.3"
integrity sha512-odtH7UMKtekc5YQ86xg9GlVHNXR6pq2JgJ5FBo7/jbOjNGdBqcrIVrZx2bevXVJz/uUTSx6vUf62gzTXTfqYSQ== resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-3.0.3.tgz#792c0af7d8ebec7d34a99bbd7108aa370cd49948"
dependencies: integrity sha512-QMib3wXotJMFhHgmJBPUF9YsyErw34H0XDFQd9CauH7TPB+RGcyl9Ayy7iURtJB04ngXhE6YwrQsWDXlSLrilg==
"@azure/abort-controller" "^1.0.0" dependencies:
"@azure/core-asynciterator-polyfill" "^1.0.0" "@azure/abort-controller" "^1.0.0"
"@azure/core-auth" "^1.3.0" "@azure/core-auth" "^1.3.0"
"@azure/core-tracing" "1.0.0-preview.11" "@azure/core-tracing" "1.0.0-preview.13"
"@azure/logger" "^1.0.0" "@azure/core-util" "^1.1.1"
"@types/node-fetch" "^2.5.0" "@azure/logger" "^1.0.0"
"@types/tunnel" "^0.0.1" "@types/node-fetch" "^2.5.0"
form-data "^3.0.0" "@types/tunnel" "^0.0.3"
node-fetch "^2.6.0" form-data "^4.0.0"
process "^0.11.10" node-fetch "^2.6.7"
tough-cookie "^4.0.0" process "^0.11.10"
tslib "^2.2.0" tslib "^2.2.0"
tunnel "^0.0.6" tunnel "^0.0.6"
uuid "^8.3.0" uuid "^8.3.0"
xml2js "^0.4.19" xml2js "^0.5.0"
"@azure/core-lro@^1.0.2": "@azure/core-lro@^2.2.0":
version "1.0.5" version "2.5.4"
resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-1.0.5.tgz#856a2cb6a9bec739ee9cde33a27cc28f81ac0522" resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.5.4.tgz#b21e2bcb8bd9a8a652ff85b61adeea51a8055f90"
integrity sha512-0EFCFZxARrIoLWMIRt4vuqconRVIO2Iin7nFBfJiYCCbKp5eEmxutNk8uqudPmG0XFl5YqlVh68/al/vbE5OOg== integrity sha512-3GJiMVH7/10bulzOKGrrLeG/uCBH/9VtxqaMcB9lIqAeamI/xYQSHJL/KcsLDuH+yTjYpro/u6D/MuRe4dN70Q==
dependencies: dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/abort-controller" "^1.0.0"
"@azure/core-http" "^1.2.0" "@azure/core-util" "^1.2.0"
"@azure/core-tracing" "1.0.0-preview.11" "@azure/logger" "^1.0.0"
events "^3.0.0" tslib "^2.2.0"
tslib "^2.0.0"
"@azure/core-paging@^1.1.1":
"@azure/core-paging@^1.1.1": version "1.5.0"
version "1.1.3" resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.5.0.tgz#5a5b09353e636072e6a7fc38f7879e11d0afb15f"
resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" integrity sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==
integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== dependencies:
dependencies: tslib "^2.2.0"
"@azure/core-asynciterator-polyfill" "^1.0.0"
"@azure/core-tracing@1.0.0-preview.13":
"@azure/core-tracing@1.0.0-preview.11": version "1.0.0-preview.13"
version "1.0.0-preview.11" resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.11.tgz#bdfb2ba73cd6c39b7d6c207b9522eb98e08b4ddd" integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
integrity sha512-frF0pJc9HTmKncVokhBxCqipjbql02DThQ1ZJ9wLi7SDMLdPAFyDI5xZNzX5guLz+/DtPkY+SGK2li9FIXqshQ== dependencies:
dependencies: "@opentelemetry/api" "^1.0.1"
"@opencensus/web-types" "0.0.7" tslib "^2.2.0"
"@opentelemetry/api" "1.0.0-rc.0"
tslib "^2.0.0" "@azure/core-util@^1.1.0", "@azure/core-util@^1.1.1", "@azure/core-util@^1.2.0":
version "1.4.0"
"@azure/logger@^1.0.0": resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.4.0.tgz#c120a56b3e48a9e4d20619a0b00268ae9de891c7"
version "1.0.2" integrity sha512-eGAyJpm3skVQoLiRqm/xPa+SXi/NPDdSHMxbRAz2lSprd+Zs+qrpQGQQ2VQ3Nttu+nSZR4XoYQC71LbEI7jsig==
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" dependencies:
integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== "@azure/abort-controller" "^1.0.0"
dependencies: tslib "^2.2.0"
tslib "^2.0.0"
"@azure/logger@^1.0.0":
"@azure/ms-rest-js@^2.0.7": version "1.0.4"
version "2.5.2" resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.4.tgz#28bc6d0e5b3c38ef29296b32d35da4e483593fa1"
resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.5.2.tgz#41d2e12456447dc21b4aaa09e74d1550eaf38f14" integrity sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==
integrity sha512-9nCuuoYwHZEZw1t0MVtENH+c1k2R4maYAlBBDSZhZu6bEucyfYUUigNXXKjt2cFBt4sO+sTzi0uI0f/fiPFr+Q== dependencies:
dependencies: tslib "^2.2.0"
"@azure/core-auth" "^1.1.4"
abort-controller "^3.0.0" "@azure/ms-rest-js@^2.6.0":
form-data "^2.5.0" version "2.7.0"
node-fetch "^2.6.0" resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz#8639065577ffdf4946951e1d246334ebfd72d537"
tough-cookie "^3.0.1" integrity sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==
tslib "^1.10.0" dependencies:
tunnel "0.0.6" "@azure/core-auth" "^1.1.4"
uuid "^3.3.2" abort-controller "^3.0.0"
xml2js "^0.4.19" form-data "^2.5.0"
node-fetch "^2.6.7"
"@azure/storage-blob@^12.1.2": tslib "^1.10.0"
version "12.6.0" tunnel "0.0.6"
resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.6.0.tgz#9905d80e5f908a573cc65e1cb8302abc32818844" uuid "^8.3.2"
integrity sha512-cAzsae+5ZdhugQfIT7o5SlVyF2Sc+HygZdPO41ZYdXklfGUyEt+5K4PyM5HQDc0MTVt6x7+waXcaAXT2eF9E6A== xml2js "^0.5.0"
dependencies:
"@azure/abort-controller" "^1.0.0" "@azure/storage-blob@^12.13.0":
"@azure/core-http" "^1.2.0" version "12.16.0"
"@azure/core-lro" "^1.0.2" resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.16.0.tgz#c41fb1e538d6f6e2a6756bfcc69382eededf4fa1"
"@azure/core-paging" "^1.1.1" integrity sha512-jz33rUSUGUB65FgYrTRgRDjG6hdPHwfvHe+g/UrwVG8MsyLqSxg9TaW7Yuhjxu1v1OZ5xam2NU6+IpCN0xJO8Q==
"@azure/core-tracing" "1.0.0-preview.11" dependencies:
"@azure/logger" "^1.0.0" "@azure/abort-controller" "^1.0.0"
events "^3.0.0" "@azure/core-http" "^3.0.0"
tslib "^2.0.0" "@azure/core-lro" "^2.2.0"
"@azure/core-paging" "^1.1.1"
"@opencensus/web-types@0.0.7": "@azure/core-tracing" "1.0.0-preview.13"
version "0.0.7" "@azure/logger" "^1.0.0"
resolved "https://registry.yarnpkg.com/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" events "^3.0.0"
integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== tslib "^2.2.0"
"@opentelemetry/api@1.0.0-rc.0": "@opentelemetry/api@^1.0.1":
version "1.0.0-rc.0" version "1.6.0"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.0-rc.0.tgz#0c7c3f5e1285f99cedb563d74ad1adb9822b5144" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.6.0.tgz#de2c6823203d6f319511898bb5de7e70f5267e19"
integrity sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ== integrity sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==
"@types/node-fetch@^2.5.0": "@protobuf-ts/plugin-framework@^2.0.7", "@protobuf-ts/plugin-framework@^2.9.4":
version "2.5.10" version "2.9.4"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132" resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz#d7a617dedda4a12c568fdc1db5aa67d5e4da2406"
integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ== integrity sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==
dependencies: dependencies:
"@types/node" "*" "@protobuf-ts/runtime" "^2.9.4"
form-data "^3.0.0" typescript "^3.9"
"@types/node@*": "@protobuf-ts/plugin@^2.9.4":
version "15.12.3" version "2.9.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.3.tgz#2817bf5f25bc82f56579018c53f7d41b1830b1af" resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin/-/plugin-2.9.4.tgz#4e593e59013aaad313e7abbabe6e61964ef0ca28"
integrity sha512-SNt65CPCXvGNDZ3bvk1TQ0Qxoe3y1RKH88+wZ2Uf05dduBCqqFQ76ADP9pbT+Cpvj60SkRppMCh2Zo8tDixqjQ== integrity sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==
dependencies:
"@types/tunnel@^0.0.1": "@protobuf-ts/plugin-framework" "^2.9.4"
version "0.0.1" "@protobuf-ts/protoc" "^2.9.4"
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" "@protobuf-ts/runtime" "^2.9.4"
integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== "@protobuf-ts/runtime-rpc" "^2.9.4"
dependencies: typescript "^3.9"
"@types/node" "*"
"@protobuf-ts/protoc@^2.9.4":
"@vercel/ncc@^0.28.6": version "2.9.4"
version "0.28.6" resolved "https://registry.yarnpkg.com/@protobuf-ts/protoc/-/protoc-2.9.4.tgz#a92262ee64d252998540238701d2140f4ffec081"
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.28.6.tgz#073c0ce8e0269210c0a9f180fb0bf949eecc20e0" integrity sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==
integrity sha512-t4BoSSuyK8BZaUE0gV18V6bkFs4st7baumtFGa50dv1tMu2GDBEBF8sUZaKBdKiL6DzJ2D2+XVCwYWWDcQOYdQ==
"@protobuf-ts/runtime-rpc@^2.9.4":
abort-controller@^3.0.0: version "2.9.4"
version "3.0.0" resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b"
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==
integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies:
dependencies: "@protobuf-ts/runtime" "^2.9.4"
event-target-shim "^5.0.0"
"@protobuf-ts/runtime@^2.9.4":
asynckit@^0.4.0: version "2.9.4"
version "0.4.0" resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
"@types/node-fetch@^2.5.0":
balanced-match@^1.0.0: version "2.6.5"
version "1.0.2" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.5.tgz#972756a9a0fe354b2886bf3defe667ddb4f0d30a"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== dependencies:
"@types/node" "*"
brace-expansion@^1.1.7: form-data "^4.0.0"
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" "@types/node@*":
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== version "20.6.2"
dependencies: resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12"
balanced-match "^1.0.0" integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==
concat-map "0.0.1"
"@types/tunnel@^0.0.3":
combined-stream@^1.0.6, combined-stream@^1.0.8: version "0.0.3"
version "1.0.8" resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies:
dependencies: "@types/node" "*"
delayed-stream "~1.0.0"
"@vercel/ncc@^0.33.4":
concat-map@0.0.1: version "0.33.4"
version "0.0.1" resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.33.4.tgz#e44a87511f583b7ba88e4b9ae90eeb7ba252b872"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-ln18hs7dMffelP47tpkaR+V5Tj6coykNyxJrlcmCormPqRQjB/Gv4cu2FfBG+PMzIfdZp2CLDsrrB1NPU22Qhg==
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
abort-controller@^3.0.0:
delayed-stream@~1.0.0: version "3.0.0"
version "1.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= dependencies:
event-target-shim "^5.0.0"
event-target-shim@^5.0.0:
version "5.0.1" asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" version "0.4.0"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
events@^3.0.0:
version "3.3.0" balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" version "1.0.2"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
form-data@^2.5.0:
version "2.5.1" brace-expansion@^1.1.7:
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" version "1.1.11"
integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
dependencies: integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
asynckit "^0.4.0" dependencies:
combined-stream "^1.0.6" balanced-match "^1.0.0"
mime-types "^2.1.12" concat-map "0.0.1"
form-data@^3.0.0: camel-case@^4.1.2:
version "3.0.1" version "4.1.2"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
dependencies: dependencies:
asynckit "^0.4.0" pascal-case "^3.1.2"
combined-stream "^1.0.8" tslib "^2.0.3"
mime-types "^2.1.12"
combined-stream@^1.0.6, combined-stream@^1.0.8:
ip-regex@^2.1.0: version "1.0.8"
version "2.1.0" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= dependencies:
delayed-stream "~1.0.0"
mime-db@1.48.0:
version "1.48.0" commander@^6.1.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" version "6.2.1"
integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
mime-types@^2.1.12:
version "2.1.31" concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" version "0.0.1"
integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
dependencies: integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
mime-db "1.48.0"
delayed-stream@~1.0.0:
minimatch@^3.0.4: version "1.0.0"
version "3.0.4" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies: dot-object@^2.1.4:
brace-expansion "^1.1.7" version "2.1.5"
resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.5.tgz#0ff0f1bff42c47ff06272081b208658c0a0231c2"
node-fetch@^2.6.0: integrity sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==
version "2.6.1" dependencies:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" commander "^6.1.0"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== glob "^7.1.6"
process@^0.11.10: event-target-shim@^5.0.0:
version "0.11.10" version "5.0.1"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
psl@^1.1.28, psl@^1.1.33: events@^3.0.0:
version "1.8.0" version "3.3.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
punycode@^2.1.1: form-data@^2.5.0:
version "2.1.1" version "2.5.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==
dependencies:
sax@>=0.6.0: asynckit "^0.4.0"
version "1.2.4" combined-stream "^1.0.6"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" mime-types "^2.1.12"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
form-data@^4.0.0:
semver@^6.1.0: version "4.0.0"
version "6.3.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== dependencies:
asynckit "^0.4.0"
tough-cookie@^3.0.1: combined-stream "^1.0.8"
version "3.0.1" mime-types "^2.1.12"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== fs.realpath@^1.0.0:
dependencies: version "1.0.0"
ip-regex "^2.1.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
psl "^1.1.28" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
punycode "^2.1.1"
glob@^7.1.6:
tough-cookie@^4.0.0: version "7.2.3"
version "4.0.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== dependencies:
dependencies: fs.realpath "^1.0.0"
psl "^1.1.33" inflight "^1.0.4"
punycode "^2.1.1" inherits "2"
universalify "^0.1.2" minimatch "^3.1.1"
once "^1.3.0"
tslib@^1.10.0: path-is-absolute "^1.0.0"
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" inflight@^1.0.4:
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
tslib@^2.0.0, tslib@^2.2.0: integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
version "2.3.0" dependencies:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" once "^1.3.0"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== wrappy "1"
tunnel@0.0.6, tunnel@^0.0.6: inherits@2:
version "0.0.6" version "2.0.4"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
universalify@^0.1.2: linux-os-info@^2.0.0:
version "0.1.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" resolved "https://registry.yarnpkg.com/linux-os-info/-/linux-os-info-2.0.0.tgz#32a251077c13af1a69dbcb36a168901208e32776"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== integrity sha512-ZopyH4kT2Ehnmix8iUgS/41pfv7fSlUV1JukIn3DB3qD3byvhBNtgCbUApoAtiqcHRLKXCY3zakXlJgiExm2Qg==
uuid@^3.3.2, uuid@^3.3.3: lodash@^4.17.15:
version "3.4.0" version "4.17.21"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
uuid@^8.3.0: lower-case@^2.0.2:
version "8.3.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
xml2js@^0.4.19: tslib "^2.0.3"
version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" lru-cache@^6.0.0:
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== version "6.0.0"
dependencies: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
sax ">=0.6.0" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
xmlbuilder "~11.0.0" dependencies:
yallist "^4.0.0"
xmlbuilder@~11.0.0:
version "11.0.1" mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" version "1.52.0"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
minimatch@^3.0.4, minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
no-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
dependencies:
lower-case "^2.0.2"
tslib "^2.0.3"
node-fetch@^2.6.7:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
dependencies:
whatwg-url "^5.0.0"
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
pascal-case@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
dependencies:
no-case "^3.0.4"
tslib "^2.0.3"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-to-regexp@^6.2.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4"
integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==
prettier@^2.5.1:
version "2.8.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver@^6.1.0, semver@^6.3.1:
version "6.3.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.7:
version "7.5.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
ts-poet@^4.5.0:
version "4.15.0"
resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-4.15.0.tgz#637145fa554d3b27c56541578df0ce08cd9eb328"
integrity sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==
dependencies:
lodash "^4.17.15"
prettier "^2.5.1"
tslib@^1.10.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.3:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
tslib@^2.2.0:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
tunnel@0.0.6, tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
twirp-ts@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/twirp-ts/-/twirp-ts-2.5.0.tgz#b43f09e95868d68ecd5c755ecbb08a7e51388504"
integrity sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==
dependencies:
"@protobuf-ts/plugin-framework" "^2.0.7"
camel-case "^4.1.2"
dot-object "^2.1.4"
path-to-regexp "^6.2.0"
ts-poet "^4.5.0"
yaml "^1.10.2"
typescript@^3.9:
version "3.9.10"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8"
integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==
uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.3.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
xml2js@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7"
integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==