mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 22:44:20 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb0f760b6c | ||
|
|
1a0ff446f5 | ||
|
|
2f5524065c | ||
|
|
a8713082c2 | ||
|
|
84684c07c1 | ||
|
|
e34163cd15 | ||
|
|
eaecf785f6 | ||
|
|
f41e084df8 | ||
|
|
afda160499 | ||
|
|
e69d1ea5ec | ||
|
|
dffc446db9 | ||
|
|
2e007403fc | ||
|
|
72002957a7 | ||
|
|
bc1d550354 | ||
|
|
bcde69c47c | ||
|
|
eedae55b0a | ||
|
|
ca041f971d | ||
|
|
1eb8bd2dc1 | ||
|
|
fc67f6de0a | ||
|
|
5ea2b47b47 | ||
|
|
fb404b9557 | ||
|
|
d8d83c3960 | ||
|
|
e5ac7b085f | ||
|
|
cad744e24a | ||
|
|
ba79f3f74f | ||
|
|
e9454362e9 | ||
|
|
354a1ad156 | ||
|
|
7886c66535 | ||
|
|
1a615958ad | ||
|
|
922ebc4c52 | ||
|
|
6c79f721fa | ||
|
|
e17c5ea7eb | ||
|
|
f0a4d6bddd | ||
|
|
bbda85882f | ||
|
|
30755d8bf4 | ||
|
|
28233a011b | ||
|
|
277ba2a127 | ||
|
|
04c2e2b8e8 | ||
|
|
88a8155095 | ||
|
|
3ad45c51bf | ||
|
|
32110d4e31 | ||
|
|
28d088d34a | ||
|
|
f2f42b7848 | ||
|
|
5547c873c2 | ||
|
|
d781c1b4ed | ||
|
|
8711a86ab6 | ||
|
|
ef45abe478 | ||
|
|
8388f20e6a | ||
|
|
2654679fe7 | ||
|
|
1287d2b408 | ||
|
|
84b14e9e47 | ||
|
|
28c4deda89 | ||
|
|
fbaef13682 | ||
|
|
f72249c5c9 | ||
|
|
87b48937c9 | ||
|
|
fd2daeae79 | ||
|
|
1d542747a7 | ||
|
|
7a6302104f | ||
|
|
8e51ba9a0a | ||
|
|
868b3f0884 | ||
|
|
4a9ddd6f33 | ||
|
|
bfefad842b | ||
|
|
540484a3c0 | ||
|
|
401c19e14f | ||
|
|
2a18b06812 | ||
|
|
2e3487c00e | ||
|
|
6825c765eb | ||
|
|
9a9fe58c47 | ||
|
|
a2bbe5b1b2 | ||
|
|
46ca53beb3 | ||
|
|
217c988b8c | ||
|
|
c6d4d2ab97 | ||
|
|
8c27ea3449 | ||
|
|
7d3497fd78 | ||
|
|
98aefb3c83 | ||
|
|
7bae1d00b5 | ||
|
|
4d521eadc8 | ||
|
|
1d9686e3ef | ||
|
|
bea2fb915c | ||
|
|
f269373437 | ||
|
|
784fcda67f | ||
|
|
f6e05710ec | ||
|
|
207a39969b | ||
|
|
086ffb1a20 | ||
|
|
27ceac8081 | ||
|
|
aac0c64812 | ||
|
|
727fd4feab | ||
|
|
79c01b8847 | ||
|
|
c04af2bb72 | ||
|
|
17f5c914a0 | ||
|
|
5496baa6db | ||
|
|
0ec4904dc7 | ||
|
|
f321cf5a4d | ||
|
|
6af8267b44 | ||
|
|
a6b46b8a08 | ||
|
|
52753b7da8 | ||
|
|
a6e6f86333 | ||
|
|
bc2ba926aa | ||
|
|
371544706a | ||
|
|
50ba3386b0 | ||
|
|
161cd54b69 | ||
|
|
2a9a743e19 | ||
|
|
3a77c29278 | ||
|
|
382d786c8a | ||
|
|
97e35c5302 | ||
|
|
1d0e911f61 | ||
|
|
c48bc1e88d | ||
|
|
713e0f1ab5 | ||
|
|
af43264f2b | ||
|
|
3251c5c21b | ||
|
|
21a479f2d7 | ||
|
|
3783f195e2 | ||
|
|
ff740bc00a | ||
|
|
78c01b705f | ||
|
|
d5fb7a202f | ||
|
|
0cde4689ba | ||
|
|
a56d16ef33 | ||
|
|
12dfa2bb47 | ||
|
|
68b705993a | ||
|
|
d046db60e3 | ||
|
|
d4138ebc47 | ||
|
|
049eae0450 | ||
|
|
ff22bbb25f | ||
|
|
943103cae7 | ||
|
|
7dc18ff0ca | ||
|
|
00a1085dff | ||
|
|
868b8c0873 | ||
|
|
4f20bb7102 | ||
|
|
6615b4b8a0 | ||
|
|
82dd21cb95 | ||
|
|
cacc9f1c0b | ||
|
|
1198b07430 | ||
|
|
70da3bbf44 | ||
|
|
6bd3d993c6 | ||
|
|
5f19ec79ce | ||
|
|
d4526a5553 | ||
|
|
e9d41d6cc1 | ||
|
|
22fdc77bf4 | ||
|
|
98f8f7e659 | ||
|
|
56dbe84af1 | ||
|
|
e8677f0f39 | ||
|
|
7f2d473c10 | ||
|
|
bd03e04863 | ||
|
|
9c6c84224a | ||
|
|
5daca16544 | ||
|
|
558057564b | ||
|
|
432702e864 | ||
|
|
b203567269 | ||
|
|
c6e5aea595 | ||
|
|
360dc864d5 | ||
|
|
251b9047a8 | ||
|
|
961f85197f | ||
|
|
28f930222f | ||
|
|
df99e806d4 | ||
|
|
ff4c96868c | ||
|
|
b256bd96bb | ||
|
|
af848b40be | ||
|
|
8575951200 | ||
|
|
036ef458dd | ||
|
|
552f83fe52 | ||
|
|
54a18e26db | ||
|
|
cd48c8e227 | ||
|
|
a05e47355e | ||
|
|
eba3a0f992 | ||
|
|
679e23d4a3 | ||
|
|
9f4cc09ff9 | ||
|
|
4d745286b4 | ||
|
|
5cfe23c062 | ||
|
|
f887fb3d0e | ||
|
|
b1c3bf6751 | ||
|
|
d37167af45 | ||
|
|
52b8784594 | ||
|
|
9aede54d98 | ||
|
|
24a61db157 | ||
|
|
5311f05890 | ||
|
|
cb3f1e45ed | ||
|
|
4f1c6a74a7 | ||
|
|
b252db7f27 | ||
|
|
250fcd6a74 | ||
|
|
bc1dd263b6 | ||
|
|
8a45918450 | ||
|
|
92a3389c13 | ||
|
|
7d546f4868 | ||
|
|
4e64415f09 | ||
|
|
d2b39ad0b5 | ||
|
|
e939497f6f | ||
|
|
6cecb48364 | ||
|
|
4d88f85d08 | ||
|
|
55283cc231 | ||
|
|
904f3fef85 | ||
|
|
ec02537da5 | ||
|
|
089557fc38 | ||
|
|
e6689b4deb | ||
|
|
9669f3ee51 | ||
|
|
31a7f6d628 | ||
|
|
59b5745c73 | ||
|
|
d03a71de6e | ||
|
|
ddde3938f5 | ||
|
|
5a73aa9f67 | ||
|
|
d01c52ad8b | ||
|
|
377a94bc68 | ||
|
|
66dc012cc3 | ||
|
|
2789f85824 | ||
|
|
fbb865d04d | ||
|
|
96ac949ea0 | ||
|
|
92aece5fc9 | ||
|
|
db791aad7b | ||
|
|
d3c9825d67 | ||
|
|
f60ef1e808 | ||
|
|
bc4e585e26 | ||
|
|
2cf593d66b | ||
|
|
a26e1fb6b3 | ||
|
|
4d060a10e6 | ||
|
|
77fe3b48b7 | ||
|
|
8df78e5576 | ||
|
|
b8e62b879e | ||
|
|
d60780f6b6 | ||
|
|
8aa012b56d | ||
|
|
628be4e0e4 | ||
|
|
ee26e27437 | ||
|
|
93287a1fa8 | ||
|
|
3190662165 | ||
|
|
eb7f94ffae | ||
|
|
ad718faf7a | ||
|
|
09c10210cc | ||
|
|
f78d71faf4 | ||
|
|
fe42d0e73b | ||
|
|
8a6667e214 | ||
|
|
03b78bdda2 | ||
|
|
5fe1a6694c | ||
|
|
bb3a0553d5 | ||
|
|
02c9cccf0e | ||
|
|
8d6236c5db | ||
|
|
4b2d1d631e | ||
|
|
349473288f | ||
|
|
846173692d | ||
|
|
9d93e96fe7 | ||
|
|
ee2113536a | ||
|
|
ee37499046 | ||
|
|
a5e2883296 | ||
|
|
705fe056cf | ||
|
|
8e7720ca42 | ||
|
|
7a0bff23cb | ||
|
|
c7079efafd | ||
|
|
384fc1b92f | ||
|
|
0a6498048c | ||
|
|
de6f5b9c34 | ||
|
|
4887fd8753 | ||
|
|
c4fe7bd15d | ||
|
|
84dd2abab6 | ||
|
|
8ddb7b3348 | ||
|
|
f2c070bbf7 | ||
|
|
ece8276942 | ||
|
|
bc92d02ed9 | ||
|
|
eae47962ba | ||
|
|
d240f61f8b | ||
|
|
3068fa83f9 | ||
|
|
72d5948221 | ||
|
|
51899ef157 | ||
|
|
a727442384 | ||
|
|
f564484a57 | ||
|
|
ce94adffd3 | ||
|
|
42a259edb2 | ||
|
|
f7849898b0 | ||
|
|
a3894ac3b7 | ||
|
|
5022ef5ab9 | ||
|
|
875ff82065 | ||
|
|
6776a1b083 | ||
|
|
b289c1ab17 | ||
|
|
b5206a3d03 | ||
|
|
925d63f634 | ||
|
|
0b2c3ee702 | ||
|
|
658402fc50 | ||
|
|
0a29871fe2 | ||
|
|
ae403e8ff4 | ||
|
|
3804ad4ff2 | ||
|
|
87ccb7599f | ||
|
|
19b31c7064 | ||
|
|
a1396b7d70 | ||
|
|
5ece9850ad | ||
|
|
6148f408d3 | ||
|
|
699560a00d | ||
|
|
8b5af312bd | ||
|
|
d5ee2364f0 | ||
|
|
8731780d5e | ||
|
|
3882fb634e | ||
|
|
d6ebfae201 | ||
|
|
3325fe2d4e | ||
|
|
e8f04a3cee | ||
|
|
bb1d54ff77 | ||
|
|
4e1189c53d | ||
|
|
a54c48c94b | ||
|
|
cb55cb0ce4 | ||
|
|
08245253a7 | ||
|
|
51df335734 | ||
|
|
c4167d16b3 | ||
|
|
d97cd77c44 | ||
|
|
706bae07c5 | ||
|
|
2489e28c66 | ||
|
|
d20d4c5fed | ||
|
|
ad637dce55 | ||
|
|
8029ebd6e5 | ||
|
|
356354c8aa | ||
|
|
be54de855e | ||
|
|
cd4241788a | ||
|
|
3c76dcfa76 | ||
|
|
a7439cf424 | ||
|
|
b9675e15ad | ||
|
|
57a3395c80 | ||
|
|
296bf7f67a | ||
|
|
e92b7971f0 | ||
|
|
b2e1b33839 | ||
|
|
645077fe5e | ||
|
|
301d3e0984 | ||
|
|
8c72644a0b | ||
|
|
d02b65e726 | ||
|
|
d246303ba7 | ||
|
|
d78e94b867 | ||
|
|
793715001d | ||
|
|
69fe46858b | ||
|
|
dcbc29fae9 | ||
|
|
3f53c4ecc2 | ||
|
|
9b993bc63c | ||
|
|
d6a695ac2a | ||
|
|
e404913b05 | ||
|
|
eb938a806e | ||
|
|
ee5764de2c | ||
|
|
2b019609e2 | ||
|
|
7e21bdc34c | ||
|
|
b37f0a38ea | ||
|
|
ebaea52cb2 | ||
|
|
382b2c5e9b | ||
|
|
0d85c5bbb7 | ||
|
|
b80945c764 | ||
|
|
1a68550f2e | ||
|
|
bd94d6a504 | ||
|
|
b9d02e5f7e | ||
|
|
4d8ce7b87d | ||
|
|
cd9d3de43b | ||
|
|
7baabd2c5d | ||
|
|
e5517072e8 | ||
|
|
cca23415f7 | ||
|
|
cb1708a42d | ||
|
|
339cddd0ab | ||
|
|
0bb302e3c3 | ||
|
|
359bebbc29 | ||
|
|
fabf2515e6 |
@@ -0,0 +1 @@
|
|||||||
|
github: [eregon]
|
||||||
@@ -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
|
|
||||||
-->
|
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
name: Other issue (not a bug)
|
||||||
|
about: Feature requests, etc
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: 'github-actions'
|
||||||
|
directory: '/'
|
||||||
|
schedule:
|
||||||
|
interval: 'weekly'
|
||||||
@@ -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
|
||||||
|
|||||||
+265
-38
@@ -9,37 +9,104 @@ 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-2019, windows-2022 ]
|
os: [ ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm, macos-13, macos-14, macos-15, windows-2019, windows-2022, windows-2025, windows-11-arm ]
|
||||||
ruby: [ 1.9, '2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ]
|
ruby: [
|
||||||
|
'1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', ruby-head,
|
||||||
|
jruby, jruby-head,
|
||||||
|
truffleruby, truffleruby-head,
|
||||||
|
truffleruby+graalvm, truffleruby+graalvm-head
|
||||||
|
]
|
||||||
include:
|
include:
|
||||||
- { 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: mingw }
|
||||||
|
- { os: windows-2022, ruby: mswin }
|
||||||
- { os: windows-2022, ruby: ucrt }
|
- { os: windows-2022, ruby: ucrt }
|
||||||
|
- { os: windows-2025, ruby: mingw }
|
||||||
|
- { os: windows-2025, ruby: mswin }
|
||||||
|
- { os: windows-2025, ruby: ucrt }
|
||||||
|
- { os: ubuntu-24.04, ruby: asan }
|
||||||
|
- { os: ubuntu-24.04, ruby: 3.4-asan }
|
||||||
exclude:
|
exclude:
|
||||||
- { os: windows-2019, ruby: 1.9 }
|
# https://github.com/ruby/setup-ruby/issues/496
|
||||||
- { os: windows-2019, ruby: debug }
|
- { os: ubuntu-22.04, ruby: '2.2' }
|
||||||
|
- { os: ubuntu-24.04, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-24.04, ruby: '2.2' }
|
||||||
|
# These old Rubies fail to compile on macOS arm64
|
||||||
|
- { os: macos-14, ruby: '1.9' }
|
||||||
|
- { os: macos-14, ruby: '2.0' }
|
||||||
|
- { os: macos-14, ruby: '2.1' }
|
||||||
|
- { os: macos-14, ruby: '2.2' }
|
||||||
|
- { os: macos-14, ruby: '2.3' }
|
||||||
|
- { os: macos-14, ruby: '2.4' }
|
||||||
|
- { os: macos-14, ruby: '2.5' }
|
||||||
|
- { os: macos-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' }
|
||||||
|
# These old Rubies fail to compile or segfault on Linux arm64
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.0' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.1' }
|
||||||
|
- { os: ubuntu-22.04-arm, ruby: '2.2' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '1.9' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.0' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.1' }
|
||||||
|
- { os: ubuntu-24.04-arm, ruby: '2.2' }
|
||||||
|
# RubyInstaller windows-arm64 builds only exist for Ruby 3.4+
|
||||||
|
- { os: windows-11-arm, ruby: '2.0' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.1' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.2' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.3' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.4' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.5' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.6' }
|
||||||
|
- { os: windows-11-arm, ruby: '2.7' }
|
||||||
|
- { os: windows-11-arm, ruby: '3.0' }
|
||||||
|
- { os: windows-11-arm, ruby: '3.1' }
|
||||||
|
- { os: windows-11-arm, ruby: '3.2' }
|
||||||
|
- { os: windows-11-arm, ruby: '3.3' }
|
||||||
|
# https://github.com/ruby/jruby-dev-builder/pull/14#issuecomment-2829841247
|
||||||
|
- { os: windows-11-arm, ruby: jruby }
|
||||||
|
- { os: windows-11-arm, ruby: jruby-head }
|
||||||
|
# RubyInstaller has no 64-bit builds of 1.9 on Windows
|
||||||
|
- { os: windows-2019, ruby: '1.9' }
|
||||||
|
- { os: windows-2022, ruby: '1.9' }
|
||||||
|
- { os: windows-2025, ruby: '1.9' }
|
||||||
|
- { os: windows-11-arm, ruby: '1.9' }
|
||||||
|
# TruffleRuby does not support Windows
|
||||||
- { os: windows-2019, ruby: truffleruby }
|
- { os: windows-2019, ruby: truffleruby }
|
||||||
- { os: windows-2019, ruby: truffleruby-head }
|
|
||||||
- { os: windows-2019, ruby: truffleruby+graalvm }
|
|
||||||
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
|
||||||
- { os: windows-2022, ruby: 1.9 }
|
|
||||||
- { os: windows-2022, ruby: debug }
|
|
||||||
- { os: windows-2022, ruby: truffleruby }
|
- { os: windows-2022, ruby: truffleruby }
|
||||||
|
- { os: windows-2025, ruby: truffleruby }
|
||||||
|
- { os: windows-11-arm, ruby: truffleruby }
|
||||||
|
- { os: windows-2019, ruby: truffleruby-head }
|
||||||
- { os: windows-2022, ruby: truffleruby-head }
|
- { os: windows-2022, ruby: truffleruby-head }
|
||||||
|
- { os: windows-2025, ruby: truffleruby-head }
|
||||||
|
- { os: windows-11-arm, ruby: truffleruby-head }
|
||||||
|
- { os: windows-2019, ruby: truffleruby+graalvm }
|
||||||
- { os: windows-2022, ruby: truffleruby+graalvm }
|
- { os: windows-2022, ruby: truffleruby+graalvm }
|
||||||
|
- { os: windows-2025, ruby: truffleruby+graalvm }
|
||||||
|
- { os: windows-11-arm, ruby: truffleruby+graalvm }
|
||||||
|
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
||||||
- { os: windows-2022, ruby: truffleruby+graalvm-head }
|
- { os: windows-2022, ruby: truffleruby+graalvm-head }
|
||||||
|
- { os: windows-2025, ruby: truffleruby+graalvm-head }
|
||||||
|
- { os: windows-11-arm, 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:
|
||||||
@@ -66,6 +133,8 @@ jobs:
|
|||||||
} else {
|
} else {
|
||||||
echo 'ridk is unavailable'
|
echo 'ridk is unavailable'
|
||||||
}
|
}
|
||||||
|
} elseif ($plat.Contains('mswin')) {
|
||||||
|
Get-ChildItem "$env:VCPKG_INSTALLATION_ROOT\installed\vcpkg\info"
|
||||||
}
|
}
|
||||||
- name: RbConfig::CONFIG
|
- name: RbConfig::CONFIG
|
||||||
run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG'
|
run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG'
|
||||||
@@ -91,14 +160,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() }
|
||||||
@@ -107,65 +203,183 @@ 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')
|
# Should be startsWith(matrix.ruby, 'jruby') but broken on jruby-head: https://github.com/jruby/jruby/issues/8623
|
||||||
|
if: startsWith(matrix.os, 'windows') && matrix.ruby == 'jruby'
|
||||||
run: gem install sassc
|
run: gem install sassc
|
||||||
|
|
||||||
testLatestRubygemsVersion:
|
testDotRubyVersion:
|
||||||
name: "Test rubygems input set to latest upgrades the default RubyGems version"
|
name: "Test .ruby-version"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
- run: echo "ruby-3.4.0" > .ruby-version
|
||||||
|
- uses: ./
|
||||||
|
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||||
|
|
||||||
|
testToolVersions:
|
||||||
|
name: "Test .tool-versions"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: echo -e "nodejs 16.0.0\nruby 3.4.0" > .tool-versions
|
||||||
|
- uses: ./
|
||||||
|
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||||
|
|
||||||
|
testMise:
|
||||||
|
name: "Test mise.toml"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- run: echo -e "[tools]\nnode = '18'\nruby = '3.4.0'" > mise.toml
|
||||||
|
- uses: ./
|
||||||
|
- run: ruby -v | grep -F "ruby 3.4.0"
|
||||||
|
|
||||||
|
testNoGemfile:
|
||||||
|
name: "Test with no Gemfile"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@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: ./
|
- uses: ./
|
||||||
with:
|
with:
|
||||||
ruby-version: 2.6
|
ruby-version: ${{ matrix.ruby }}
|
||||||
rubygems: latest
|
rubygems: latest
|
||||||
- run: ruby -e "exit(Gem.rubygems_version > Gem::Version.new('3.0.3'))"
|
- run: ruby -e 'puts Gem::VERSION; exit(Gem.rubygems_version >= Gem::Version.new("${{ matrix.expected_rubygems_version }}"))'
|
||||||
|
|
||||||
testFixedRubygemsVersionUpgrades:
|
testFixedRubygemsVersionUpgrades:
|
||||||
name: "Test rubygems input set to a fixed version upgrades RubyGems to that version if the default is older"
|
name: "Test rubygems: version upgrades RubyGems to that version if the default is older"
|
||||||
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'
|
||||||
rubygems: 3.2.3
|
rubygems: 3.2.3
|
||||||
- run: gem --version | grep -F "3.2.3"
|
- run: gem --version | grep -F "3.2.3"
|
||||||
|
|
||||||
testFixedRubygemsVersionNoop:
|
testFixedRubygemsVersionNoop:
|
||||||
name: "Test rubygems input set to a fixed version noops if the default is newer"
|
name: "Test rubygems: version noops if the default is newer"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
- uses: ./
|
- uses: ./
|
||||||
with:
|
with:
|
||||||
ruby-version: 3.1
|
ruby-version: '3.1.0'
|
||||||
rubygems: 3.2.3
|
rubygems: 3.2.3
|
||||||
- run: gem --version | grep -F "3.3.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-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./
|
||||||
|
with:
|
||||||
|
ruby-version: '2.3'
|
||||||
|
bundler: 1.16.6
|
||||||
|
- run: bundle --version | grep -F "1.16.6" # And not 1.17.x from ~> 1
|
||||||
|
|
||||||
|
testMajorBundlerVersion:
|
||||||
|
name: "Test with a major Bundler version"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@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."
|
||||||
@@ -174,16 +388,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
gemfile: [ rails5, rails6 ]
|
gemfile: [ rails7, rails8 ]
|
||||||
name: "Test with ${{ matrix.gemfile }} gemfile"
|
name: "Test with ${{ matrix.gemfile }} gemfile"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
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: '3.2'
|
||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
- run: bundle exec rails --version
|
- run: bundle exec rails --version
|
||||||
|
|
||||||
@@ -193,17 +407,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
|
||||||
|
|
||||||
lint:
|
testWindowsToolchain:
|
||||||
runs-on: ubuntu-20.04
|
name: "Test windows-toolchain: none"
|
||||||
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ./
|
||||||
|
with:
|
||||||
|
ruby-version: '2.7'
|
||||||
|
windows-toolchain: none
|
||||||
|
bundler: none
|
||||||
|
- name: C:/msys64/mingw64/bin/gcc.exe not installed
|
||||||
|
run: ruby -e "abort if File.exist?('C:/msys64/mingw64/bin/gcc.exe')"
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- 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
|
||||||
|
|||||||
@@ -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 +0,0 @@
|
|||||||
ruby-2.6.5
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
nodejs 12.0.0
|
|
||||||
ruby 2.7.0
|
|
||||||
+6
-3
@@ -22,6 +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.json`,
|
This is entirely automated now since [this issue](https://github.com/ruby/setup-ruby/issues/254).
|
||||||
then follow the steps above in [Regenerating dist/index.js](#regenerating-distindexjs) to update `dist/index.js`.
|
If you do not see a new version more than 24 hours after it was released feel free to file an issue.
|
||||||
Finally, update the "Supported Versions" section of the README if needed.
|
|
||||||
|
## Release
|
||||||
|
|
||||||
|
Maintainers can create a release automatically by running [this workflow](https://github.com/ruby/setup-ruby/actions/workflows/release.yml).
|
||||||
|
|||||||
@@ -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,55 @@ 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.1.0, head, debug, mingw, mswin |
|
| `ruby` | 1.9.3, 2.0.0, 2.1.9, 2.2, all versions from 2.3.0 until 3.5.0-preview1, head, debug, mingw, mswin, ucrt |
|
||||||
| `jruby` | 9.1.17.0 - 9.3.3.0, head |
|
| `jruby` | 9.1.17.0 - 10.0.0.1, head |
|
||||||
| `truffleruby` | 19.3.0 - 22.0.0, head |
|
| `truffleruby` | 19.3.0 - 24.2.1, head |
|
||||||
| `truffleruby+graalvm` | 21.2.0 - 22.0.0, head |
|
| `truffleruby+graalvm` | 21.2.0 - 24.2.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`.
|
||||||
|
|
||||||
|
`ruby-3.4-asan` is similar to `ruby-asan` but built from the latest stable 3.4 release tag.
|
||||||
|
Like `ruby-asan`, it's currently only available on `ubuntu-24.04`.
|
||||||
|
|
||||||
|
Regarding Windows ruby master builds, `mingw` is a MSYS2/MinGW build, `head` & `ucrt` are MSYS2/UCRT64
|
||||||
|
builds, and `mswin` is a MSVC/VS 2022 build.
|
||||||
|
|
||||||
Preview and RC versions of Ruby might be available too on Ubuntu and macOS (not on Windows).
|
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-22.04`, `ubuntu-24.04`, `ubuntu-22.04-arm`, `ubuntu-24.04-arm` |
|
||||||
| macOS | `macos-latest` (= `macos-10.15`) | `macos-11.0` |
|
| macOS | `macos-13` and newer versions |
|
||||||
| Windows | `windows-latest` (= `windows-2019`) | `windows-2022` |
|
| Windows | `windows-2019`, `windows-2022`, `windows-2025`, `windows-11-arm` |
|
||||||
|
|
||||||
|
Not all combinations of runner images and versions are supported.
|
||||||
|
The list of available Ruby versions can be seen in [ruby-builder-versions.json](ruby-builder-versions.json) for Ubuntu and macOS
|
||||||
|
(although some combinations are not available, see [the full list](https://github.com/ruby/ruby-builder/releases/tag/toolcache))
|
||||||
|
and in [windows-versions.json](windows-versions.json) for Windows.
|
||||||
|
|
||||||
The prebuilt releases are generated by [ruby-builder](https://github.com/ruby/ruby-builder)
|
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 and in [windows-versions.json](windows-versions.json) for Windows.
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -64,10 +76,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, .tool-versions or mise.toml
|
||||||
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 +98,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.6, 2.7, '3.0', 3.1, 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 }}
|
||||||
@@ -107,15 +119,15 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
gemfile: [ rails5, rails6 ]
|
gemfile: [ rails7, rails8 ]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
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,16 +139,17 @@ 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`
|
* `mise.toml` reads from the project's `mise.toml` file
|
||||||
|
* If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions`, followed by `mise.toml`
|
||||||
|
|
||||||
### Working Directory
|
### Working Directory
|
||||||
|
|
||||||
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`, `mise.toml` 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
|
### RubyGems
|
||||||
@@ -153,9 +166,12 @@ 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.
|
||||||
|
|
||||||
@@ -225,7 +241,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
|
||||||
|
|
||||||
@@ -242,20 +260,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.
|
||||||
|
|
||||||
On a self-hosted runner you need to define the `ImageOs` as an evironment variable on the host, you can do this in the `~/actions-runner/.env` file (See [#230](https://github.com/ruby/setup-ruby/issues/230)).
|
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
|
||||||
|
|
||||||
|
|||||||
+25
-17
@@ -6,40 +6,48 @@ branding:
|
|||||||
icon: download
|
icon: download
|
||||||
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, .tool-versions or mise.toml if unset.'
|
||||||
required: false
|
|
||||||
default: 'default'
|
default: 'default'
|
||||||
rubygems:
|
rubygems:
|
||||||
description: |
|
description: |
|
||||||
The version of RubyGems to use. Either 'default', 'latest', or a version number (e.g., 3.3.5).
|
The version of RubyGems to use. Either 'default' (the default), 'latest', or a version number (e.g., 3.3.5).
|
||||||
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
|
For 'default', no action is taken and the version of RubyGems that comes with Ruby by default is used.
|
||||||
For 'latest', `gem update --system` is run to update to the latest RubyGems version.
|
For 'latest', `gem update --system` is run to update to the latest compatible RubyGems version.
|
||||||
|
Ruby head/master builds will not be updated.
|
||||||
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
|
Similarly, if a version number is given, `gem update --system <version>` is run to update to that version of RubyGems, as long as that version is newer than the one provided by default.
|
||||||
Defaults to '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, mise.toml 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
-35
@@ -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,37 +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')
|
||||||
// Workaround for https://github.com/rubygems/rubygems/issues/5245
|
bundlerVersion = '2.4'
|
||||||
const force = (platform.startsWith('windows-') && engine === 'ruby' && common.floatVersion(rubyVersion) >= 3.1) ? ['--force'] : []
|
}
|
||||||
await exec.exec(gem, ['install', 'bundler', ...force, '-v', bundlerVersionConstraint])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,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;
|
||||||
@@ -182,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,
|
||||||
|
|||||||
@@ -5,11 +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 exec = require('@actions/exec')
|
||||||
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['RUNNER_TEMP'] || '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)
|
||||||
@@ -47,16 +54,45 @@ export async function measure(name, block) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isHeadVersion(rubyVersion) {
|
// Same as mesaure() but without the group, and no time shown on error
|
||||||
return ['head', 'debug', 'mingw', 'mswin', 'ucrt'].includes(rubyVersion)
|
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)
|
// 3.4-asan counts as "head" because the version cannot be selected -- you can only get whatever's latest
|
||||||
|
return ['head', 'debug', 'mingw', 'mswin', 'ucrt', 'asan', '3.4-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 +107,49 @@ 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 (version === 9.4) {
|
||||||
|
return 3.1
|
||||||
|
}
|
||||||
|
} else if (engine.startsWith('truffleruby')) {
|
||||||
|
if (version < 21.0) {
|
||||||
|
return 2.6
|
||||||
|
} else if (version < 22.0) {
|
||||||
|
return 2.7
|
||||||
|
} else if (version < 23.0) {
|
||||||
|
return 3.0
|
||||||
|
} else if (version < 23.1) {
|
||||||
|
return 3.1
|
||||||
|
} else if (version < 24.2) {
|
||||||
|
return 3.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 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 +169,182 @@ 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-22.04-x64',
|
||||||
throw new Error('The environment variable ImageOS must be set')
|
'ubuntu-22.04-arm64',
|
||||||
|
'ubuntu-24.04-x64',
|
||||||
|
'ubuntu-24.04-arm64',
|
||||||
|
'windows-2019-x64',
|
||||||
|
'windows-2022-x64',
|
||||||
|
'windows-2025-x64',
|
||||||
|
'windows-11-arm64'
|
||||||
|
]
|
||||||
|
|
||||||
|
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
|
||||||
|
function isSupportedPlatform() {
|
||||||
|
const platform = getOSName()
|
||||||
|
switch (platform) {
|
||||||
|
case 'ubuntu':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
|
case 'macos':
|
||||||
|
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
|
||||||
|
// 13 on arm64 because of old macos-arm-oss runners
|
||||||
|
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 13) ||
|
||||||
|
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
|
||||||
|
case 'windows':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
}
|
}
|
||||||
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|Enterprise)/)
|
||||||
|
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,15 +356,7 @@ 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-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))
|
||||||
@@ -181,24 +374,43 @@ export function setupPath(newPathEntries) {
|
|||||||
core.exportVariable(envPath, cleanPath.join(path.delimiter))
|
core.exportVariable(envPath, cleanPath.join(path.delimiter))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Then add new path entries using core.addPath()
|
|
||||||
let newPath
|
|
||||||
if (windows) {
|
|
||||||
// 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
|
|
||||||
const msys2 = [`C:\\msys64\\${msys2Type}\\bin`, 'C:\\msys64\\usr\\bin']
|
|
||||||
newPath = [...newPathEntries, ...msys2]
|
|
||||||
} else {
|
|
||||||
newPath = newPathEntries
|
|
||||||
}
|
|
||||||
console.log(`Entries added to ${envPath} to use selected Ruby:`)
|
console.log(`Entries added to ${envPath} to use selected Ruby:`)
|
||||||
for (const entry of newPath) {
|
for (const entry of newPathEntries) {
|
||||||
console.log(` ${entry}`)
|
console.log(` ${entry}`)
|
||||||
}
|
}
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
core.addPath(newPath.join(path.delimiter))
|
core.addPath(newPathEntries.join(path.delimiter))
|
||||||
return msys2Type
|
}
|
||||||
|
|
||||||
|
export async function setupJavaHome(rubyPrefix) {
|
||||||
|
await measure("Modifying JAVA_HOME for JRuby", async () => {
|
||||||
|
console.log("attempting to run with existing JAVA_HOME")
|
||||||
|
|
||||||
|
const javaHome = process.env['JAVA_HOME']
|
||||||
|
let java = javaHome ? path.join(javaHome, 'bin/java') : 'java'
|
||||||
|
let ret = await exec.exec(java, ['-jar', path.join(rubyPrefix, 'lib/jruby.jar'), '--version'], {ignoreReturnCode: true})
|
||||||
|
|
||||||
|
if (ret === 0) {
|
||||||
|
console.log("JRuby successfully starts, using existing JAVA_HOME")
|
||||||
|
} else {
|
||||||
|
console.log("JRuby failed to start, try Java 21 envs")
|
||||||
|
|
||||||
|
let arch = os.arch()
|
||||||
|
if (arch === "x64" || os.platform() !== "darwin") {
|
||||||
|
arch = "X64"
|
||||||
|
}
|
||||||
|
|
||||||
|
let newHomeVar = `JAVA_HOME_21_${arch}`
|
||||||
|
let newHome = process.env[newHomeVar]
|
||||||
|
|
||||||
|
if (newHome === "undefined") {
|
||||||
|
throw new Error(`JAVA_HOME is not Java 21+ needed for JRuby and \$${newHomeVar} is not defined`)
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`Setting JAVA_HOME to ${newHomeVar} path ${newHome}`)
|
||||||
|
|
||||||
|
core.exportVariable("JAVA_HOME", newHome)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
+34500
-19183
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem "path"
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
path (2.0.1)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
path
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.4.0.dev
|
||||||
@@ -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
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rails", "~> 6.0.0"
|
gem "rails", "~> 7.2.0"
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rails", "~> 5.2.0"
|
gem "rails", "~> 8.0.0"
|
||||||
@@ -1,34 +1,93 @@
|
|||||||
require 'net/http'
|
require 'open-uri'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
min_requirements = ['~> 2.0.0', '~> 2.1.9', '>= 2.2.6'].map { |req| Gem::Requirement.new(req) }
|
min_requirements = ['~> 2.0.0', '~> 2.1.9', '>= 2.2.6'].map { |req| Gem::Requirement.new(req) }
|
||||||
|
|
||||||
url = 'https://raw.githubusercontent.com/oneclick/rubyinstaller.org-website/master/_data/downloads.yaml'
|
url = 'https://raw.githubusercontent.com/oneclick/rubyinstaller.org-website/master/_data/downloads.yaml'
|
||||||
entries = YAML.load(Net::HTTP.get(URI(url)), symbolize_names: true)
|
entries = YAML.load(URI.open(url, &:read), symbolize_names: true)
|
||||||
|
|
||||||
versions = entries.select { |entry|
|
versions = entries.select { |entry|
|
||||||
entry[:filetype] == 'rubyinstaller7z' and
|
entry[:filetype] == 'rubyinstaller7z' and
|
||||||
entry[:name].include?('(x64)')
|
entry[:name].include?('(x64)') || entry[:name].include?('(arm)')
|
||||||
}.group_by { |entry|
|
}.group_by { |entry|
|
||||||
entry[:name][/Ruby (\d+\.\d+\.\d+)/, 1]
|
entry[:name][/Ruby (\d+\.\d+\.\d+)/, 1]
|
||||||
}.map { |version, builds|
|
}.map { |version, builds_by_version|
|
||||||
unless builds.sort_by { |build| build[:name] } == builds.reverse
|
builds = builds_by_version.group_by { |entry|
|
||||||
raise "not sorted as expected for #{version}"
|
entry[:name][/\((x64|arm)\)/, 1]
|
||||||
end
|
}.map { |arch, builds_by_arch|
|
||||||
[version, builds.first]
|
arch = 'arm64' if arch == 'arm'
|
||||||
|
unless builds_by_arch.sort_by { |build| build[:name] } == builds_by_arch.reverse
|
||||||
|
raise "not sorted as expected for #{version}"
|
||||||
|
end
|
||||||
|
[arch, builds_by_arch.first[:href]]
|
||||||
|
}.sort_by { |arch, builds|
|
||||||
|
arch
|
||||||
|
}.to_h
|
||||||
|
[version, builds]
|
||||||
}.sort_by { |version, entry|
|
}.sort_by { |version, entry|
|
||||||
Gem::Version.new(version)
|
Gem::Version.new(version)
|
||||||
}.select { |version, entry|
|
}.select { |version, entry|
|
||||||
min_requirements.any? { |req| req.satisfied_by?(Gem::Version.new(version)) }
|
min_requirements.any? { |req| req.satisfied_by?(Gem::Version.new(version)) }
|
||||||
}.map { |version, entry|
|
|
||||||
[version, entry[:href]]
|
|
||||||
}.to_h
|
}.to_h
|
||||||
|
|
||||||
versions['head'] = 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z'
|
latest_version = Gem::Version.new(versions.keys.last)
|
||||||
versions['mingw'] = 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
|
head_version = Gem::Version.new("#{latest_version.bump}.0dev")
|
||||||
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'
|
versions['head'] = {
|
||||||
|
'arm64' => 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-arm.7z',
|
||||||
|
'x64' => 'https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z'
|
||||||
|
}
|
||||||
|
versions['mingw'] = {
|
||||||
|
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z'
|
||||||
|
}
|
||||||
|
versions['mswin'] = {
|
||||||
|
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z'
|
||||||
|
}
|
||||||
|
versions['ucrt'] = {
|
||||||
|
'x64' => 'https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z'
|
||||||
|
}
|
||||||
|
|
||||||
File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
|
File.binwrite 'windows-versions.json', "#{JSON.pretty_generate(versions)}\n"
|
||||||
|
|
||||||
|
base_url = 'https://github.com/ruby/setup-msys2-gcc/releases/latest/download/windows-toolchain.json'
|
||||||
|
windows_toolchain = JSON.parse(URI.open(base_url, &:read), symbolize_names: true)
|
||||||
|
|
||||||
|
versions.each do |raw_version, archs|
|
||||||
|
version = Gem::Version.correct?(raw_version) ? Gem::Version.new(raw_version) : head_version
|
||||||
|
|
||||||
|
archs.each_key do |raw_arch|
|
||||||
|
arch = raw_arch == 'arm64' ? 'aarch64' : raw_arch
|
||||||
|
|
||||||
|
platform =
|
||||||
|
case raw_version
|
||||||
|
when 'head', 'ucrt'
|
||||||
|
"#{arch}-mingw-ucrt"
|
||||||
|
when 'mingw'
|
||||||
|
"#{arch}-mingw32"
|
||||||
|
when 'mswin'
|
||||||
|
"#{arch}-mswin64"
|
||||||
|
else
|
||||||
|
if version >= Gem::Version.new('3.1.0.dev')
|
||||||
|
"#{arch}-mingw-ucrt"
|
||||||
|
else
|
||||||
|
"#{arch}-mingw32"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
toolchain =
|
||||||
|
windows_toolchain.select do |pkg|
|
||||||
|
pkg[:platform] == platform && pkg[:required_ruby_version].any? do |requirement|
|
||||||
|
Gem::Requirement.new(requirement).satisfied_by?(version)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
unless toolchain.one?
|
||||||
|
raise "#{toolchain.empty? ? 'no' : 'multiple'} toolchains found for #{raw_version} #{raw_arch}: #{toolchain}"
|
||||||
|
end
|
||||||
|
|
||||||
|
archs[raw_arch] = URI.join(base_url, toolchain.first[:href])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
File.binwrite 'windows-toolchain-versions.json', "#{JSON.pretty_generate(versions)}\n"
|
||||||
|
|||||||
@@ -12,10 +12,12 @@ const windows = common.windows
|
|||||||
const inputDefaults = {
|
const inputDefaults = {
|
||||||
'ruby-version': 'default',
|
'ruby-version': 'default',
|
||||||
'rubygems': 'default',
|
'rubygems': 'default',
|
||||||
'bundler': 'default',
|
'bundler': 'Gemfile.lock',
|
||||||
'bundler-cache': 'true',
|
'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
|
||||||
@@ -23,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
|
||||||
@@ -35,40 +44,41 @@ 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 common.measure('Print Ruby version', async () =>
|
||||||
await exec.exec('ruby', ['--version']))
|
await exec.exec('ruby', ['--version']))
|
||||||
|
|
||||||
if (inputs['rubygems'] !== 'default') {
|
const rubygemsInputSet = inputs['rubygems'] !== 'default'
|
||||||
|
if (rubygemsInputSet) {
|
||||||
await common.measure('Updating RubyGems', async () =>
|
await common.measure('Updating RubyGems', async () =>
|
||||||
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix))
|
rubygems.rubygemsUpdate(inputs['rubygems'], rubyPrefix, platform, engine, version))
|
||||||
}
|
}
|
||||||
|
|
||||||
// When setup-ruby is used by other actions, this allows code in them to run
|
// When setup-ruby is used by other actions, this allows code in them to run
|
||||||
@@ -78,16 +88,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)
|
||||||
@@ -99,6 +110,8 @@ function parseRubyEngineAndVersion(rubyVersion) {
|
|||||||
rubyVersion = '.ruby-version'
|
rubyVersion = '.ruby-version'
|
||||||
} else if (fs.existsSync('.tool-versions')) {
|
} else if (fs.existsSync('.tool-versions')) {
|
||||||
rubyVersion = '.tool-versions'
|
rubyVersion = '.tool-versions'
|
||||||
|
} else if (fs.existsSync('mise.toml')) {
|
||||||
|
rubyVersion = 'mise.toml'
|
||||||
} else {
|
} else {
|
||||||
throw new Error('input ruby-version needs to be specified if no .ruby-version or .tool-versions file exists')
|
throw new Error('input ruby-version needs to be specified if no .ruby-version or .tool-versions file exists')
|
||||||
}
|
}
|
||||||
@@ -109,9 +122,16 @@ function parseRubyEngineAndVersion(rubyVersion) {
|
|||||||
console.log(`Using ${rubyVersion} as input from file .ruby-version`)
|
console.log(`Using ${rubyVersion} as input from file .ruby-version`)
|
||||||
} else if (rubyVersion === '.tool-versions') { // Read from .tool-versions
|
} else if (rubyVersion === '.tool-versions') { // Read from .tool-versions
|
||||||
const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim()
|
const toolVersions = fs.readFileSync('.tool-versions', 'utf8').trim()
|
||||||
const rubyLine = toolVersions.split(/\r?\n/).filter(e => /^ruby\s/.test(e))[0]
|
const regexp = /^ruby\s+(\S+)/
|
||||||
rubyVersion = rubyLine.match(/^ruby\s+(.+)$/)[1]
|
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
|
||||||
|
rubyVersion = rubyLine.match(regexp)[1]
|
||||||
console.log(`Using ${rubyVersion} as input from file .tool-versions`)
|
console.log(`Using ${rubyVersion} as input from file .tool-versions`)
|
||||||
|
} else if (rubyVersion === 'mise.toml') { // Read from mise.toml
|
||||||
|
const toolVersions = fs.readFileSync('mise.toml', 'utf8').trim()
|
||||||
|
const regexp = /^ruby\s*=\s*['"](.+)['"]$/
|
||||||
|
const rubyLine = toolVersions.split(/\r?\n/).filter(e => regexp.test(e))[0]
|
||||||
|
rubyVersion = rubyLine.match(regexp)[1]
|
||||||
|
console.log(`Using ${rubyVersion} as input from file mise.toml`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let engine, version
|
let engine, version
|
||||||
@@ -137,7 +157,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))
|
||||||
@@ -147,12 +167,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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,24 @@
|
|||||||
engine_input, version = ARGV.fetch(0).split('-', 2)
|
versions = ARGV.fetch(0).split(',').map(&:strip)
|
||||||
|
p versions
|
||||||
|
|
||||||
MATCH = case engine_input
|
versions.each do |engine_version|
|
||||||
when 'ruby', 'jruby'
|
puts engine_version
|
||||||
/^\d+\.\d+\./
|
engine, version = engine_version.split('-', 2)
|
||||||
when 'truffleruby'
|
p [engine, version]
|
||||||
/^\d+\./
|
|
||||||
end
|
|
||||||
|
|
||||||
raise unless version[MATCH]
|
if engine == 'windows'
|
||||||
|
require_relative 'generate-windows-versions'
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
|
||||||
engines = [engine_input]
|
match = case engine
|
||||||
engines << 'truffleruby+graalvm' if engine_input == 'truffleruby'
|
when 'ruby', 'jruby'
|
||||||
|
/^\d+\.\d+\./
|
||||||
|
when 'truffleruby', 'truffleruby+graalvm'
|
||||||
|
/^\d+\./
|
||||||
|
end
|
||||||
|
|
||||||
engines.each do |engine|
|
raise engine_version unless version[match]
|
||||||
puts engine
|
|
||||||
|
|
||||||
# Update ruby-builder-versions.json
|
# Update ruby-builder-versions.json
|
||||||
file = "#{__dir__}/ruby-builder-versions.json"
|
file = "#{__dir__}/ruby-builder-versions.json"
|
||||||
@@ -30,7 +35,7 @@ engines.each do |engine|
|
|||||||
puts lines[from..to]
|
puts lines[from..to]
|
||||||
|
|
||||||
release_line = lines[from..to].find { |line|
|
release_line = lines[from..to].find { |line|
|
||||||
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH]
|
v = line[/"([^"]+)"/, 1] and v[match] == version[match]
|
||||||
}
|
}
|
||||||
|
|
||||||
if release_line
|
if release_line
|
||||||
@@ -46,7 +51,7 @@ engines.each do |engine|
|
|||||||
file = "#{__dir__}/README.md"
|
file = "#{__dir__}/README.md"
|
||||||
lines = File.readlines(file)
|
lines = File.readlines(file)
|
||||||
engine_line = lines.find { |line| line.start_with?("| `#{engine}`") }
|
engine_line = lines.find { |line| line.start_with?("| `#{engine}`") }
|
||||||
engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+)/) do
|
engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+(?:-\w+)?)/) do
|
||||||
if Gem::Version.new(version) > Gem::Version.new($2)
|
if Gem::Version.new(version) > Gem::Version.new($2)
|
||||||
"#{$1} #{version}"
|
"#{$1} #{version}"
|
||||||
else
|
else
|
||||||
+8
-7
@@ -22,14 +22,15 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/ruby/setup-ruby",
|
"homepage": "https://github.com/ruby/setup-ruby",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^1.0.8",
|
"@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",
|
||||||
"semver": "^6.1.0"
|
"linux-os-info": "^2.0.0",
|
||||||
|
"semver": "^7.3.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vercel/ncc": "^0.31.1"
|
"@vercel/ncc": "^0.33.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-4
@@ -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
@@ -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}"
|
||||||
@@ -7,28 +7,38 @@
|
|||||||
"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.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.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.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.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.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.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.0-preview1", "3.1.0", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7",
|
||||||
"head", "debug"
|
"3.2.0-preview1", "3.2.0-preview2", "3.2.0-preview3", "3.2.0-rc1", "3.2.0", "3.2.1", "3.2.2", "3.2.3", "3.2.4", "3.2.5", "3.2.6", "3.2.7", "3.2.8",
|
||||||
|
"3.3.0-preview1", "3.3.0-preview2", "3.3.0-preview3", "3.3.0-rc1", "3.3.0", "3.3.1", "3.3.2", "3.3.3", "3.3.4", "3.3.5", "3.3.6", "3.3.7", "3.3.8",
|
||||||
|
"3.4.0-preview1", "3.4.0-preview2", "3.4.0-rc1", "3.4.0", "3.4.1", "3.4.2", "3.4.3", "3.4.4",
|
||||||
|
"3.5.0-preview1",
|
||||||
|
"head", "debug", "asan", "3.4-asan"
|
||||||
],
|
],
|
||||||
"jruby": [
|
"jruby": [
|
||||||
"9.1.17.0",
|
"9.1.17.0",
|
||||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0", "9.2.14.0", "9.2.15.0", "9.2.16.0", "9.2.17.0", "9.2.18.0", "9.2.19.0", "9.2.20.0", "9.2.20.1",
|
"9.2.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.0.0", "9.3.1.0", "9.3.2.0", "9.3.3.0", "9.3.4.0", "9.3.6.0", "9.3.7.0", "9.3.8.0", "9.3.9.0", "9.3.10.0", "9.3.11.0", "9.3.13.0", "9.3.14.0", "9.3.15.0",
|
||||||
|
"9.4.0.0", "9.4.1.0", "9.4.2.0", "9.4.3.0", "9.4.4.0", "9.4.5.0", "9.4.6.0", "9.4.7.0", "9.4.8.0", "9.4.9.0", "9.4.10.0", "9.4.11.0", "9.4.12.0", "9.4.12.1",
|
||||||
|
"10.0.0.0", "10.0.0.1",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"truffleruby": [
|
"truffleruby": [
|
||||||
"19.3.0", "19.3.1",
|
"19.3.0", "19.3.1",
|
||||||
"20.0.0", "20.1.0", "20.2.0", "20.3.0",
|
"20.0.0", "20.1.0", "20.2.0", "20.3.0",
|
||||||
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0",
|
"21.0.0", "21.1.0", "21.2.0", "21.2.0.1", "21.3.0",
|
||||||
"22.0.0.2",
|
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
|
||||||
|
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
|
||||||
|
"24.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2", "24.2.0", "24.2.1",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"truffleruby+graalvm": [
|
"truffleruby+graalvm": [
|
||||||
"21.2.0", "21.3.0",
|
"21.2.0", "21.3.0",
|
||||||
"22.0.0.2",
|
"22.0.0.2", "22.1.0", "22.2.0", "22.3.0", "22.3.1",
|
||||||
|
"23.0.0-preview1", "23.0.0", "23.1.0", "23.1.1", "23.1.2",
|
||||||
|
"24.0.0", "24.0.1", "24.0.2", "24.1.0", "24.1.1", "24.1.2", "24.2.0", "24.2.1",
|
||||||
"head"
|
"head"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+69
-38
@@ -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')
|
||||||
@@ -19,11 +20,25 @@ export function getAvailableVersions(platform, 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}`)
|
||||||
@@ -31,52 +46,46 @@ export async function install(platform, engine, version) {
|
|||||||
rubyPrefix = path.join(os.homedir(), '.rubies', `${engine}-${version}`)
|
rubyPrefix = path.join(os.homedir(), '.rubies', `${engine}-${version}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const paths = [path.join(rubyPrefix, 'bin')]
|
||||||
|
|
||||||
|
// JRuby can use compiled extension code via ffi, so make sure gcc exists.
|
||||||
|
if (platform.startsWith('windows') && engine === 'jruby') {
|
||||||
|
paths.push(...await require('./windows').installJRubyTools())
|
||||||
|
}
|
||||||
|
|
||||||
// Set the PATH now, so the MSYS2 'tar' is in Path on Windows
|
// Set the PATH now, so the MSYS2 'tar' is in Path on Windows
|
||||||
common.setupPath([path.join(rubyPrefix, 'bin')])
|
common.setupPath(paths)
|
||||||
|
|
||||||
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)
|
// Ensure JRuby has minimum Java version to run
|
||||||
}
|
if (engine === "jruby") {
|
||||||
|
await common.setupJavaHome(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 () => {
|
||||||
@@ -94,11 +103,29 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getDownloadURL(platform, engine, version) {
|
function getDownloadURL(platform, engine, version) {
|
||||||
let builderPlatform = platform
|
let builderPlatform = null
|
||||||
if (platform.startsWith('windows-')) {
|
if (platform.startsWith('windows-')) {
|
||||||
builderPlatform = 'windows-latest'
|
if (os.arch() === 'x64') {
|
||||||
|
builderPlatform = 'windows-latest'
|
||||||
|
} else if (os.arch() === 'arm64') {
|
||||||
|
builderPlatform = 'windows-arm64'
|
||||||
|
}
|
||||||
} 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'
|
||||||
|
}
|
||||||
|
} else if (platform.startsWith('ubuntu-')) {
|
||||||
|
if (os.arch() === 'x64') {
|
||||||
|
builderPlatform = platform
|
||||||
|
} else if (os.arch() === 'arm64') {
|
||||||
|
builderPlatform = `${platform}-arm64`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (builderPlatform === null) {
|
||||||
|
throw new Error(`Unknown download URL for platform ${platform}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (common.isHeadVersion(version)) {
|
if (common.isHeadVersion(version)) {
|
||||||
@@ -109,5 +136,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`
|
||||||
}
|
}
|
||||||
|
|||||||
+32
-2
@@ -1,8 +1,9 @@
|
|||||||
|
const common = require('./common')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const exec = require('@actions/exec')
|
const exec = require('@actions/exec')
|
||||||
const semver = require('semver')
|
const semver = require('semver')
|
||||||
|
|
||||||
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix, platform, engine, rubyVersion) {
|
||||||
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
const gem = path.join(rubyPrefix, 'bin', 'gem')
|
||||||
|
|
||||||
let gemVersion = ''
|
let gemVersion = ''
|
||||||
@@ -18,7 +19,7 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
|||||||
|
|
||||||
if (rubygemsVersionInput === 'latest') {
|
if (rubygemsVersionInput === 'latest') {
|
||||||
console.log('Updating RubyGems to latest version')
|
console.log('Updating RubyGems to latest version')
|
||||||
await exec.exec(gem, ['update', '--system'])
|
await rubygemsLatest(gem, platform, engine, rubyVersion)
|
||||||
} else if (semver.gt(rubygemsVersionInput, gemVersion)) {
|
} else if (semver.gt(rubygemsVersionInput, gemVersion)) {
|
||||||
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
|
console.log(`Updating RubyGems to ${rubygemsVersionInput}`)
|
||||||
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
|
await exec.exec(gem, ['update', '--system', rubygemsVersionInput])
|
||||||
@@ -28,3 +29,32 @@ export async function rubygemsUpdate(rubygemsVersionInput, rubyPrefix) {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Older RubyGems versions do not account for 'required_ruby_version' when
|
||||||
|
// running 'gem update --system', so we have to force a compatible version of
|
||||||
|
// rubygems-update. See https://github.com/ruby/setup-ruby/pull/551 and
|
||||||
|
// https://github.com/rubygems/rubygems/issues/7329
|
||||||
|
async function rubygemsLatest(gem, platform, engine, rubyVersion) {
|
||||||
|
if (engine === 'ruby') {
|
||||||
|
const floatVersion = common.floatVersion(rubyVersion)
|
||||||
|
if (common.isHeadVersion(rubyVersion)) {
|
||||||
|
console.log('Ruby master builds use included RubyGems')
|
||||||
|
} else if (floatVersion >= 3.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'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,18 +2,32 @@ require 'json'
|
|||||||
hash = File.read('ruby-builder-versions.json')
|
hash = File.read('ruby-builder-versions.json')
|
||||||
versions = JSON.load(hash).transform_keys(&:to_sym)
|
versions = JSON.load(hash).transform_keys(&:to_sym)
|
||||||
|
|
||||||
by_minor = versions[:ruby].group_by { |v| v[/^\d\.\d/] }
|
ONLY_LATEST_PATCH = ENV['ONLY_LATEST_PATCH']
|
||||||
|
|
||||||
(1..7).each do |minor|
|
def filter(versions)
|
||||||
p by_minor["2.#{minor}"].map { |v| "ruby-#{v}" }
|
versions -= %w[head]
|
||||||
|
if ONLY_LATEST_PATCH
|
||||||
|
versions = versions.group_by { |v| v[/^\d+\.\d+/] }.map { _2.last }
|
||||||
|
end
|
||||||
|
versions
|
||||||
|
end
|
||||||
|
|
||||||
|
if ONLY_LATEST_PATCH
|
||||||
|
puts filter(versions[:ruby]).map { |v| "ruby-#{v}" }.join(', ')
|
||||||
|
else
|
||||||
|
by_minor = versions[:ruby].group_by { |v| v[/^\d+\.\d+/] }
|
||||||
|
by_minor.each_pair do |minor, versions|
|
||||||
|
puts versions.map { |v| "ruby-#{v}" }.join(', ') if minor
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
puts
|
puts
|
||||||
p (versions[:truffleruby] - %w[head]).map { |v| "truffleruby-#{v}" }
|
puts filter(versions[:truffleruby]).map { |v| "truffleruby-#{v}" }.join(', ')
|
||||||
|
|
||||||
puts
|
puts
|
||||||
p (versions[:jruby] - %w[head]).map { |v| "jruby-#{v}" }
|
puts filter(versions[:"truffleruby+graalvm"]).map { |v| "truffleruby+graalvm-#{v}" }.join(', ')
|
||||||
|
|
||||||
(versions[:jruby] - %w[head]).each do |v|
|
puts
|
||||||
puts "- { os: windows-latest, jruby-version: #{v}, ruby: jruby-#{v} }"
|
puts filter(versions[:jruby]).map { |v| "jruby-#{v}" }.join(', ')
|
||||||
end
|
puts "For Windows:"
|
||||||
|
puts filter(versions[:jruby]).join(', ')
|
||||||
|
|||||||
@@ -0,0 +1,258 @@
|
|||||||
|
{
|
||||||
|
"2.0.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.1.9": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.2.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.3.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.3.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.3.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe"
|
||||||
|
},
|
||||||
|
"2.4.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.9": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.4.10": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.8": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.5.9": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.8": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.9": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.6.10": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"2.7.8": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.0.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.1.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14-openssl@1.1.7z"
|
||||||
|
},
|
||||||
|
"3.2.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.2.8": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.0": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.1": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.2": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.3": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.4": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.5": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.6": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.7": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.3.8": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.4.1": {
|
||||||
|
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64-mingw-w64@r688.7z",
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.4.2": {
|
||||||
|
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64-mingw-w64@r688.7z",
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"3.4.3": {
|
||||||
|
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64-mingw-w64@r688.7z",
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64-mingw-w64@r688-gcc@14.7z"
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"arm64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-clangarm64.7z",
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||||
|
},
|
||||||
|
"mingw": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-mingw64.7z"
|
||||||
|
},
|
||||||
|
"mswin": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/vcpkg-x64-windows.7z"
|
||||||
|
},
|
||||||
|
"ucrt": {
|
||||||
|
"x64": "https://github.com/ruby/setup-msys2-gcc/releases/latest/download/msys2-ucrt64.7z"
|
||||||
|
}
|
||||||
|
}
|
||||||
+256
-48
@@ -1,50 +1,258 @@
|
|||||||
{
|
{
|
||||||
"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": {
|
||||||
"2.1.9": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.0.0-p648/ruby-2.0.0-p648-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.3.0": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.0/ruby-2.3.0-x64-mingw32.7z",
|
"2.1.9": {
|
||||||
"2.3.1": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.1/ruby-2.3.1-x64-mingw32.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.1.9/ruby-2.1.9-x64-mingw32.7z"
|
||||||
"2.3.3": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/ruby-2.3.3-x64-mingw32.7z",
|
},
|
||||||
"2.4.1": "https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-2/rubyinstaller-2.4.1-2-x64.7z",
|
"2.2.6": {
|
||||||
"2.4.2": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.2-2/rubyinstaller-2.4.2-2-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.2.6/ruby-2.2.6-x64-mingw32.7z"
|
||||||
"2.4.3": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.3-2/rubyinstaller-2.4.3-2-x64.7z",
|
},
|
||||||
"2.4.4": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.4-2/rubyinstaller-2.4.4-2-x64.7z",
|
"2.3.0": {
|
||||||
"2.4.5": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.5-1/rubyinstaller-2.4.5-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.0/ruby-2.3.0-x64-mingw32.7z"
|
||||||
"2.4.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-1-x64.7z",
|
},
|
||||||
"2.4.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.7-1/rubyinstaller-2.4.7-1-x64.7z",
|
"2.3.1": {
|
||||||
"2.4.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.9-1/rubyinstaller-2.4.9-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.1/ruby-2.3.1-x64-mingw32.7z"
|
||||||
"2.4.10": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.10-1/rubyinstaller-2.4.10-1-x64.7z",
|
},
|
||||||
"2.5.0": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.0-2/rubyinstaller-2.5.0-2-x64.7z",
|
"2.3.3": {
|
||||||
"2.5.1": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller/releases/download/ruby-2.3.3/ruby-2.3.3-x64-mingw32.7z"
|
||||||
"2.5.3": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z",
|
},
|
||||||
"2.5.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.5-1/rubyinstaller-2.5.5-1-x64.7z",
|
"2.4.1": {
|
||||||
"2.5.6": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.6-1/rubyinstaller-2.5.6-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/2.4.1-2/rubyinstaller-2.4.1-2-x64.7z"
|
||||||
"2.5.7": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.7-1/rubyinstaller-2.5.7-1-x64.7z",
|
},
|
||||||
"2.5.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.8-2/rubyinstaller-2.5.8-2-x64.7z",
|
"2.4.2": {
|
||||||
"2.5.9": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.9-1/rubyinstaller-2.5.9-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.2-2/rubyinstaller-2.4.2-2-x64.7z"
|
||||||
"2.6.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.0-1/rubyinstaller-2.6.0-1-x64.7z",
|
},
|
||||||
"2.6.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.1-1/rubyinstaller-2.6.1-1-x64.7z",
|
"2.4.3": {
|
||||||
"2.6.2": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.3-2/rubyinstaller-2.4.3-2-x64.7z"
|
||||||
"2.6.3": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x64.7z",
|
},
|
||||||
"2.6.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.4-1/rubyinstaller-2.6.4-1-x64.7z",
|
"2.4.4": {
|
||||||
"2.6.5": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.4-2/rubyinstaller-2.4.4-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.4.5": {
|
||||||
"2.6.8": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.4.5-1/rubyinstaller-2.4.5-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.7.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z",
|
"2.4.6": {
|
||||||
"2.7.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.6-1/rubyinstaller-2.4.6-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.4.7": {
|
||||||
"2.7.4": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.7-1/rubyinstaller-2.4.7-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",
|
},
|
||||||
"3.0.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z",
|
"2.4.9": {
|
||||||
"3.0.1": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.9-1/rubyinstaller-2.4.9-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",
|
"2.4.10": {
|
||||||
"3.1.0": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.4.10-1/rubyinstaller-2.4.10-1-x64.7z"
|
||||||
"head": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z",
|
},
|
||||||
"mingw": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z",
|
"2.5.0": {
|
||||||
"mswin": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z",
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.0-2/rubyinstaller-2.5.0-2-x64.7z"
|
||||||
"ucrt": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z"
|
},
|
||||||
|
"2.5.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.1-2/rubyinstaller-2.5.1-2-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.5-1/rubyinstaller-2.5.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.6-1/rubyinstaller-2.5.6-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.7-1/rubyinstaller-2.5.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.8": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.8-2/rubyinstaller-2.5.8-2-x64.7z"
|
||||||
|
},
|
||||||
|
"2.5.9": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.5.9-1/rubyinstaller-2.5.9-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.0-1/rubyinstaller-2.6.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.1-1/rubyinstaller-2.6.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.3-1/rubyinstaller-2.6.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.4-1/rubyinstaller-2.6.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.5-1/rubyinstaller-2.6.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.6-2/rubyinstaller-2.6.6-2-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.7-1/rubyinstaller-2.6.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.8": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.8-1/rubyinstaller-2.6.8-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.9": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.9-1/rubyinstaller-2.6.9-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.6.10": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.10-1/rubyinstaller-2.6.10-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.1-1/rubyinstaller-2.7.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.2-1/rubyinstaller-2.7.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.3-1/rubyinstaller-2.7.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.4-1/rubyinstaller-2.7.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.5-1/rubyinstaller-2.7.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-2.7.6-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.7-1/rubyinstaller-2.7.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"2.7.8": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.8-1/rubyinstaller-2.7.8-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.1-1/rubyinstaller-3.0.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.2-1/rubyinstaller-3.0.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.3-1/rubyinstaller-3.0.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.4-1/rubyinstaller-3.0.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.5-1/rubyinstaller-3.0.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.6-1/rubyinstaller-3.0.6-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.0.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.7-1/rubyinstaller-3.0.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.0-1/rubyinstaller-3.1.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.1-1/rubyinstaller-3.1.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.2-1/rubyinstaller-3.1.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.3-1/rubyinstaller-3.1.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.4-1/rubyinstaller-3.1.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.5-1/rubyinstaller-3.1.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.6-1/rubyinstaller-3.1.6-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.1.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.1.7-1/rubyinstaller-3.1.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.0-1/rubyinstaller-3.2.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.1-1/rubyinstaller-3.2.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.2-1/rubyinstaller-3.2.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.3-1/rubyinstaller-3.2.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.4-1/rubyinstaller-3.2.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.5-1/rubyinstaller-3.2.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.6-1/rubyinstaller-3.2.6-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.7-1/rubyinstaller-3.2.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.2.8": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.2.8-1/rubyinstaller-3.2.8-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.0": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.0-1/rubyinstaller-3.3.0-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.1": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.1-1/rubyinstaller-3.3.1-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.2": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.2-1/rubyinstaller-3.3.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.3": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.3-1/rubyinstaller-3.3.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.4": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.4-1/rubyinstaller-3.3.4-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.5": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.5-1/rubyinstaller-3.3.5-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.6": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-2/rubyinstaller-3.3.6-2-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.7": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.7-1/rubyinstaller-3.3.7-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.3.8": {
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.8-1/rubyinstaller-3.3.8-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.4.1": {
|
||||||
|
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-arm.7z",
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.1-2/rubyinstaller-3.4.1-2-x64.7z"
|
||||||
|
},
|
||||||
|
"3.4.2": {
|
||||||
|
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-arm.7z",
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.2-1/rubyinstaller-3.4.2-1-x64.7z"
|
||||||
|
},
|
||||||
|
"3.4.3": {
|
||||||
|
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-arm.7z",
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.4.3-1/rubyinstaller-3.4.3-1-x64.7z"
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"arm64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-arm.7z",
|
||||||
|
"x64": "https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-head/rubyinstaller-head-x64.7z"
|
||||||
|
},
|
||||||
|
"mingw": {
|
||||||
|
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mingw.7z"
|
||||||
|
},
|
||||||
|
"mswin": {
|
||||||
|
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-mswin.7z"
|
||||||
|
},
|
||||||
|
"ucrt": {
|
||||||
|
"x64": "https://github.com/MSP-Greg/ruby-loco/releases/download/ruby-master/ruby-ucrt.7z"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+157
-190
@@ -1,142 +1,104 @@
|
|||||||
// 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
|
||||||
|
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
const os = require('os')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const cp = require('child_process')
|
const cp = require('child_process')
|
||||||
const core = require('@actions/core')
|
const core = require('@actions/core')
|
||||||
const exec = require('@actions/exec')
|
const exec = require('@actions/exec')
|
||||||
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.json')
|
const rubyInstallerVersions = require('./windows-versions.json')
|
||||||
|
const toolchainVersions = require('./windows-toolchain-versions.json')
|
||||||
|
|
||||||
const drive = common.drive
|
export function getAvailableVersions(_platform, engine) {
|
||||||
|
|
||||||
const msys2BasePath = 'C:\\msys64'
|
|
||||||
|
|
||||||
// needed for 2.0-2.3, and mswin, cert file used by Git for Windows
|
|
||||||
const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
|
|
||||||
|
|
||||||
// location & path for old RubyInstaller DevKit (MSYS1), Ruby 2.0-2.3
|
|
||||||
const msys1 = `${drive}:\\DevKit64`
|
|
||||||
const msysPathEntries = [`${msys1}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1}\\mingw\\bin`, `${msys1}\\bin`]
|
|
||||||
|
|
||||||
const virtualEnv = common.getVirtualEnvironmentName()
|
|
||||||
|
|
||||||
export function getAvailableVersions(platform, engine) {
|
|
||||||
if (engine === 'ruby') {
|
if (engine === 'ruby') {
|
||||||
return Object.keys(rubyInstallerVersions)
|
return Object.keys(rubyInstallerVersions).filter(version => os.arch() in rubyInstallerVersions[version])
|
||||||
} else {
|
} else {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function install(platform, engine, version) {
|
export async function install(platform, engine, version) {
|
||||||
const url = rubyInstallerVersions[version]
|
const url = rubyInstallerVersions[version][os.arch()]
|
||||||
|
|
||||||
// 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(virtualEnv)
|
|
||||||
|
|
||||||
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}`)
|
||||||
}
|
}
|
||||||
const base = url.slice(url.lastIndexOf('/') + 1, url.length - '.7z'.length)
|
const base = path.posix.basename(url, '.7z')
|
||||||
|
|
||||||
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 = `${common.drive}:\\${base}`
|
||||||
}
|
}
|
||||||
|
|
||||||
let toolchainPaths = (version === 'mswin') ? await setupMSWin() : await setupMingw(version)
|
|
||||||
|
|
||||||
if (!inToolCache) {
|
if (!inToolCache) {
|
||||||
await downloadAndExtract(engine, version, url, base, rubyPrefix);
|
await downloadAndExtract(engine, version, url, base, rubyPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
const msys2Type = common.setupPath([`${rubyPrefix}\\bin`, ...toolchainPaths])
|
const paths = [`${rubyPrefix}\\bin`]
|
||||||
|
const windowsToolchain = core.getInput('windows-toolchain')
|
||||||
// install msys2 tools for all Ruby versions, only install mingw or ucrt for Rubies >= 2.4
|
if (windowsToolchain === 'none') {
|
||||||
|
common.setupPath(paths)
|
||||||
if (!hasMSYS2PreInstalled) {
|
return rubyPrefix
|
||||||
await installMSYS2Tools()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// windows 2016 and 2019 need ucrt64 installed, 2022 and future images need
|
const toolchainUrl = toolchainVersions[version][os.arch()]
|
||||||
// ucrt64 or mingw64 installed, depending on Ruby version
|
|
||||||
if (((msys2Type === 'ucrt64') || !hasMSYS2PreInstalled) && common.floatVersion(version) >= 2.4) {
|
|
||||||
await installGCCTools(msys2Type)
|
|
||||||
}
|
|
||||||
|
|
||||||
const ridk = `${rubyPrefix}\\bin\\ridk.cmd`
|
// Examples:
|
||||||
if (fs.existsSync(ridk)) {
|
// - DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
|
||||||
await common.measure('Adding ridk env variables', async () => addRidkEnv(ridk))
|
// - msys2-clangarm64.7z
|
||||||
|
// - vcpkg-x64-windows.7z
|
||||||
|
const toolchainName = path.posix.basename(toolchainUrl).split('-')[0].toLowerCase()
|
||||||
|
|
||||||
|
if (toolchainName === 'msys2') {
|
||||||
|
paths.push(...await installMSYS2(toolchainUrl, rubyPrefix))
|
||||||
|
} else {
|
||||||
|
if (toolchainName === 'vcpkg') {
|
||||||
|
paths.push(...await installVCPKG(toolchainUrl))
|
||||||
|
} else if (toolchainName === 'devkit') {
|
||||||
|
paths.push(...await installMSYS1(toolchainUrl))
|
||||||
|
} else {
|
||||||
|
throw new Error(`Unknown toolchain type: ${toolchainUrl}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Install msys2 for other rubies to provide better command line tools
|
||||||
|
paths.push(...await installMSYS2(toolchainVersions['head'][os.arch()]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
common.setupPath(paths)
|
||||||
return rubyPrefix
|
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) {
|
|
||||||
const downloadPath = await common.measure(`Downloading ${type} build tools`, async () => {
|
|
||||||
let url = `https://github.com/MSP-Greg/setup-msys2-gcc/releases/download/msys2-gcc-pkgs/${type}.7z`
|
|
||||||
console.log(url)
|
|
||||||
return await tc.downloadTool(url)
|
|
||||||
})
|
|
||||||
|
|
||||||
await common.measure(`Extracting ${type} build tools`, async () =>
|
|
||||||
// -aoa overwrite existing, -bd disable progress indicator
|
|
||||||
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 = `https://github.com/MSP-Greg/setup-msys2-gcc/releases/download/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.rmdirSync(`${msys2BasePath}\\var\\lib\\pacman\\local`, { recursive: true, force: true })
|
|
||||||
|
|
||||||
await common.measure(`Extracting msys2 build tools`, async () =>
|
|
||||||
// -aoa overwrite existing, -bd disable progress indicator
|
|
||||||
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()
|
|
||||||
await installGCCTools('mingw64')
|
|
||||||
}
|
|
||||||
|
|
||||||
async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
|
async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
|
||||||
const parentDir = path.dirname(rubyPrefix)
|
|
||||||
|
|
||||||
const downloadPath = await common.measure('Downloading Ruby', async () => {
|
const downloadPath = await common.measure('Downloading Ruby', async () => {
|
||||||
console.log(url)
|
console.log(url)
|
||||||
return await tc.downloadTool(url)
|
return await tc.downloadTool(url)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const extractPath = process.env.RUNNER_TEMP
|
||||||
await common.measure('Extracting Ruby', async () =>
|
await common.measure('Extracting Ruby', async () =>
|
||||||
// -bd disable progress indicator, -xr extract but exclude share\doc files
|
// -xr extract but exclude share\doc files
|
||||||
exec.exec('7z', ['x', downloadPath, '-bd', `-xr!${base}\\share\\doc`, `-o${parentDir}`], { silent: true }))
|
exec.exec('7z', ['x', downloadPath, '-bd', `-xr!${base}\\share\\doc`, `-o${extractPath}`], { silent: true }))
|
||||||
|
|
||||||
if (base !== path.basename(rubyPrefix)) {
|
const parentDir = path.dirname(rubyPrefix)
|
||||||
await io.mv(path.join(parentDir, base), rubyPrefix)
|
if (!fs.existsSync(parentDir)) {
|
||||||
|
fs.mkdirSync(parentDir, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
const extractedPath = path.join(extractPath, base)
|
||||||
|
if (extractedPath[0] === rubyPrefix[0]) {
|
||||||
|
fs.renameSync(extractedPath, rubyPrefix)
|
||||||
|
} else {
|
||||||
|
fs.symlinkSync(extractedPath, rubyPrefix, 'junction')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (common.shouldUseToolCache(engine, version)) {
|
if (common.shouldUseToolCache(engine, version)) {
|
||||||
@@ -144,128 +106,133 @@ async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setupMingw(version) {
|
export async function installJRubyTools() {
|
||||||
core.exportVariable('MAKE', 'make.exe')
|
return await installMSYS2(toolchainVersions['head'][os.arch()])
|
||||||
|
|
||||||
// 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) {
|
|
||||||
core.exportVariable('SSL_CERT_FILE', certFile)
|
|
||||||
await common.measure('Installing MSYS1', async () => installMSYS1(version))
|
|
||||||
return msysPathEntries
|
|
||||||
} else {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ruby 2.0-2.3
|
async function installMSYS2(url, rubyPrefix = process.env.RUNNER_TEMP) {
|
||||||
async function installMSYS1(version) {
|
const downloadPath = await common.measure('Downloading msys2 build tools', async () => {
|
||||||
const url = 'https://github.com/oneclick/rubyinstaller/releases/download/devkit-4.7.2/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe'
|
console.log(url)
|
||||||
const downloadPath = await tc.downloadTool(url)
|
return await tc.downloadTool(url)
|
||||||
await exec.exec('7z', ['x', downloadPath, `-o${msys1}`], { silent: true })
|
})
|
||||||
|
|
||||||
// below are set in the old devkit.rb file ?
|
const extractPath = path.join(process.env.RUNNER_TEMP, 'msys64')
|
||||||
core.exportVariable('RI_DEVKIT', msys1)
|
await common.measure('Extracting msys2 build tools', async () =>
|
||||||
core.exportVariable('CC' , 'gcc')
|
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${extractPath}`], { silent: true }))
|
||||||
core.exportVariable('CXX', 'g++')
|
|
||||||
core.exportVariable('CPP', 'cpp')
|
// https://github.com/oneclick/rubyinstaller2/blob/HEAD/lib/ruby_installer/build/msys2_installation.rb
|
||||||
core.info(`Installed RubyInstaller DevKit for Ruby ${version}`)
|
//
|
||||||
|
// ri2 searches for msys64 in the following order:
|
||||||
|
// - ENV["MSYS2_PATH"]
|
||||||
|
// - File.join(RbConfig::TOPDIR, "msys64")
|
||||||
|
// - File.join(File.dirname(RbConfig::TOPDIR), "msys64")
|
||||||
|
// - "C:\msys64"
|
||||||
|
// - ...
|
||||||
|
//
|
||||||
|
// The first option ENV["MSYS2_PATH"] is only supported in ruby >=3.0.7.
|
||||||
|
// Therefore we use the second option to avoid conflict with existing "C:\msys64"
|
||||||
|
const msys2Path = path.join(rubyPrefix, 'msys64')
|
||||||
|
if (extractPath !== msys2Path) {
|
||||||
|
fs.symlinkSync(extractPath, msys2Path, 'junction')
|
||||||
|
}
|
||||||
|
|
||||||
|
const ridk = `${rubyPrefix}\\bin\\ridk.cmd`
|
||||||
|
if (fs.existsSync(ridk)) {
|
||||||
|
await common.measure('Setting up ridk environment', async () => exportCommandEnv(`set "MAKE=make" && "${ridk}" enable`))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Examples:
|
||||||
|
// - msys2-clangarm64.7z
|
||||||
|
// - msys2-ucrt64-gcc@14.7z
|
||||||
|
// - msys2-mingw64-gcc@14-openssl@1.1.7z
|
||||||
|
const msys2Type = path.posix.basename(url).split(/[-.]/)[1]
|
||||||
|
return [`${msys2Path}\\${msys2Type}\\bin`, `${msys2Path}\\usr\\bin`]
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setupMSWin() {
|
async function installMSYS1(url) {
|
||||||
core.exportVariable('MAKE', 'nmake.exe')
|
const certFile = [
|
||||||
|
'C:\\Program Files\\Git\\mingw64\\etc\\ssl\\cert.pem',
|
||||||
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem',
|
||||||
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
].find(file => fs.existsSync(file))
|
||||||
if (!fs.existsSync(certsDir)) {
|
if (certFile === undefined) {
|
||||||
fs.mkdirSync(certsDir)
|
throw new Error("Cannot find Git's cert file")
|
||||||
}
|
}
|
||||||
|
|
||||||
// cert.pem location is hard-coded by OpenSSL msvc builds
|
const downloadPath = await common.measure('Downloading msys1 build tools', async () => {
|
||||||
const cert = 'C:\\Program Files\\Common Files\\SSL\\cert.pem'
|
console.log(url)
|
||||||
if (!fs.existsSync(cert)) {
|
return await tc.downloadTool(url)
|
||||||
fs.copyFileSync(certFile, cert)
|
})
|
||||||
}
|
|
||||||
|
|
||||||
return await common.measure('Setting up MSVC environment', async () => addVCVARSEnv())
|
const msys1Path = `${common.drive}:\\DevKit64`
|
||||||
|
await common.measure('Extracting msys1 build tools', async () =>
|
||||||
|
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${msys1Path}`], { silent: true }))
|
||||||
|
|
||||||
|
await common.measure('Setting up DevKit environment', async () => {
|
||||||
|
// ssl dlls cause issues with msys1 Rubies
|
||||||
|
const sys32 = 'C:\\Windows\\System32\\'
|
||||||
|
const badFiles = [`${sys32}libcrypto-1_1-x64.dll`, `${sys32}libssl-1_1-x64.dll`]
|
||||||
|
const existing = badFiles.filter((dll) => fs.existsSync(dll))
|
||||||
|
if (existing.length > 0) {
|
||||||
|
core.warning(`Renaming ${existing.join(' and ')} to avoid dll resolution conflicts on Ruby < 2.4`)
|
||||||
|
existing.forEach(dll => fs.renameSync(dll, `${dll}_`))
|
||||||
|
}
|
||||||
|
|
||||||
|
exportEnv({
|
||||||
|
CC: 'gcc',
|
||||||
|
CPP: 'cpp',
|
||||||
|
CXX: 'g++',
|
||||||
|
MAKE: 'make',
|
||||||
|
RI_DEVKIT: msys1Path,
|
||||||
|
SSL_CERT_FILE: certFile
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return [`${msys1Path}\\mingw\\x86_64-w64-mingw32\\bin`, `${msys1Path}\\mingw\\bin`, `${msys1Path}\\bin`]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sets MSVC environment for use in Actions
|
/* 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
|
|
||||||
* this assumes a single Visual Studio version being available in the Windows images */
|
* this assumes a single Visual Studio version being available in the Windows images */
|
||||||
export function addVCVARSEnv() {
|
async function installVCPKG(url) {
|
||||||
let vcVars = ''
|
const downloadPath = await common.measure('Downloading mswin vcpkg packages', async () => {
|
||||||
switch (virtualEnv) {
|
console.log(url)
|
||||||
case 'windows-2016':
|
return await tc.downloadTool(url)
|
||||||
vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
|
|
||||||
break
|
|
||||||
case 'windows-2019':
|
|
||||||
vcVars = '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
|
|
||||||
break
|
|
||||||
case 'windows-2022':
|
|
||||||
vcVars = '"C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"'
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
throw new Error(`Unknown Windows Image: ${virtualEnv}`)
|
|
||||||
}
|
|
||||||
core.exportVariable('VCVARS', vcVars)
|
|
||||||
|
|
||||||
let newEnv = new Map()
|
|
||||||
let cmd = `cmd.exe /c "${vcVars} && 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)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
let newPathEntries = undefined
|
const extractPath = process.env.VCPKG_INSTALLATION_ROOT
|
||||||
for (let [k, v] of newEnv) {
|
await common.measure('Extracting mswin vcpkg packages', async () =>
|
||||||
if (process.env[k] !== v) {
|
exec.exec('7z', ['x', downloadPath, '-aoa', '-bd', `-o${extractPath}`], { silent: true }))
|
||||||
if (/^Path$/i.test(k)) {
|
|
||||||
const newPathStr = v.replace(`${path.delimiter}${process.env['Path']}`, '')
|
return await common.measure('Setting up MSVC environment', async () => {
|
||||||
newPathEntries = newPathStr.split(path.delimiter)
|
const cmd = 'vswhere -latest -property installationPath'
|
||||||
} else {
|
const vcVarsBat = os.arch() === 'arm64' ? 'vcvarsarm64.bat' : 'vcvars64.bat'
|
||||||
core.exportVariable(k, v)
|
const vcVars = `${cp.execSync(cmd).toString().trim()}\\VC\\Auxiliary\\Build\\${vcVarsBat}`
|
||||||
}
|
|
||||||
|
if (!fs.existsSync(vcVars)) {
|
||||||
|
throw new Error(`Missing vcVars file: ${vcVars}`)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return newPathEntries
|
|
||||||
}
|
|
||||||
|
|
||||||
// ssl files cause issues with non RI2 Rubies (<2.4) and ruby/ruby's CI from build folder due to dll resolution
|
return exportCommandEnv(`set "MAKE=nmake" && "${vcVars}"`)
|
||||||
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) {
|
// Run a cmd command, export its environment, and return new paths
|
||||||
|
function exportCommandEnv(command) {
|
||||||
|
const cmd = `cmd.exe /s /c "${command} >NUL && "${process.execPath}" -e console.log(JSON.stringify(process.env))"`
|
||||||
|
const env = JSON.parse(cp.execSync(cmd).toString())
|
||||||
|
|
||||||
|
const paths = env.Path.replace(`${path.delimiter}${process.env.Path}`, '').split(path.delimiter)
|
||||||
|
delete env.Path
|
||||||
|
|
||||||
|
exportEnv(env)
|
||||||
|
return paths
|
||||||
|
}
|
||||||
|
|
||||||
|
function exportEnv(env) {
|
||||||
|
for (const [k, v] of Object.entries(env)) {
|
||||||
if (process.env[k] !== v) {
|
if (process.env[k] !== v) {
|
||||||
if (!/^Path$/i.test(k)) {
|
console.log(`${k}=${v}`)
|
||||||
console.log(`${k}=${v}`)
|
core.exportVariable(k, v)
|
||||||
core.exportVariable(k, v)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,30 +2,35 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@actions/cache@^1.0.8":
|
"@actions/cache@^4.0.0":
|
||||||
version "1.0.8"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.8.tgz#426ad3a2127b35a4e21ad906e02202dc8b96663f"
|
resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-4.0.0.tgz#24845cced4326b11b6115fd3e2cff8e7ea3afed2"
|
||||||
integrity sha512-GWNNB67w93HGJRQXlsV56YqrdAuDoP3esK/mo5mzU8WoDCVjtQgJGsTdkYUX7brswtT7xnI30bWNo1WLKQ8FZQ==
|
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"
|
||||||
|
twirp-ts "^2.5.0"
|
||||||
|
|
||||||
"@actions/core@^1.2.6", "@actions/core@^1.4.0":
|
"@actions/core@^1.11.1", "@actions/core@^1.2.6":
|
||||||
version "1.4.0"
|
version "1.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.4.0.tgz#cf2e6ee317e314b03886adfeb20e448d50d6e524"
|
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172"
|
||||||
integrity sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg==
|
integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==
|
||||||
|
dependencies:
|
||||||
|
"@actions/exec" "^1.1.1"
|
||||||
|
"@actions/http-client" "^2.0.1"
|
||||||
|
|
||||||
"@actions/exec@^1.0.0", "@actions/exec@^1.0.1", "@actions/exec@^1.1.0":
|
"@actions/exec@^1.0.0", "@actions/exec@^1.0.1", "@actions/exec@^1.1.1":
|
||||||
version "1.1.0"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.0.tgz#53441d968e56d2fec69ad3f15773d4d94e01162c"
|
resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611"
|
||||||
integrity sha512-LImpN9AY0J1R1mEYJjVJfSZWU4zYOlEcwSTgPve1rFQqK5AwrEs6uWW5Rv70gbDIQIAUwI86z6B+9mPK4w9Sbg==
|
integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@actions/io" "^1.0.1"
|
"@actions/io" "^1.0.1"
|
||||||
|
|
||||||
@@ -37,168 +42,199 @@
|
|||||||
"@actions/core" "^1.2.6"
|
"@actions/core" "^1.2.6"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
"@actions/http-client@^1.0.8", "@actions/http-client@^1.0.9":
|
"@actions/http-client@^2.0.1", "@actions/http-client@^2.1.1":
|
||||||
version "1.0.11"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0"
|
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.1.1.tgz#a8e97699c315bed0ecaeaaeb640948470d4586a0"
|
||||||
integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==
|
integrity sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tunnel "0.0.6"
|
tunnel "^0.0.6"
|
||||||
|
|
||||||
"@actions/io@^1.0.1", "@actions/io@^1.1.1":
|
"@actions/io@^1.0.1", "@actions/io@^1.1.1", "@actions/io@^1.1.2":
|
||||||
version "1.1.1"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.1.tgz#4a157406309e212ab27ed3ae30e8c1d641686a66"
|
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71"
|
||||||
integrity sha512-Qi4JoKXjmE0O67wAOH6y0n26QXhMKMFo7GD/4IXNVcrtLjUlGjGuVys6pQgwF3ArfGTQu0XpqaNr0YhED2RaRA==
|
integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==
|
||||||
|
|
||||||
"@actions/tool-cache@^1.7.1":
|
"@actions/tool-cache@^2":
|
||||||
version "1.7.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-1.7.1.tgz#f9f4f822cb639da6facdf3e22ea571361ab26f92"
|
resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720"
|
||||||
integrity sha512-y1xxxOhXaBUIUit3lhepmu/0xdgiTMpnZRLmVdtF0hTm521doi+MdRRRP62czHvM7wxH6epj4JPNJQ3iJpOrkQ==
|
integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@actions/core" "^1.2.6"
|
"@actions/core" "^1.2.6"
|
||||||
"@actions/exec" "^1.0.0"
|
"@actions/exec" "^1.0.0"
|
||||||
"@actions/http-client" "^1.0.8"
|
"@actions/http-client" "^2.0.1"
|
||||||
"@actions/io" "^1.1.1"
|
"@actions/io" "^1.1.1"
|
||||||
semver "^6.1.0"
|
semver "^6.1.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
"@azure/abort-controller@^1.0.0":
|
"@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0":
|
||||||
version "1.0.4"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd"
|
resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249"
|
||||||
integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw==
|
integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@azure/core-asynciterator-polyfill@^1.0.0":
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7"
|
|
||||||
integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg==
|
|
||||||
|
|
||||||
"@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":
|
"@azure/core-http@^3.0.0":
|
||||||
version "1.2.6"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-1.2.6.tgz#9cd508418572d2062fd3175274219438772bdb65"
|
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-3.0.3.tgz#792c0af7d8ebec7d34a99bbd7108aa370cd49948"
|
||||||
integrity sha512-odtH7UMKtekc5YQ86xg9GlVHNXR6pq2JgJ5FBo7/jbOjNGdBqcrIVrZx2bevXVJz/uUTSx6vUf62gzTXTfqYSQ==
|
integrity sha512-QMib3wXotJMFhHgmJBPUF9YsyErw34H0XDFQd9CauH7TPB+RGcyl9Ayy7iURtJB04ngXhE6YwrQsWDXlSLrilg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@azure/abort-controller" "^1.0.0"
|
"@azure/abort-controller" "^1.0.0"
|
||||||
"@azure/core-asynciterator-polyfill" "^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/core-util" "^1.1.1"
|
||||||
"@azure/logger" "^1.0.0"
|
"@azure/logger" "^1.0.0"
|
||||||
"@types/node-fetch" "^2.5.0"
|
"@types/node-fetch" "^2.5.0"
|
||||||
"@types/tunnel" "^0.0.1"
|
"@types/tunnel" "^0.0.3"
|
||||||
form-data "^3.0.0"
|
form-data "^4.0.0"
|
||||||
node-fetch "^2.6.0"
|
node-fetch "^2.6.7"
|
||||||
process "^0.11.10"
|
process "^0.11.10"
|
||||||
tough-cookie "^4.0.0"
|
|
||||||
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.1.3"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc"
|
resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.5.0.tgz#5a5b09353e636072e6a7fc38f7879e11d0afb15f"
|
||||||
integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A==
|
integrity sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@azure/core-asynciterator-polyfill" "^1.0.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@azure/core-tracing@1.0.0-preview.11":
|
"@azure/core-tracing@1.0.0-preview.13":
|
||||||
version "1.0.0-preview.11"
|
version "1.0.0-preview.13"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.11.tgz#bdfb2ba73cd6c39b7d6c207b9522eb98e08b4ddd"
|
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
|
||||||
integrity sha512-frF0pJc9HTmKncVokhBxCqipjbql02DThQ1ZJ9wLi7SDMLdPAFyDI5xZNzX5guLz+/DtPkY+SGK2li9FIXqshQ==
|
integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@opencensus/web-types" "0.0.7"
|
"@opentelemetry/api" "^1.0.1"
|
||||||
"@opentelemetry/api" "1.0.0-rc.0"
|
tslib "^2.2.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"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.4.0.tgz#c120a56b3e48a9e4d20619a0b00268ae9de891c7"
|
||||||
|
integrity sha512-eGAyJpm3skVQoLiRqm/xPa+SXi/NPDdSHMxbRAz2lSprd+Zs+qrpQGQQ2VQ3Nttu+nSZR4XoYQC71LbEI7jsig==
|
||||||
|
dependencies:
|
||||||
|
"@azure/abort-controller" "^1.0.0"
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@azure/logger@^1.0.0":
|
"@azure/logger@^1.0.0":
|
||||||
version "1.0.2"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787"
|
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.4.tgz#28bc6d0e5b3c38ef29296b32d35da4e483593fa1"
|
||||||
integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw==
|
integrity sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@azure/ms-rest-js@^2.0.7":
|
"@azure/ms-rest-js@^2.6.0":
|
||||||
version "2.5.2"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.5.2.tgz#41d2e12456447dc21b4aaa09e74d1550eaf38f14"
|
resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz#8639065577ffdf4946951e1d246334ebfd72d537"
|
||||||
integrity sha512-9nCuuoYwHZEZw1t0MVtENH+c1k2R4maYAlBBDSZhZu6bEucyfYUUigNXXKjt2cFBt4sO+sTzi0uI0f/fiPFr+Q==
|
integrity sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@azure/core-auth" "^1.1.4"
|
"@azure/core-auth" "^1.1.4"
|
||||||
abort-controller "^3.0.0"
|
abort-controller "^3.0.0"
|
||||||
form-data "^2.5.0"
|
form-data "^2.5.0"
|
||||||
node-fetch "^2.6.0"
|
node-fetch "^2.6.7"
|
||||||
tough-cookie "^3.0.1"
|
|
||||||
tslib "^1.10.0"
|
tslib "^1.10.0"
|
||||||
tunnel "0.0.6"
|
tunnel "0.0.6"
|
||||||
uuid "^3.3.2"
|
uuid "^8.3.2"
|
||||||
xml2js "^0.4.19"
|
xml2js "^0.5.0"
|
||||||
|
|
||||||
"@azure/storage-blob@^12.1.2":
|
"@azure/storage-blob@^12.13.0":
|
||||||
version "12.6.0"
|
version "12.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.6.0.tgz#9905d80e5f908a573cc65e1cb8302abc32818844"
|
resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.16.0.tgz#c41fb1e538d6f6e2a6756bfcc69382eededf4fa1"
|
||||||
integrity sha512-cAzsae+5ZdhugQfIT7o5SlVyF2Sc+HygZdPO41ZYdXklfGUyEt+5K4PyM5HQDc0MTVt6x7+waXcaAXT2eF9E6A==
|
integrity sha512-jz33rUSUGUB65FgYrTRgRDjG6hdPHwfvHe+g/UrwVG8MsyLqSxg9TaW7Yuhjxu1v1OZ5xam2NU6+IpCN0xJO8Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@azure/abort-controller" "^1.0.0"
|
"@azure/abort-controller" "^1.0.0"
|
||||||
"@azure/core-http" "^1.2.0"
|
"@azure/core-http" "^3.0.0"
|
||||||
"@azure/core-lro" "^1.0.2"
|
"@azure/core-lro" "^2.2.0"
|
||||||
"@azure/core-paging" "^1.1.1"
|
"@azure/core-paging" "^1.1.1"
|
||||||
"@azure/core-tracing" "1.0.0-preview.11"
|
"@azure/core-tracing" "1.0.0-preview.13"
|
||||||
"@azure/logger" "^1.0.0"
|
"@azure/logger" "^1.0.0"
|
||||||
events "^3.0.0"
|
events "^3.0.0"
|
||||||
tslib "^2.0.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@opencensus/web-types@0.0.7":
|
"@opentelemetry/api@^1.0.1":
|
||||||
version "0.0.7"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a"
|
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.6.0.tgz#de2c6823203d6f319511898bb5de7e70f5267e19"
|
||||||
integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g==
|
integrity sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==
|
||||||
|
|
||||||
"@opentelemetry/api@1.0.0-rc.0":
|
"@protobuf-ts/plugin-framework@^2.0.7", "@protobuf-ts/plugin-framework@^2.9.4":
|
||||||
version "1.0.0-rc.0"
|
version "2.9.4"
|
||||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.0-rc.0.tgz#0c7c3f5e1285f99cedb563d74ad1adb9822b5144"
|
resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz#d7a617dedda4a12c568fdc1db5aa67d5e4da2406"
|
||||||
integrity sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ==
|
integrity sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==
|
||||||
|
dependencies:
|
||||||
|
"@protobuf-ts/runtime" "^2.9.4"
|
||||||
|
typescript "^3.9"
|
||||||
|
|
||||||
|
"@protobuf-ts/plugin@^2.9.4":
|
||||||
|
version "2.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin/-/plugin-2.9.4.tgz#4e593e59013aaad313e7abbabe6e61964ef0ca28"
|
||||||
|
integrity sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==
|
||||||
|
dependencies:
|
||||||
|
"@protobuf-ts/plugin-framework" "^2.9.4"
|
||||||
|
"@protobuf-ts/protoc" "^2.9.4"
|
||||||
|
"@protobuf-ts/runtime" "^2.9.4"
|
||||||
|
"@protobuf-ts/runtime-rpc" "^2.9.4"
|
||||||
|
typescript "^3.9"
|
||||||
|
|
||||||
|
"@protobuf-ts/protoc@^2.9.4":
|
||||||
|
version "2.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobuf-ts/protoc/-/protoc-2.9.4.tgz#a92262ee64d252998540238701d2140f4ffec081"
|
||||||
|
integrity sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==
|
||||||
|
|
||||||
|
"@protobuf-ts/runtime-rpc@^2.9.4":
|
||||||
|
version "2.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b"
|
||||||
|
integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==
|
||||||
|
dependencies:
|
||||||
|
"@protobuf-ts/runtime" "^2.9.4"
|
||||||
|
|
||||||
|
"@protobuf-ts/runtime@^2.9.4":
|
||||||
|
version "2.9.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f"
|
||||||
|
integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==
|
||||||
|
|
||||||
"@types/node-fetch@^2.5.0":
|
"@types/node-fetch@^2.5.0":
|
||||||
version "2.5.10"
|
version "2.6.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132"
|
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.5.tgz#972756a9a0fe354b2886bf3defe667ddb4f0d30a"
|
||||||
integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==
|
integrity sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
form-data "^3.0.0"
|
form-data "^4.0.0"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "15.12.3"
|
version "20.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.3.tgz#2817bf5f25bc82f56579018c53f7d41b1830b1af"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12"
|
||||||
integrity sha512-SNt65CPCXvGNDZ3bvk1TQ0Qxoe3y1RKH88+wZ2Uf05dduBCqqFQ76ADP9pbT+Cpvj60SkRppMCh2Zo8tDixqjQ==
|
integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==
|
||||||
|
|
||||||
"@types/tunnel@^0.0.1":
|
"@types/tunnel@^0.0.3":
|
||||||
version "0.0.1"
|
version "0.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c"
|
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
|
||||||
integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==
|
integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@vercel/ncc@^0.31.1":
|
"@vercel/ncc@^0.33.4":
|
||||||
version "0.31.1"
|
version "0.33.4"
|
||||||
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.31.1.tgz#9346c7e59326f5eeac75c0286e47df94c2d6d8f7"
|
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.33.4.tgz#e44a87511f583b7ba88e4b9ae90eeb7ba252b872"
|
||||||
integrity sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==
|
integrity sha512-ln18hs7dMffelP47tpkaR+V5Tj6coykNyxJrlcmCormPqRQjB/Gv4cu2FfBG+PMzIfdZp2CLDsrrB1NPU22Qhg==
|
||||||
|
|
||||||
abort-controller@^3.0.0:
|
abort-controller@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
@@ -210,7 +246,7 @@ abort-controller@^3.0.0:
|
|||||||
asynckit@^0.4.0:
|
asynckit@^0.4.0:
|
||||||
version "0.4.0"
|
version "0.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
balanced-match@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@@ -225,6 +261,14 @@ brace-expansion@^1.1.7:
|
|||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
concat-map "0.0.1"
|
concat-map "0.0.1"
|
||||||
|
|
||||||
|
camel-case@^4.1.2:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
|
||||||
|
integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
|
||||||
|
dependencies:
|
||||||
|
pascal-case "^3.1.2"
|
||||||
|
tslib "^2.0.3"
|
||||||
|
|
||||||
combined-stream@^1.0.6, combined-stream@^1.0.8:
|
combined-stream@^1.0.6, combined-stream@^1.0.8:
|
||||||
version "1.0.8"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||||
@@ -232,15 +276,28 @@ combined-stream@^1.0.6, combined-stream@^1.0.8:
|
|||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
|
commander@^6.1.0:
|
||||||
|
version "6.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
|
||||||
|
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||||
|
|
||||||
delayed-stream@~1.0.0:
|
delayed-stream@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||||
|
|
||||||
|
dot-object@^2.1.4:
|
||||||
|
version "2.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.5.tgz#0ff0f1bff42c47ff06272081b208658c0a0231c2"
|
||||||
|
integrity sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==
|
||||||
|
dependencies:
|
||||||
|
commander "^6.1.0"
|
||||||
|
glob "^7.1.6"
|
||||||
|
|
||||||
event-target-shim@^5.0.0:
|
event-target-shim@^5.0.0:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
@@ -261,121 +318,237 @@ form-data@^2.5.0:
|
|||||||
combined-stream "^1.0.6"
|
combined-stream "^1.0.6"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
form-data@^3.0.0:
|
form-data@^4.0.0:
|
||||||
version "3.0.1"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
|
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
|
||||||
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
|
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
|
||||||
dependencies:
|
dependencies:
|
||||||
asynckit "^0.4.0"
|
asynckit "^0.4.0"
|
||||||
combined-stream "^1.0.8"
|
combined-stream "^1.0.8"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
ip-regex@^2.1.0:
|
fs.realpath@^1.0.0:
|
||||||
version "2.1.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
|
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||||
|
|
||||||
mime-db@1.48.0:
|
glob@^7.1.6:
|
||||||
version "1.48.0"
|
version "7.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||||
integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==
|
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.1.1"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
inflight@^1.0.4:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||||
|
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
||||||
|
dependencies:
|
||||||
|
once "^1.3.0"
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
|
inherits@2:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
|
|
||||||
|
linux-os-info@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/linux-os-info/-/linux-os-info-2.0.0.tgz#32a251077c13af1a69dbcb36a168901208e32776"
|
||||||
|
integrity sha512-ZopyH4kT2Ehnmix8iUgS/41pfv7fSlUV1JukIn3DB3qD3byvhBNtgCbUApoAtiqcHRLKXCY3zakXlJgiExm2Qg==
|
||||||
|
|
||||||
|
lodash@^4.17.15:
|
||||||
|
version "4.17.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
|
lower-case@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
|
||||||
|
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.0.3"
|
||||||
|
|
||||||
|
lru-cache@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||||
|
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||||
|
dependencies:
|
||||||
|
yallist "^4.0.0"
|
||||||
|
|
||||||
|
mime-db@1.52.0:
|
||||||
|
version "1.52.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||||
|
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||||
|
|
||||||
mime-types@^2.1.12:
|
mime-types@^2.1.12:
|
||||||
version "2.1.31"
|
version "2.1.35"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
||||||
integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "1.48.0"
|
mime-db "1.52.0"
|
||||||
|
|
||||||
minimatch@^3.0.4:
|
minimatch@^3.0.4, minimatch@^3.1.1:
|
||||||
version "3.0.4"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
node-fetch@^2.6.0:
|
no-case@^3.0.4:
|
||||||
version "2.6.1"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
|
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
|
||||||
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
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:
|
process@^0.11.10:
|
||||||
version "0.11.10"
|
version "0.11.10"
|
||||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
|
||||||
|
|
||||||
psl@^1.1.28, psl@^1.1.33:
|
|
||||||
version "1.8.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
|
|
||||||
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
|
|
||||||
|
|
||||||
punycode@^2.1.1:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
|
||||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
|
||||||
|
|
||||||
sax@>=0.6.0:
|
sax@>=0.6.0:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||||
|
|
||||||
semver@^6.1.0:
|
semver@^6.1.0, semver@^6.3.1:
|
||||||
version "6.3.0"
|
version "6.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||||
|
|
||||||
tough-cookie@^3.0.1:
|
semver@^7.3.7:
|
||||||
version "3.0.1"
|
version "7.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
|
||||||
integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
|
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ip-regex "^2.1.0"
|
lru-cache "^6.0.0"
|
||||||
psl "^1.1.28"
|
|
||||||
punycode "^2.1.1"
|
|
||||||
|
|
||||||
tough-cookie@^4.0.0:
|
tr46@~0.0.3:
|
||||||
version "4.0.0"
|
version "0.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
|
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||||
integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
|
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:
|
dependencies:
|
||||||
psl "^1.1.33"
|
lodash "^4.17.15"
|
||||||
punycode "^2.1.1"
|
prettier "^2.5.1"
|
||||||
universalify "^0.1.2"
|
|
||||||
|
|
||||||
tslib@^1.10.0:
|
tslib@^1.10.0:
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||||
|
|
||||||
tslib@^2.0.0, tslib@^2.2.0:
|
tslib@^2.0.3:
|
||||||
version "2.3.0"
|
version "2.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
|
||||||
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
|
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:
|
tunnel@0.0.6, tunnel@^0.0.6:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
|
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
|
||||||
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
|
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
|
||||||
|
|
||||||
universalify@^0.1.2:
|
twirp-ts@^2.5.0:
|
||||||
version "0.1.2"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
resolved "https://registry.yarnpkg.com/twirp-ts/-/twirp-ts-2.5.0.tgz#b43f09e95868d68ecd5c755ecbb08a7e51388504"
|
||||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
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"
|
||||||
|
|
||||||
uuid@^3.3.2, uuid@^3.3.3:
|
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"
|
version "3.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||||
|
|
||||||
uuid@^8.3.0:
|
uuid@^8.3.0, uuid@^8.3.2:
|
||||||
version "8.3.2"
|
version "8.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||||
|
|
||||||
xml2js@^0.4.19:
|
webidl-conversions@^3.0.0:
|
||||||
version "0.4.23"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||||
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
|
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:
|
dependencies:
|
||||||
sax ">=0.6.0"
|
sax ">=0.6.0"
|
||||||
xmlbuilder "~11.0.0"
|
xmlbuilder "~11.0.0"
|
||||||
@@ -384,3 +557,13 @@ xmlbuilder@~11.0.0:
|
|||||||
version "11.0.1"
|
version "11.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
|
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
|
||||||
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
|
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==
|
||||||
|
|||||||
Reference in New Issue
Block a user