Compare commits

...
9 Commits
6 changed files with 29 additions and 28 deletions
+11 -14
View File
@@ -15,7 +15,7 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
| Interpreter | Versions | | Interpreter | Versions |
| ----------- | -------- | | ----------- | -------- |
| Ruby | 2.1.9, 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 | | Ruby | 2.1.9, 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.12.0, head | | JRuby | 9.1.17.0, 9.2.9.0 - 9.2.13.0, head |
| TruffleRuby | 19.3.0 - 20.1.0, head | | TruffleRuby | 19.3.0 - 20.1.0, head |
| Rubinius | 4.14 | | Rubinius | 4.14 |
@@ -108,11 +108,16 @@ and the [condition and expression syntax](https://help.github.com/en/actions/ref
* `.tool-versions` reads from the project's `.tool-versions` file * `.tool-versions` reads from the project's `.tool-versions` file
* If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions` * If the `ruby-version` input is not specified, `.ruby-version` is tried first, followed by `.tool-versions`
### Working Directory
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock`
if they are not at the root of the repository, see [action.yml](action.yml) for details.
### Bundler ### Bundler
By default, if there is a `Gemfile.lock` file with a `BUNDLED WITH` section, By default, if there is a `Gemfile.lock` file (or `$BUNDLE_GEMFILE.lock` if `$BUNDLE_GEMFILE` is set) with a `BUNDLED WITH` section,
the latest version of Bundler with the same major version will be installed. the latest version of Bundler with the same major version will be installed.
Otherwise, the latest Bundler version is installed (except for Ruby 2.2 and 2.3 where only Bundler 1 is supported). Otherwise, the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.4, Bundler 1 on Ruby < 2.4).
This behavior can be customized, see [action.yml](action.yml) for details about the `bundler` input. This behavior can be customized, see [action.yml](action.yml) for details about the `bundler` input.
@@ -126,7 +131,7 @@ This action provides a way to automatically run `bundle install` and cache the r
``` ```
This caching speeds up installing gems significantly and avoids too many requests to RubyGems.org. This caching speeds up installing gems significantly and avoids too many requests to RubyGems.org.
It needs a `Gemfile` under the [`working-directory`](#working-directory). It needs a `Gemfile` (or `$BUNDLE_GEMFILE`) under the [`working-directory`](#working-directory).
The caching works whether there is a `Gemfile.lock` or not. The caching works whether there is a `Gemfile.lock` or not.
If there is a `Gemfile.lock`, `bundle config --local deployment true` is used. If there is a `Gemfile.lock`, `bundle config --local deployment true` is used.
@@ -159,15 +164,9 @@ When using `.ruby-version`, replace `${{ matrix.ruby }}` with `${{ hashFiles('.r
When using `.tool-versions`, replace `${{ matrix.ruby }}` with `${{ hashFiles('.tool-versions') }}`. When using `.tool-versions`, replace `${{ matrix.ruby }}` with `${{ hashFiles('.tool-versions') }}`.
This uses the [cache action](https://github.com/actions/cache). This uses the [cache action](https://github.com/actions/cache).
The code above is a more complete version of the [Ruby - Bundler example](https://github.com/actions/cache/blob/master/examples.md#ruby---\ The code above is a more complete version of the [Ruby - Bundler example](https://github.com/actions/cache/blob/master/examples.md#ruby---bundler).
bundler).
Make sure to include `use-ruby` in the `key` to avoid conflicting with previous caches. Make sure to include `use-ruby` in the `key` to avoid conflicting with previous caches.
### Working Directory
The `working-directory` input can be set to resolve `.ruby-version`, `.tool-versions` and `Gemfile.lock`
if they are not at the root of the repository, see [action.yml](action.yml) for details.
## Windows ## Windows
Note that running CI on Windows can be quite challenging if you are not very familiar with Windows. Note that running CI on Windows can be quite challenging if you are not very familiar with Windows.
@@ -192,9 +191,7 @@ Make sure to always use the latest release before reporting an issue on GitHub.
This action follows semantic versioning with a moving `v1` branch. This action follows semantic versioning with a moving `v1` branch.
This follows the [recommendations](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) of GitHub Actions. This follows the [recommendations](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) of GitHub Actions.
## Limitations ## Using self-hosted runners
### Using self-hosted runners
You must meet the following parameters to use this action with 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 * Make sure that the operating system has `libyaml-0` installed
+4 -1
View File
@@ -10,7 +10,10 @@ inputs:
required: false required: false
default: 'default' default: 'default'
bundler: bundler:
description: 'The version of Bundler to install. Either none, 1, 2, latest or Gemfile.lock. The default tries Gemfile.lock and otherwise uses latest.' description: |
The version of Bundler to install. Either 'none', 1, 2, 'latest' or 'Gemfile.lock'.
For 'Gemfile.lock', the version is determined based on the BUNDLED WITH section from the file ($BUNDLE_GEMFILE || Gemfile).lock.
Defaults to 'Gemfile.lock' if it exists and 'latest' otherwise.
required: false required: false
default: 'default' default: 'default'
bundler-cache: bundler-cache:
Generated Vendored
+7 -6
View File
@@ -2339,9 +2339,9 @@ function setupPath(newPathEntries) {
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter)) core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
} }
function readBundledWithFromGemfileLock() { function readBundledWithFromGemfileLock(path) {
if (fs.existsSync('Gemfile.lock')) { if (fs.existsSync(path)) {
const contents = fs.readFileSync('Gemfile.lock', 'utf8') const contents = fs.readFileSync(path, 'utf8')
const lines = contents.split(/\r?\n/) const lines = contents.split(/\r?\n/)
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) {
@@ -2349,7 +2349,7 @@ function readBundledWithFromGemfileLock() {
if (nextLine && /^\d+/.test(nextLine.trim())) { if (nextLine && /^\d+/.test(nextLine.trim())) {
const bundlerVersion = nextLine.trim() const bundlerVersion = nextLine.trim()
const majorVersion = bundlerVersion.match(/^\d+/)[0] const majorVersion = bundlerVersion.match(/^\d+/)[0]
console.log(`Using Bundler ${majorVersion} from Gemfile.lock BUNDLED WITH ${bundlerVersion}`) console.log(`Using Bundler ${majorVersion} from ${path} BUNDLED WITH ${bundlerVersion}`)
return majorVersion return majorVersion
} }
} }
@@ -2361,7 +2361,8 @@ async function installBundler(bundlerVersionInput, platform, rubyPrefix, engine,
var bundlerVersion = bundlerVersionInput var bundlerVersion = bundlerVersionInput
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') { if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
bundlerVersion = readBundledWithFromGemfileLock() const gemfilePath = `${process.env['BUNDLE_GEMFILE'] || 'Gemfile'}.lock`
bundlerVersion = readBundledWithFromGemfileLock(gemfilePath)
if (!bundlerVersion) { if (!bundlerVersion) {
bundlerVersion = 'latest' bundlerVersion = 'latest'
} }
@@ -3104,7 +3105,7 @@ function getVersions(platform) {
], ],
"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.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0",
"head" "head"
], ],
"truffleruby": [ "truffleruby": [
+6 -5
View File
@@ -153,9 +153,9 @@ function setupPath(newPathEntries) {
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter)) core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
} }
function readBundledWithFromGemfileLock() { function readBundledWithFromGemfileLock(path) {
if (fs.existsSync('Gemfile.lock')) { if (fs.existsSync(path)) {
const contents = fs.readFileSync('Gemfile.lock', 'utf8') const contents = fs.readFileSync(path, 'utf8')
const lines = contents.split(/\r?\n/) const lines = contents.split(/\r?\n/)
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) {
@@ -163,7 +163,7 @@ function readBundledWithFromGemfileLock() {
if (nextLine && /^\d+/.test(nextLine.trim())) { if (nextLine && /^\d+/.test(nextLine.trim())) {
const bundlerVersion = nextLine.trim() const bundlerVersion = nextLine.trim()
const majorVersion = bundlerVersion.match(/^\d+/)[0] const majorVersion = bundlerVersion.match(/^\d+/)[0]
console.log(`Using Bundler ${majorVersion} from Gemfile.lock BUNDLED WITH ${bundlerVersion}`) console.log(`Using Bundler ${majorVersion} from ${path} BUNDLED WITH ${bundlerVersion}`)
return majorVersion return majorVersion
} }
} }
@@ -175,7 +175,8 @@ async function installBundler(bundlerVersionInput, platform, rubyPrefix, engine,
var bundlerVersion = bundlerVersionInput var bundlerVersion = bundlerVersionInput
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') { if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
bundlerVersion = readBundledWithFromGemfileLock() const gemfilePath = `${process.env['BUNDLE_GEMFILE'] || 'Gemfile'}.lock`
bundlerVersion = readBundledWithFromGemfileLock(gemfilePath)
if (!bundlerVersion) { if (!bundlerVersion) {
bundlerVersion = 'latest' bundlerVersion = 'latest'
} }
-1
View File
@@ -4,7 +4,6 @@
"description": "Download a prebuilt Ruby and add it to the PATH in 5 seconds", "description": "Download a prebuilt Ruby and add it to the PATH in 5 seconds",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"lint": "eslint *.js",
"package": "ncc build index.js -o dist" "package": "ncc build index.js -o dist"
}, },
"repository": { "repository": {
+1 -1
View File
@@ -12,7 +12,7 @@ export function getVersions(platform) {
], ],
"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.9.0", "9.2.10.0", "9.2.11.0", "9.2.11.1", "9.2.12.0", "9.2.13.0",
"head" "head"
], ],
"truffleruby": [ "truffleruby": [