Compare commits

..
4 Commits
8 changed files with 51 additions and 20 deletions
-4
View File
@@ -79,10 +79,6 @@ jobs:
- { os: windows-2022, ruby: '1.9' }
- { os: windows-2025, ruby: '1.9' }
- { os: windows-11-arm, ruby: '1.9' }
# No preview builds on Windows
- { os: windows-2022, ruby: '4.0' }
- { os: windows-2025, ruby: '4.0' }
- { os: windows-11-arm, ruby: '4.0' }
# TruffleRuby does not support Windows
- { os: windows-2022, ruby: truffleruby }
- { os: windows-2025, ruby: truffleruby }
+16
View File
@@ -230,6 +230,22 @@ It is also possible to cache gems manually, but this is not recommended because
There are many concerns which means using `actions/cache` is never enough for caching gems (e.g., incomplete cache key, cleaning old gems when restoring from another key, correctly hashing the lockfile if not checked in, OS versions, ABI compatibility for `ruby-head`, etc).
So, please use `bundler-cache: true` instead and report any issue.
### Authentication Token
By default, this action uses `${{ github.token }}` to authenticate when downloading Ruby release assets from GitHub.
This helps avoid rate limiting issues.
If you're running this action on a GitHub Enterprise Server (GHES) instance, or if you're experiencing rate limiting,
you can provide a custom token:
```yaml
- uses: ruby/setup-ruby@v1
with:
token: ${{ secrets.MY_GITHUB_TOKEN }}
```
In most cases, you don't need to set this input as the default value is sufficient for use on github.com.
## Windows
Note that running CI on Windows can be quite challenging if you are not very familiar with Windows.
+6
View File
@@ -44,6 +44,12 @@ inputs:
It also sets environment variables using 'ridk' or 'vcvars64.bat' based on the selected Ruby.
At present, the only other setting than 'default' is 'none', which only adds Ruby to PATH.
No build tools or packages are installed, nor are any ENV setting changed to activate them.
token:
description: |
Used to authenticate with GitHub when downloading Ruby release assets.
When running this action on github.com, the default value is sufficient.
When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting.
default: ${{ github.server_url == 'https://github.com' && github.token || '' }}
outputs:
ruby-prefix:
+7 -1
View File
@@ -16,7 +16,8 @@ export const drive = (windows ? (process.env['RUNNER_TEMP'] || 'C')[0] : undefin
const PATH_ENV_VAR = windows ? 'Path' : 'PATH'
export const inputs = {
selfHosted: undefined
selfHosted: undefined,
token: undefined
}
export function partition(string, separator) {
@@ -441,3 +442,8 @@ export function isExactCacheKeyMatch(key, cacheKey) {
}) === 0
);
}
export async function download(url) {
const auth = inputs.token ? `token ${inputs.token}` : undefined
return await tc.downloadTool(url, undefined, auth)
}
Generated Vendored
+15 -8
View File
@@ -297,6 +297,7 @@ async function computeBaseKey(engine, version, lockFile, cacheVersion) {
__nccwpck_require__.r(__webpack_exports__);
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
/* harmony export */ createToolCacheCompleteFile: () => (/* binding */ createToolCacheCompleteFile),
/* harmony export */ download: () => (/* binding */ download),
/* harmony export */ drive: () => (/* binding */ drive),
/* harmony export */ floatVersion: () => (/* binding */ floatVersion),
/* harmony export */ getOSName: () => (/* binding */ getOSName),
@@ -348,7 +349,8 @@ const drive = (windows ? (process.env['RUNNER_TEMP'] || 'C')[0] : undefined)
const PATH_ENV_VAR = windows ? 'Path' : 'PATH'
const inputs = {
selfHosted: undefined
selfHosted: undefined,
token: undefined
}
function partition(string, separator) {
@@ -774,6 +776,11 @@ function isExactCacheKeyMatch(key, cacheKey) {
);
}
async function download(url) {
const auth = inputs.token ? `token ${inputs.token}` : undefined
return await tc.downloadTool(url, undefined, auth)
}
/***/ }),
@@ -71303,7 +71310,6 @@ const path = __nccwpck_require__(6928)
const core = __nccwpck_require__(7484)
const exec = __nccwpck_require__(5236)
const io = __nccwpck_require__(4994)
const tc = __nccwpck_require__(3472)
const common = __nccwpck_require__(7211)
const rubyBuilderVersions = __nccwpck_require__(1942)
@@ -71374,7 +71380,7 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
const url = getDownloadURL(platform, engine, version)
console.log(url)
try {
return await tc.downloadTool(url)
return await common.download(url)
} catch (error) {
if (error.message.includes('404')) {
throw new Error(`Unavailable version ${version} for ${engine} on ${platform}
@@ -71525,7 +71531,6 @@ const path = __nccwpck_require__(6928)
const cp = __nccwpck_require__(5317)
const core = __nccwpck_require__(7484)
const exec = __nccwpck_require__(5236)
const tc = __nccwpck_require__(3472)
const common = __nccwpck_require__(7211)
const rubyInstallerVersions = __nccwpck_require__(668)
const toolchainVersions = __nccwpck_require__(4977)
@@ -71599,7 +71604,7 @@ async function install(platform, engine, version) {
async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
const downloadPath = await common.measure('Downloading Ruby', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = process.env.RUNNER_TEMP
@@ -71631,7 +71636,7 @@ async function installJRubyTools() {
async function installMSYS2(url, rubyPrefix = process.env.RUNNER_TEMP) {
const downloadPath = await common.measure('Downloading msys2 build tools', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = path.join(process.env.RUNNER_TEMP, 'msys64')
@@ -71678,7 +71683,7 @@ async function installMSYS1(url) {
const downloadPath = await common.measure('Downloading msys1 build tools', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const msys1Path = `${common.drive}:\\DevKit64`
@@ -71714,7 +71719,7 @@ async function installMSYS1(url) {
async function installVCPKG(url) {
const downloadPath = await common.measure('Downloading mswin vcpkg packages', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = process.env.VCPKG_INSTALLATION_ROOT
@@ -85300,6 +85305,7 @@ const inputDefaults = {
'cache-version': bundler.DEFAULT_CACHE_VERSION,
'self-hosted': 'false',
'windows-toolchain': 'default',
'token': '',
}
// entry point when this action is run on its own
@@ -85327,6 +85333,7 @@ async function setupRuby(options = {}) {
}
}
common.inputs.selfHosted = inputs['self-hosted']
common.inputs.token = inputs['token']
process.chdir(inputs['working-directory'])
+2
View File
@@ -18,6 +18,7 @@ const inputDefaults = {
'cache-version': bundler.DEFAULT_CACHE_VERSION,
'self-hosted': 'false',
'windows-toolchain': 'default',
'token': '',
}
// entry point when this action is run on its own
@@ -45,6 +46,7 @@ export async function setupRuby(options = {}) {
}
}
common.inputs.selfHosted = inputs['self-hosted']
common.inputs.token = inputs['token']
process.chdir(inputs['working-directory'])
+1 -2
View File
@@ -4,7 +4,6 @@ const path = require('path')
const core = require('@actions/core')
const exec = require('@actions/exec')
const io = require('@actions/io')
const tc = require('@actions/tool-cache')
const common = require('./common')
const rubyBuilderVersions = require('./ruby-builder-versions')
@@ -75,7 +74,7 @@ async function downloadAndExtract(platform, engine, version, rubyPrefix) {
const url = getDownloadURL(platform, engine, version)
console.log(url)
try {
return await tc.downloadTool(url)
return await common.download(url)
} catch (error) {
if (error.message.includes('404')) {
throw new Error(`Unavailable version ${version} for ${engine} on ${platform}
+4 -5
View File
@@ -7,7 +7,6 @@ const path = require('path')
const cp = require('child_process')
const core = require('@actions/core')
const exec = require('@actions/exec')
const tc = require('@actions/tool-cache')
const common = require('./common')
const rubyInstallerVersions = require('./windows-versions.json')
const toolchainVersions = require('./windows-toolchain-versions.json')
@@ -81,7 +80,7 @@ export async function install(platform, engine, version) {
async function downloadAndExtract(engine, version, url, base, rubyPrefix) {
const downloadPath = await common.measure('Downloading Ruby', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = process.env.RUNNER_TEMP
@@ -113,7 +112,7 @@ export async function installJRubyTools() {
async function installMSYS2(url, rubyPrefix = process.env.RUNNER_TEMP) {
const downloadPath = await common.measure('Downloading msys2 build tools', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = path.join(process.env.RUNNER_TEMP, 'msys64')
@@ -160,7 +159,7 @@ async function installMSYS1(url) {
const downloadPath = await common.measure('Downloading msys1 build tools', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const msys1Path = `${common.drive}:\\DevKit64`
@@ -196,7 +195,7 @@ async function installMSYS1(url) {
async function installVCPKG(url) {
const downloadPath = await common.measure('Downloading mswin vcpkg packages', async () => {
console.log(url)
return await tc.downloadTool(url)
return await common.download(url)
})
const extractPath = process.env.VCPKG_INSTALLATION_ROOT