mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40bbc5ec66 | ||
|
|
1bb7de255b | ||
|
|
973b1baf94 | ||
|
|
ef4b00fd12 | ||
|
|
271876da60 | ||
|
|
5c4fc21c57 | ||
|
|
c8a88df157 |
@@ -15,7 +15,7 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
||||
| Interpreter | Versions |
|
||||
| ----------- | -------- |
|
||||
| Ruby | 2.2, 2.3.0 - 2.3.8, 2.4.0 - 2.4.10, 2.5.0 - 2.5.8, 2.6.0 - 2.6.6, 2.7.1, head, debug, mingw, mswin |
|
||||
| JRuby | 9.1.17.0, 9.2.9.0 - 9.2.11.1, head |
|
||||
| JRuby | 9.1.17.0, 9.2.9.0 - 9.2.12.0, head |
|
||||
| TruffleRuby | 19.3.0 - 20.1.0, head |
|
||||
| Rubinius | 4.14 |
|
||||
|
||||
@@ -31,7 +31,7 @@ On Windows, Ruby 2.4 uses OpenSSL 1.0.2, which is no longer maintained.
|
||||
|
||||
### 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 for all [GitHub-hosted runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners), and [self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners), under [certain conditions](#limitations)
|
||||
|
||||
| Operating System | Recommended | Other Supported Versions |
|
||||
| ----------- | -------- | -------- |
|
||||
@@ -129,7 +129,7 @@ This caching speeds up installing gems significantly and avoids too many request
|
||||
It needs a `Gemfile` under the [`working-directory`](#working-directory).
|
||||
The caching works whether there is a `Gemfile.lock` or not.
|
||||
If there is a `Gemfile.lock`, `bundle config --local deployment true` is used.
|
||||
|
||||
|
||||
To perform caching, this action will use `bundle config --local path vendor/bundle`.
|
||||
Therefore, the Bundler `path` should not be changed in your workflow for the cache to work.
|
||||
|
||||
@@ -194,7 +194,11 @@ This follows the [recommendations](https://github.com/actions/toolkit/blob/maste
|
||||
|
||||
## Limitations
|
||||
|
||||
* This action currently only works with GitHub-hosted runners, not private runners.
|
||||
### Using self-hosted runners
|
||||
You must meet the following parameters to use this action with self-hosted runners:
|
||||
|
||||
* Make sure that the operating system has `libyaml-0` installed
|
||||
* The runner software is running as user `runner` with a home directory of `/home/runner`, or you have created a symlink for the home directory of whatever user that the runner is running as to `/home/runner`.
|
||||
|
||||
## History
|
||||
|
||||
|
||||
+30
-10
@@ -2199,20 +2199,23 @@ const inputDefaults = {
|
||||
'working-directory': '.',
|
||||
}
|
||||
|
||||
// entry point when this action is run on its own
|
||||
async function run() {
|
||||
try {
|
||||
const options = {}
|
||||
for (const key in inputDefaults) {
|
||||
options[key] = core.getInput(key)
|
||||
}
|
||||
await setupRuby(options)
|
||||
await setupRuby()
|
||||
} catch (error) {
|
||||
core.setFailed(error.message)
|
||||
}
|
||||
}
|
||||
|
||||
async function setupRuby(options) {
|
||||
const inputs = { ...inputDefaults, ...options }
|
||||
// entry point when this action is run from other actions
|
||||
async function setupRuby(options = {}) {
|
||||
const inputs = { ...options }
|
||||
for (const key in inputDefaults) {
|
||||
if (!inputs.hasOwnProperty(key)) {
|
||||
inputs[key] = core.getInput(key) || inputDefaults[key]
|
||||
}
|
||||
}
|
||||
|
||||
process.chdir(inputs['working-directory'])
|
||||
|
||||
@@ -2235,6 +2238,13 @@ async function setupRuby(options) {
|
||||
|
||||
setupPath(newPathEntries)
|
||||
|
||||
// When setup-ruby is used by other actions, this allows code in them to run
|
||||
// before 'bundle install'. Installed dependencies may require additional
|
||||
// libraries & headers, build tools, etc.
|
||||
if (inputs['afterSetupPathHook'] instanceof Function) {
|
||||
await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version })
|
||||
}
|
||||
|
||||
if (inputs['bundler'] !== 'none') {
|
||||
await common.measure('Installing Bundler', async () =>
|
||||
installBundler(inputs['bundler'], platform, rubyPrefix, engine, version))
|
||||
@@ -2417,7 +2427,17 @@ async function bundleInstall(platform, engine, version) {
|
||||
console.log(`Cache key: ${key}`)
|
||||
|
||||
// restore cache & install
|
||||
const cachedKey = await cache.restoreCache(paths, key, restoreKeys)
|
||||
let cachedKey = null
|
||||
try {
|
||||
cachedKey = await cache.restoreCache(paths, key, restoreKeys)
|
||||
} catch (error) {
|
||||
if (error.name === cache.ValidationError.name) {
|
||||
throw error;
|
||||
} else {
|
||||
core.info(`[warning] There was an error restoring the cache ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
if (cachedKey) {
|
||||
console.log(`Found cache for key: ${cachedKey}`)
|
||||
}
|
||||
@@ -2449,7 +2469,7 @@ async function bundleInstall(platform, engine, version) {
|
||||
|
||||
async function computeBaseKey(platform, engine, version) {
|
||||
let baseKey = `setup-ruby-bundle-install-${platform}-${engine}-${version}`
|
||||
if (engine === 'ruby' && common.isHeadVersion(version)) {
|
||||
if (engine !== 'jruby' && common.isHeadVersion(version)) {
|
||||
let revision = '';
|
||||
await exec.exec('ruby', ['-e', 'print RUBY_REVISION'], {
|
||||
silent: true,
|
||||
@@ -3083,7 +3103,7 @@ function getVersions(platform) {
|
||||
],
|
||||
"jruby": [
|
||||
"9.1.17.0",
|
||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1",
|
||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby": [
|
||||
|
||||
@@ -13,20 +13,23 @@ const inputDefaults = {
|
||||
'working-directory': '.',
|
||||
}
|
||||
|
||||
// entry point when this action is run on its own
|
||||
export async function run() {
|
||||
try {
|
||||
const options = {}
|
||||
for (const key in inputDefaults) {
|
||||
options[key] = core.getInput(key)
|
||||
}
|
||||
await setupRuby(options)
|
||||
await setupRuby()
|
||||
} catch (error) {
|
||||
core.setFailed(error.message)
|
||||
}
|
||||
}
|
||||
|
||||
export async function setupRuby(options) {
|
||||
const inputs = { ...inputDefaults, ...options }
|
||||
// entry point when this action is run from other actions
|
||||
export async function setupRuby(options = {}) {
|
||||
const inputs = { ...options }
|
||||
for (const key in inputDefaults) {
|
||||
if (!inputs.hasOwnProperty(key)) {
|
||||
inputs[key] = core.getInput(key) || inputDefaults[key]
|
||||
}
|
||||
}
|
||||
|
||||
process.chdir(inputs['working-directory'])
|
||||
|
||||
@@ -49,6 +52,13 @@ export async function setupRuby(options) {
|
||||
|
||||
setupPath(newPathEntries)
|
||||
|
||||
// When setup-ruby is used by other actions, this allows code in them to run
|
||||
// before 'bundle install'. Installed dependencies may require additional
|
||||
// libraries & headers, build tools, etc.
|
||||
if (inputs['afterSetupPathHook'] instanceof Function) {
|
||||
await inputs['afterSetupPathHook']({ platform, rubyPrefix, engine, version })
|
||||
}
|
||||
|
||||
if (inputs['bundler'] !== 'none') {
|
||||
await common.measure('Installing Bundler', async () =>
|
||||
installBundler(inputs['bundler'], platform, rubyPrefix, engine, version))
|
||||
@@ -231,7 +241,17 @@ async function bundleInstall(platform, engine, version) {
|
||||
console.log(`Cache key: ${key}`)
|
||||
|
||||
// restore cache & install
|
||||
const cachedKey = await cache.restoreCache(paths, key, restoreKeys)
|
||||
let cachedKey = null
|
||||
try {
|
||||
cachedKey = await cache.restoreCache(paths, key, restoreKeys)
|
||||
} catch (error) {
|
||||
if (error.name === cache.ValidationError.name) {
|
||||
throw error;
|
||||
} else {
|
||||
core.info(`[warning] There was an error restoring the cache ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
if (cachedKey) {
|
||||
console.log(`Found cache for key: ${cachedKey}`)
|
||||
}
|
||||
@@ -263,7 +283,7 @@ async function bundleInstall(platform, engine, version) {
|
||||
|
||||
async function computeBaseKey(platform, engine, version) {
|
||||
let baseKey = `setup-ruby-bundle-install-${platform}-${engine}-${version}`
|
||||
if (engine === 'ruby' && common.isHeadVersion(version)) {
|
||||
if (engine !== 'jruby' && common.isHeadVersion(version)) {
|
||||
let revision = '';
|
||||
await exec.exec('ruby', ['-e', 'print RUBY_REVISION'], {
|
||||
silent: true,
|
||||
|
||||
@@ -11,7 +11,7 @@ export function getVersions(platform) {
|
||||
],
|
||||
"jruby": [
|
||||
"9.1.17.0",
|
||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1",
|
||||
"9.2.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0",
|
||||
"head"
|
||||
],
|
||||
"truffleruby": [
|
||||
|
||||
Reference in New Issue
Block a user