mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f964e8aa48 | ||
|
|
e16528e678 | ||
|
|
11238a2c00 | ||
|
|
1e2e6e19e3 | ||
|
|
a1c5b2a66c | ||
|
|
e648fd85b4 | ||
|
|
fb9d6fbc69 | ||
|
|
9c77d1b41f |
@@ -14,9 +14,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ]
|
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
||||||
# Use various version syntaxes here for testing
|
# Use various version syntaxes here for testing
|
||||||
ruby: [ 2.2, 2.3, .ruby-version, .tool-versions, ruby-head, jruby-9.1, jruby, jruby-head, truffleruby, truffleruby-head ]
|
ruby: [ 2.2, 2.3, 2.4, 2.5, 2.6.5, 2.7, ruby-head, jruby-9.1, jruby, jruby-head, truffleruby, truffleruby-head ]
|
||||||
exclude:
|
exclude:
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
ruby: truffleruby
|
ruby: truffleruby
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ This action currently supports these versions of MRI, JRuby and TruffleRuby:
|
|||||||
|
|
||||||
| Interpreter | Versions |
|
| Interpreter | Versions |
|
||||||
| ----------- | -------- |
|
| ----------- | -------- |
|
||||||
| Ruby | 2.2, 2.3.0 - 2.3.8, 2.4.0 - 2.4.9, 2.5.0 - 2.5.7, 2.6.0 - 2.6.5, 2.7.0, head, mingw, mswin |
|
| 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, 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.11.1, head |
|
||||||
| TruffleRuby | 19.3.0 - 20.0.0, head |
|
| TruffleRuby | 19.3.0 - 20.0.0, head |
|
||||||
| Rubinius | 4.14 |
|
| Rubinius | 4.14 |
|
||||||
@@ -105,9 +105,11 @@ jobs:
|
|||||||
|
|
||||||
### Bundler
|
### Bundler
|
||||||
|
|
||||||
Currently, Bundler is guaranteed to be installed for all versions.
|
By default, if there is a `Gemfile.lock` file with a `BUNDLED WITH` section,
|
||||||
If the Ruby ships with Bundler (Ruby >= 2.6), that version is used.
|
the latest version of Bundler with the same major version will be installed.
|
||||||
Otherwise (Ruby < 2.6), Bundler 1 is installed when that Ruby was built.
|
Otherwise, the latest Bundler version is installed (except for Ruby 2.2 where only Bundler 1 is supported).
|
||||||
|
|
||||||
|
This behavior can be customized, see [action.yml](action.yml) for details about the `bundler` input.
|
||||||
|
|
||||||
### Caching `bundle install`
|
### Caching `bundle install`
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ inputs:
|
|||||||
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 if unset.'
|
||||||
required: false
|
required: false
|
||||||
default: 'default'
|
default: 'default'
|
||||||
|
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.'
|
||||||
|
required: false
|
||||||
|
default: 'default'
|
||||||
outputs:
|
outputs:
|
||||||
ruby-prefix:
|
ruby-prefix:
|
||||||
description: 'The prefix of the installed ruby'
|
description: 'The prefix of the installed ruby'
|
||||||
|
|||||||
+77
-12
@@ -960,6 +960,7 @@ const os = __webpack_require__(87)
|
|||||||
const fs = __webpack_require__(747)
|
const fs = __webpack_require__(747)
|
||||||
const path = __webpack_require__(622)
|
const path = __webpack_require__(622)
|
||||||
const core = __webpack_require__(470)
|
const core = __webpack_require__(470)
|
||||||
|
const exec = __webpack_require__(986)
|
||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
try {
|
try {
|
||||||
@@ -976,9 +977,14 @@ async function run() {
|
|||||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||||
|
|
||||||
|
createGemRC()
|
||||||
|
|
||||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||||
|
|
||||||
setupPath(ruby, newPathEntries)
|
setupPath(ruby, newPathEntries)
|
||||||
|
|
||||||
|
await installBundler(platform, rubyPrefix, engine, version)
|
||||||
|
|
||||||
core.setOutput('ruby-prefix', rubyPrefix)
|
core.setOutput('ruby-prefix', rubyPrefix)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message)
|
core.setFailed(error.message)
|
||||||
@@ -1040,6 +1046,13 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
|||||||
return engine + '-' + version
|
return engine + '-' + version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createGemRC() {
|
||||||
|
const gemrc = path.join(os.homedir(), '.gemrc')
|
||||||
|
if (!fs.existsSync(gemrc)) {
|
||||||
|
fs.writeFileSync(gemrc, `gem: --no-document${os.EOL}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function setupPath(ruby, newPathEntries) {
|
function setupPath(ruby, newPathEntries) {
|
||||||
const originalPath = process.env['PATH'].split(path.delimiter)
|
const originalPath = process.env['PATH'].split(path.delimiter)
|
||||||
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
||||||
@@ -1056,6 +1069,58 @@ function setupPath(ruby, newPathEntries) {
|
|||||||
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
|
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readBundledWithFromGemfileLock() {
|
||||||
|
if (fs.existsSync('Gemfile.lock')) {
|
||||||
|
const contents = fs.readFileSync('Gemfile.lock', 'utf8')
|
||||||
|
const lines = contents.split(/\r?\n/)
|
||||||
|
const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim()))
|
||||||
|
if (bundledWithLine !== -1) {
|
||||||
|
const nextLine = lines[bundledWithLine+1]
|
||||||
|
if (nextLine && /^\d+/.test(nextLine.trim())) {
|
||||||
|
const bundlerVersion = nextLine.trim()
|
||||||
|
const majorVersion = bundlerVersion.match(/^\d+/)[0]
|
||||||
|
console.log(`Using Bundler ${majorVersion} from Gemfile.lock BUNDLED WITH ${bundlerVersion}`)
|
||||||
|
return majorVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
||||||
|
var bundlerVersion = core.getInput('bundler')
|
||||||
|
if (bundlerVersion === 'none') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
||||||
|
bundlerVersion = readBundledWithFromGemfileLock()
|
||||||
|
if (!bundlerVersion) {
|
||||||
|
bundlerVersion = 'latest'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let versionArray
|
||||||
|
if (rubyVersion.startsWith('2.2')) {
|
||||||
|
console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby 2.2')
|
||||||
|
versionArray = ['-v', '~> 1']
|
||||||
|
} else if (/^\d+/.test(bundlerVersion)) {
|
||||||
|
versionArray = ['-v', `~> ${bundlerVersion}`]
|
||||||
|
} else if (bundlerVersion === 'latest') {
|
||||||
|
versionArray = []
|
||||||
|
} else {
|
||||||
|
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engine === 'rubinius') {
|
||||||
|
console.log(`Rubinius only supports the version of Bundler shipped with it`)
|
||||||
|
} else if (bundlerVersion === '1' && engine === 'truffleruby') {
|
||||||
|
console.log(`Using the Bundler version shipped with ${engine}`)
|
||||||
|
} else {
|
||||||
|
await exec.exec(path.join(rubyPrefix, 'bin', 'gem'), ['install', 'bundler', ...versionArray, '--no-document'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getVirtualEnvironmentName() {
|
function getVirtualEnvironmentName() {
|
||||||
const platform = os.platform()
|
const platform = os.platform()
|
||||||
if (platform === 'linux') {
|
if (platform === 'linux') {
|
||||||
@@ -1389,10 +1454,10 @@ function getVersions(platform) {
|
|||||||
"ruby": [
|
"ruby": [
|
||||||
"2.2.10",
|
"2.2.10",
|
||||||
"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.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.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.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5",
|
"2.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6",
|
||||||
"2.7.0",
|
"2.7.0", "2.7.1",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"jruby": [
|
"jruby": [
|
||||||
@@ -3406,7 +3471,7 @@ const io = __webpack_require__(1)
|
|||||||
const tc = __webpack_require__(533)
|
const tc = __webpack_require__(533)
|
||||||
const rubyBuilderVersions = __webpack_require__(156)
|
const rubyBuilderVersions = __webpack_require__(156)
|
||||||
|
|
||||||
const builderReleaseTag = 'builds-no-warn'
|
const builderReleaseTag = 'enable-shared'
|
||||||
const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
|
const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
|
||||||
|
|
||||||
function getAvailableVersions(platform, engine) {
|
function getAvailableVersions(platform, engine) {
|
||||||
@@ -3415,7 +3480,7 @@ function getAvailableVersions(platform, engine) {
|
|||||||
|
|
||||||
async function install(platform, ruby) {
|
async function install(platform, ruby) {
|
||||||
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
||||||
let newPathEntries;
|
let newPathEntries
|
||||||
if (ruby.startsWith('rubinius')) {
|
if (ruby.startsWith('rubinius')) {
|
||||||
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
||||||
} else {
|
} else {
|
||||||
@@ -4801,6 +4866,7 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
||||||
|
|
||||||
const fs = __webpack_require__(747)
|
const fs = __webpack_require__(747)
|
||||||
|
const path = __webpack_require__(622)
|
||||||
const cp = __webpack_require__(129)
|
const cp = __webpack_require__(129)
|
||||||
const core = __webpack_require__(470)
|
const core = __webpack_require__(470)
|
||||||
const exec = __webpack_require__(986)
|
const exec = __webpack_require__(986)
|
||||||
@@ -4848,11 +4914,6 @@ async function install(platform, ruby) {
|
|||||||
await setupMSWin() : await setupMingw(version)
|
await setupMSWin() : await setupMingw(version)
|
||||||
const newPathEntries = [`${rubyPrefix}\\bin`, ...toolchainPaths]
|
const newPathEntries = [`${rubyPrefix}\\bin`, ...toolchainPaths]
|
||||||
|
|
||||||
// Install Bundler if needed
|
|
||||||
if (!fs.existsSync(`${rubyPrefix}\\bin\\bundle.cmd`)) {
|
|
||||||
await exec.exec(`${rubyPrefix}\\bin\\gem install bundler -v "~> 1" --no-document`)
|
|
||||||
}
|
|
||||||
|
|
||||||
return [rubyPrefix, newPathEntries]
|
return [rubyPrefix, newPathEntries]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4869,6 +4930,8 @@ async function symLinkToEmbeddedMSYS2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function setupMingw(version) {
|
async function setupMingw(version) {
|
||||||
|
core.exportVariable('MAKE', 'make.exe')
|
||||||
|
|
||||||
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
||||||
core.exportVariable('SSL_CERT_FILE', certFile)
|
core.exportVariable('SSL_CERT_FILE', certFile)
|
||||||
await installMSYS(version)
|
await installMSYS(version)
|
||||||
@@ -4899,6 +4962,8 @@ async function installMSYS(version) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function setupMSWin() {
|
async function setupMSWin() {
|
||||||
|
core.exportVariable('MAKE', 'nmake.exe')
|
||||||
|
|
||||||
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
||||||
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
||||||
if (!fs.existsSync(certsDir)) {
|
if (!fs.existsSync(certsDir)) {
|
||||||
@@ -4940,7 +5005,7 @@ function addVCVARSEnv() {
|
|||||||
for (let [k, v] of newEnv) {
|
for (let [k, v] of newEnv) {
|
||||||
if (process.env[k] !== v) {
|
if (process.env[k] !== v) {
|
||||||
if (k === 'Path') {
|
if (k === 'Path') {
|
||||||
newPathEntries = v.replace(process.env['Path'], '').split(';')
|
newPathEntries = v.replace(process.env['Path'], '').split(path.delimiter)
|
||||||
} else {
|
} else {
|
||||||
core.exportVariable(k, v)
|
core.exportVariable(k, v)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ 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 core = require('@actions/core')
|
||||||
|
const exec = require('@actions/exec')
|
||||||
|
|
||||||
export async function run() {
|
export async function run() {
|
||||||
try {
|
try {
|
||||||
@@ -18,9 +19,14 @@ export async function run() {
|
|||||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||||
|
|
||||||
|
createGemRC()
|
||||||
|
|
||||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||||
|
|
||||||
setupPath(ruby, newPathEntries)
|
setupPath(ruby, newPathEntries)
|
||||||
|
|
||||||
|
await installBundler(platform, rubyPrefix, engine, version)
|
||||||
|
|
||||||
core.setOutput('ruby-prefix', rubyPrefix)
|
core.setOutput('ruby-prefix', rubyPrefix)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message)
|
core.setFailed(error.message)
|
||||||
@@ -82,6 +88,13 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
|||||||
return engine + '-' + version
|
return engine + '-' + version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createGemRC() {
|
||||||
|
const gemrc = path.join(os.homedir(), '.gemrc')
|
||||||
|
if (!fs.existsSync(gemrc)) {
|
||||||
|
fs.writeFileSync(gemrc, `gem: --no-document${os.EOL}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function setupPath(ruby, newPathEntries) {
|
function setupPath(ruby, newPathEntries) {
|
||||||
const originalPath = process.env['PATH'].split(path.delimiter)
|
const originalPath = process.env['PATH'].split(path.delimiter)
|
||||||
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
||||||
@@ -98,6 +111,58 @@ function setupPath(ruby, newPathEntries) {
|
|||||||
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
|
core.exportVariable('PATH', [...newPathEntries, ...cleanPath].join(path.delimiter))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readBundledWithFromGemfileLock() {
|
||||||
|
if (fs.existsSync('Gemfile.lock')) {
|
||||||
|
const contents = fs.readFileSync('Gemfile.lock', 'utf8')
|
||||||
|
const lines = contents.split(/\r?\n/)
|
||||||
|
const bundledWithLine = lines.findIndex(line => /^BUNDLED WITH$/.test(line.trim()))
|
||||||
|
if (bundledWithLine !== -1) {
|
||||||
|
const nextLine = lines[bundledWithLine+1]
|
||||||
|
if (nextLine && /^\d+/.test(nextLine.trim())) {
|
||||||
|
const bundlerVersion = nextLine.trim()
|
||||||
|
const majorVersion = bundlerVersion.match(/^\d+/)[0]
|
||||||
|
console.log(`Using Bundler ${majorVersion} from Gemfile.lock BUNDLED WITH ${bundlerVersion}`)
|
||||||
|
return majorVersion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
async function installBundler(platform, rubyPrefix, engine, rubyVersion) {
|
||||||
|
var bundlerVersion = core.getInput('bundler')
|
||||||
|
if (bundlerVersion === 'none') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bundlerVersion === 'default' || bundlerVersion === 'Gemfile.lock') {
|
||||||
|
bundlerVersion = readBundledWithFromGemfileLock()
|
||||||
|
if (!bundlerVersion) {
|
||||||
|
bundlerVersion = 'latest'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let versionArray
|
||||||
|
if (rubyVersion.startsWith('2.2')) {
|
||||||
|
console.log('Bundler 2 requires Ruby 2.3+, using Bundler 1 on Ruby 2.2')
|
||||||
|
versionArray = ['-v', '~> 1']
|
||||||
|
} else if (/^\d+/.test(bundlerVersion)) {
|
||||||
|
versionArray = ['-v', `~> ${bundlerVersion}`]
|
||||||
|
} else if (bundlerVersion === 'latest') {
|
||||||
|
versionArray = []
|
||||||
|
} else {
|
||||||
|
throw new Error(`Cannot parse bundler input: ${bundlerVersion}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (engine === 'rubinius') {
|
||||||
|
console.log(`Rubinius only supports the version of Bundler shipped with it`)
|
||||||
|
} else if (bundlerVersion === '1' && engine === 'truffleruby') {
|
||||||
|
console.log(`Using the Bundler version shipped with ${engine}`)
|
||||||
|
} else {
|
||||||
|
await exec.exec(path.join(rubyPrefix, 'bin', 'gem'), ['install', 'bundler', ...versionArray, '--no-document'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getVirtualEnvironmentName() {
|
function getVirtualEnvironmentName() {
|
||||||
const platform = os.platform()
|
const platform = os.platform()
|
||||||
if (platform === 'linux') {
|
if (platform === 'linux') {
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ export function getVersions(platform) {
|
|||||||
"ruby": [
|
"ruby": [
|
||||||
"2.2.10",
|
"2.2.10",
|
||||||
"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.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.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.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5",
|
"2.6.0", "2.6.1", "2.6.2", "2.6.3", "2.6.4", "2.6.5", "2.6.6",
|
||||||
"2.7.0",
|
"2.7.0", "2.7.1",
|
||||||
"head"
|
"head"
|
||||||
],
|
],
|
||||||
"jruby": [
|
"jruby": [
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,7 @@ const io = require('@actions/io')
|
|||||||
const tc = require('@actions/tool-cache')
|
const tc = require('@actions/tool-cache')
|
||||||
const rubyBuilderVersions = require('./ruby-builder-versions')
|
const rubyBuilderVersions = require('./ruby-builder-versions')
|
||||||
|
|
||||||
const builderReleaseTag = 'builds-no-warn'
|
const builderReleaseTag = 'enable-shared'
|
||||||
const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
|
const releasesURL = 'https://github.com/ruby/ruby-builder/releases'
|
||||||
|
|
||||||
export function getAvailableVersions(platform, engine) {
|
export function getAvailableVersions(platform, engine) {
|
||||||
@@ -14,7 +14,7 @@ export function getAvailableVersions(platform, engine) {
|
|||||||
|
|
||||||
export async function install(platform, ruby) {
|
export async function install(platform, ruby) {
|
||||||
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
||||||
let newPathEntries;
|
let newPathEntries
|
||||||
if (ruby.startsWith('rubinius')) {
|
if (ruby.startsWith('rubinius')) {
|
||||||
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+6
-6
@@ -2,6 +2,7 @@
|
|||||||
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
||||||
|
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
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')
|
||||||
@@ -49,11 +50,6 @@ export async function install(platform, ruby) {
|
|||||||
await setupMSWin() : await setupMingw(version)
|
await setupMSWin() : await setupMingw(version)
|
||||||
const newPathEntries = [`${rubyPrefix}\\bin`, ...toolchainPaths]
|
const newPathEntries = [`${rubyPrefix}\\bin`, ...toolchainPaths]
|
||||||
|
|
||||||
// Install Bundler if needed
|
|
||||||
if (!fs.existsSync(`${rubyPrefix}\\bin\\bundle.cmd`)) {
|
|
||||||
await exec.exec(`${rubyPrefix}\\bin\\gem install bundler -v "~> 1" --no-document`)
|
|
||||||
}
|
|
||||||
|
|
||||||
return [rubyPrefix, newPathEntries]
|
return [rubyPrefix, newPathEntries]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,6 +66,8 @@ async function symLinkToEmbeddedMSYS2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function setupMingw(version) {
|
async function setupMingw(version) {
|
||||||
|
core.exportVariable('MAKE', 'make.exe')
|
||||||
|
|
||||||
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
||||||
core.exportVariable('SSL_CERT_FILE', certFile)
|
core.exportVariable('SSL_CERT_FILE', certFile)
|
||||||
await installMSYS(version)
|
await installMSYS(version)
|
||||||
@@ -100,6 +98,8 @@ async function installMSYS(version) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function setupMSWin() {
|
async function setupMSWin() {
|
||||||
|
core.exportVariable('MAKE', 'nmake.exe')
|
||||||
|
|
||||||
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
||||||
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
||||||
if (!fs.existsSync(certsDir)) {
|
if (!fs.existsSync(certsDir)) {
|
||||||
@@ -141,7 +141,7 @@ export function addVCVARSEnv() {
|
|||||||
for (let [k, v] of newEnv) {
|
for (let [k, v] of newEnv) {
|
||||||
if (process.env[k] !== v) {
|
if (process.env[k] !== v) {
|
||||||
if (k === 'Path') {
|
if (k === 'Path') {
|
||||||
newPathEntries = v.replace(process.env['Path'], '').split(';')
|
newPathEntries = v.replace(process.env['Path'], '').split(path.delimiter)
|
||||||
} else {
|
} else {
|
||||||
core.exportVariable(k, v)
|
core.exportVariable(k, v)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user