mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4032b551d | ||
|
|
da846ef6db | ||
|
|
1fe99df431 | ||
|
|
c28669c4da | ||
|
|
9f60be7c73 | ||
|
|
29eefdda13 | ||
|
|
ec106b438a | ||
|
|
d7f9647ad8 | ||
|
|
f25e77d702 | ||
|
|
463c3a8161 | ||
|
|
63190648f4 | ||
|
|
aec70617e0 |
@@ -0,0 +1,12 @@
|
|||||||
|
name: Update the v1 branch when a release is published
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: git push origin HEAD:v1
|
||||||
@@ -3,19 +3,18 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
push:
|
push:
|
||||||
branches-ignore:
|
branches-ignore:
|
||||||
- master
|
|
||||||
- v1
|
- v1
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '*'
|
- '*'
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- README.md
|
- README.md
|
||||||
jobs:
|
jobs:
|
||||||
common:
|
test:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ ubuntu, macos, windows ]
|
os: [ ubuntu, macos, windows ]
|
||||||
# Use various version syntaxes here for testing
|
# Use various version syntax here for testing
|
||||||
ruby: [ 2.2, 2.3, 2.4, 2.5, 2.6.6, 2.7, ruby-head, jruby-9.1, jruby, jruby-head, truffleruby, truffleruby-head ]
|
ruby: [ 2.2, 2.3, 2.4, 2.5, 2.6.6, 2.7, ruby-head, jruby-9.1, jruby, jruby-head, truffleruby, truffleruby-head ]
|
||||||
include:
|
include:
|
||||||
- { os: ubuntu, ruby: rubinius }
|
- { os: ubuntu, ruby: rubinius }
|
||||||
@@ -29,15 +28,17 @@ jobs:
|
|||||||
runs-on: ${{ matrix.os }}-latest
|
runs-on: ${{ matrix.os }}-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- uses: ./
|
- uses: ./
|
||||||
with:
|
with:
|
||||||
ruby-version: ${{ matrix.ruby }}
|
ruby-version: ${{ matrix.ruby }}
|
||||||
- run: ruby -v
|
- run: ruby -v
|
||||||
|
|
||||||
- name: build compiler
|
- name: build compiler
|
||||||
run: |
|
run: |
|
||||||
ruby -e "puts 'build compiler: ' + RbConfig::CONFIG.fetch('CC_VERSION_MESSAGE', 'unknown').lines.first"
|
ruby -e "puts 'build compiler: ' + RbConfig::CONFIG.fetch('CC_VERSION_MESSAGE', 'unknown').lines.first"
|
||||||
- name: gcc and ridk version (mingw)
|
- name: gcc and ridk version (mingw)
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: matrix.os == 'windows'
|
||||||
run: |
|
run: |
|
||||||
$abi, $plat = $(ruby -e "STDOUT.write RbConfig::CONFIG['ruby_version'] + ' ' + RUBY_PLATFORM").split(' ')
|
$abi, $plat = $(ruby -e "STDOUT.write RbConfig::CONFIG['ruby_version'] + ' ' + RUBY_PLATFORM").split(' ')
|
||||||
if ($plat.Contains('mingw')) {
|
if ($plat.Contains('mingw')) {
|
||||||
@@ -48,22 +49,25 @@ jobs:
|
|||||||
echo 'ridk is unavailable'
|
echo 'ridk is unavailable'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- name: Subprocess test
|
- name: Subprocess test
|
||||||
run: ruby test_subprocess.rb
|
run: ruby test_subprocess.rb
|
||||||
- name: OpenSSL version
|
- name: OpenSSL version
|
||||||
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'
|
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'
|
||||||
- name: OpenSSL test
|
- name: OpenSSL test
|
||||||
run: ruby -ropen-uri -e 'puts open(%{https://rubygems.org/}) { |f| f.read(1024) }'
|
run: ruby -ropen-uri -e 'puts open(%{https://rubygems.org/}) { |f| f.read(1024) }'
|
||||||
|
|
||||||
- name: C extension test
|
- name: C extension test
|
||||||
run: gem install json:2.2.0 --no-document
|
run: gem install json:2.2.0 --no-document
|
||||||
- run: bundle --version
|
- run: bundle --version
|
||||||
- run: bundle install
|
- run: bundle install
|
||||||
- run: bundle exec rake --version
|
- run: bundle exec rake --version
|
||||||
|
|
||||||
- name: which ruby, rake
|
- name: which ruby, rake
|
||||||
if: startsWith(matrix.os, 'windows') == false
|
if: matrix.os != 'windows'
|
||||||
run: which -a ruby rake
|
run: which -a ruby rake
|
||||||
- name: where ruby, rake
|
- name: where ruby, rake
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: matrix.os == 'windows'
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = 'Continue'
|
$ErrorActionPreference = 'Continue'
|
||||||
$where = 'ruby', 'rake'
|
$where = 'ruby', 'rake'
|
||||||
|
|||||||
@@ -134,6 +134,11 @@ 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---bundler).
|
The code above is a more complete version of the [Ruby - Bundler example](https://github.com/actions/cache/blob/master/examples.md#ruby---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.
|
||||||
@@ -146,15 +151,22 @@ It is recommended to first get your build working on Ubuntu and macOS before try
|
|||||||
* 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).
|
* JRuby on Windows has a known bug that `bundle exec rake` [fails](https://github.com/ruby/setup-ruby/issues/18).
|
||||||
|
|
||||||
## Limitations
|
|
||||||
|
|
||||||
* This action currently only works with GitHub-hosted runners, not private runners.
|
|
||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
|
It is highly recommended to use `ruby/setup-ruby@v1` for the version of this action.
|
||||||
|
This will provide the best experience by automatically getting bug fixes, new Ruby versions and new features.
|
||||||
|
|
||||||
|
If you instead choose a specific version (v1.2.3) or a commit sha, there will be no automatic bug fixes and
|
||||||
|
it will be your responsibility to update every time the action no longer works.
|
||||||
|
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
|
||||||
|
|
||||||
|
* This action currently only works with GitHub-hosted runners, not private runners.
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
This action used to be at `eregon/use-ruby-action` and was moved to the `ruby` organization.
|
This action used to be at `eregon/use-ruby-action` and was moved to the `ruby` organization.
|
||||||
|
|||||||
+5
-1
@@ -6,13 +6,17 @@ 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 if unset.'
|
description: 'Engine and version to use, see the syntax in the README. Reads from .ruby-version or .tool-versions if unset.'
|
||||||
required: false
|
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. The default tries Gemfile.lock and otherwise uses latest.'
|
||||||
required: false
|
required: false
|
||||||
default: 'default'
|
default: 'default'
|
||||||
|
working-directory:
|
||||||
|
description: 'The working directory to use for resolving paths for .ruby-version, .tool-versions and Gemfile.lock.'
|
||||||
|
required: false
|
||||||
|
default: '.'
|
||||||
outputs:
|
outputs:
|
||||||
ruby-prefix:
|
ruby-prefix:
|
||||||
description: 'The prefix of the installed ruby'
|
description: 'The prefix of the installed ruby'
|
||||||
|
|||||||
+31
-26
@@ -965,34 +965,42 @@ const common = __webpack_require__(239)
|
|||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
try {
|
try {
|
||||||
const platform = common.getVirtualEnvironmentName()
|
await main()
|
||||||
const [engine, version] = parseRubyEngineAndVersion(core.getInput('ruby-version'))
|
|
||||||
|
|
||||||
let installer
|
|
||||||
if (platform === 'windows-latest' && engine !== 'jruby') {
|
|
||||||
installer = __webpack_require__(826)
|
|
||||||
} else {
|
|
||||||
installer = __webpack_require__(489)
|
|
||||||
}
|
|
||||||
|
|
||||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
|
||||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
|
||||||
|
|
||||||
createGemRC()
|
|
||||||
|
|
||||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
|
||||||
|
|
||||||
setupPath(ruby, newPathEntries)
|
|
||||||
|
|
||||||
await common.measure('Installing Bundler', async () =>
|
|
||||||
installBundler(platform, rubyPrefix, engine, version))
|
|
||||||
|
|
||||||
core.setOutput('ruby-prefix', rubyPrefix)
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message)
|
core.setFailed(error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
process.chdir(core.getInput('working-directory'))
|
||||||
|
|
||||||
|
const platform = common.getVirtualEnvironmentName()
|
||||||
|
const [engine, version] = parseRubyEngineAndVersion(core.getInput('ruby-version'))
|
||||||
|
|
||||||
|
let installer
|
||||||
|
if (platform === 'windows-latest' && engine !== 'jruby') {
|
||||||
|
installer = __webpack_require__(826)
|
||||||
|
} else {
|
||||||
|
installer = __webpack_require__(489)
|
||||||
|
}
|
||||||
|
|
||||||
|
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||||
|
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||||
|
|
||||||
|
createGemRC()
|
||||||
|
|
||||||
|
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||||
|
|
||||||
|
setupPath(ruby, newPathEntries)
|
||||||
|
|
||||||
|
if (core.getInput('bundler') !== 'none') {
|
||||||
|
await common.measure('Installing Bundler', async () =>
|
||||||
|
installBundler(platform, rubyPrefix, engine, version))
|
||||||
|
}
|
||||||
|
|
||||||
|
core.setOutput('ruby-prefix', rubyPrefix)
|
||||||
|
}
|
||||||
|
|
||||||
function parseRubyEngineAndVersion(rubyVersion) {
|
function parseRubyEngineAndVersion(rubyVersion) {
|
||||||
if (rubyVersion === 'default') {
|
if (rubyVersion === 'default') {
|
||||||
if (fs.existsSync('.ruby-version')) {
|
if (fs.existsSync('.ruby-version')) {
|
||||||
@@ -1093,9 +1101,6 @@ function readBundledWithFromGemfileLock() {
|
|||||||
|
|
||||||
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
||||||
var bundlerVersion = core.getInput('bundler')
|
var bundlerVersion = core.getInput('bundler')
|
||||||
if (bundlerVersion === 'none') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
||||||
bundlerVersion = readBundledWithFromGemfileLock()
|
bundlerVersion = readBundledWithFromGemfileLock()
|
||||||
|
|||||||
@@ -7,34 +7,42 @@ const common = require('./common')
|
|||||||
|
|
||||||
export async function run() {
|
export async function run() {
|
||||||
try {
|
try {
|
||||||
const platform = common.getVirtualEnvironmentName()
|
await main()
|
||||||
const [engine, version] = parseRubyEngineAndVersion(core.getInput('ruby-version'))
|
|
||||||
|
|
||||||
let installer
|
|
||||||
if (platform === 'windows-latest' && engine !== 'jruby') {
|
|
||||||
installer = require('./windows')
|
|
||||||
} else {
|
|
||||||
installer = require('./ruby-builder')
|
|
||||||
}
|
|
||||||
|
|
||||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
|
||||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
|
||||||
|
|
||||||
createGemRC()
|
|
||||||
|
|
||||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
|
||||||
|
|
||||||
setupPath(ruby, newPathEntries)
|
|
||||||
|
|
||||||
await common.measure('Installing Bundler', async () =>
|
|
||||||
installBundler(platform, rubyPrefix, engine, version))
|
|
||||||
|
|
||||||
core.setOutput('ruby-prefix', rubyPrefix)
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message)
|
core.setFailed(error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
process.chdir(core.getInput('working-directory'))
|
||||||
|
|
||||||
|
const platform = common.getVirtualEnvironmentName()
|
||||||
|
const [engine, version] = parseRubyEngineAndVersion(core.getInput('ruby-version'))
|
||||||
|
|
||||||
|
let installer
|
||||||
|
if (platform === 'windows-latest' && engine !== 'jruby') {
|
||||||
|
installer = require('./windows')
|
||||||
|
} else {
|
||||||
|
installer = require('./ruby-builder')
|
||||||
|
}
|
||||||
|
|
||||||
|
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||||
|
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||||
|
|
||||||
|
createGemRC()
|
||||||
|
|
||||||
|
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||||
|
|
||||||
|
setupPath(ruby, newPathEntries)
|
||||||
|
|
||||||
|
if (core.getInput('bundler') !== 'none') {
|
||||||
|
await common.measure('Installing Bundler', async () =>
|
||||||
|
installBundler(platform, rubyPrefix, engine, version))
|
||||||
|
}
|
||||||
|
|
||||||
|
core.setOutput('ruby-prefix', rubyPrefix)
|
||||||
|
}
|
||||||
|
|
||||||
function parseRubyEngineAndVersion(rubyVersion) {
|
function parseRubyEngineAndVersion(rubyVersion) {
|
||||||
if (rubyVersion === 'default') {
|
if (rubyVersion === 'default') {
|
||||||
if (fs.existsSync('.ruby-version')) {
|
if (fs.existsSync('.ruby-version')) {
|
||||||
@@ -135,9 +143,6 @@ function readBundledWithFromGemfileLock() {
|
|||||||
|
|
||||||
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
||||||
var bundlerVersion = core.getInput('bundler')
|
var bundlerVersion = core.getInput('bundler')
|
||||||
if (bundlerVersion === 'none') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
||||||
bundlerVersion = readBundledWithFromGemfileLock()
|
bundlerVersion = readBundledWithFromGemfileLock()
|
||||||
|
|||||||
Reference in New Issue
Block a user