mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-14 15:04:20 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c04af2bb72 | ||
|
|
17f5c914a0 | ||
|
|
5496baa6db | ||
|
|
0ec4904dc7 |
@@ -17,7 +17,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-12, macos-13, macos-14, windows-2019, windows-2022 ]
|
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-12, macos-13, macos-14, macos-15, windows-2019, windows-2022 ]
|
||||||
ruby: [
|
ruby: [
|
||||||
'1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', ruby-head,
|
'1.9', '2.0', '2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', ruby-head,
|
||||||
jruby, jruby-head,
|
jruby, jruby-head,
|
||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
- { os: ubuntu-22.04, ruby: '2.2' }
|
- { os: ubuntu-22.04, ruby: '2.2' }
|
||||||
- { os: ubuntu-24.04, ruby: '1.9' }
|
- { os: ubuntu-24.04, ruby: '1.9' }
|
||||||
- { os: ubuntu-24.04, ruby: '2.2' }
|
- { os: ubuntu-24.04, ruby: '2.2' }
|
||||||
# These old Rubies fail to compile on macos-14 (macOS 14, arm64), which is used for ruby/ruby-builder
|
# These old Rubies fail to compile on macOS arm64
|
||||||
- { os: macos-14, ruby: '1.9' }
|
- { os: macos-14, ruby: '1.9' }
|
||||||
- { os: macos-14, ruby: '2.0' }
|
- { os: macos-14, ruby: '2.0' }
|
||||||
- { os: macos-14, ruby: '2.1' }
|
- { os: macos-14, ruby: '2.1' }
|
||||||
@@ -43,6 +43,13 @@ jobs:
|
|||||||
- { os: macos-14, ruby: '2.3' }
|
- { os: macos-14, ruby: '2.3' }
|
||||||
- { os: macos-14, ruby: '2.4' }
|
- { os: macos-14, ruby: '2.4' }
|
||||||
- { os: macos-14, ruby: '2.5' }
|
- { os: macos-14, ruby: '2.5' }
|
||||||
|
- { os: macos-15, ruby: '1.9' }
|
||||||
|
- { os: macos-15, ruby: '2.0' }
|
||||||
|
- { os: macos-15, ruby: '2.1' }
|
||||||
|
- { os: macos-15, ruby: '2.2' }
|
||||||
|
- { os: macos-15, ruby: '2.3' }
|
||||||
|
- { os: macos-15, ruby: '2.4' }
|
||||||
|
- { os: macos-15, ruby: '2.5' }
|
||||||
# Windows
|
# Windows
|
||||||
- { os: windows-2019, ruby: '1.9' }
|
- { os: windows-2019, ruby: '1.9' }
|
||||||
- { os: windows-2019, ruby: debug }
|
- { os: windows-2019, ruby: debug }
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ const core = require('@actions/core')
|
|||||||
const tc = require('@actions/tool-cache')
|
const tc = require('@actions/tool-cache')
|
||||||
const { performance } = require('perf_hooks')
|
const { performance } = require('perf_hooks')
|
||||||
const linuxOSInfo = require('linux-os-info')
|
const linuxOSInfo = require('linux-os-info')
|
||||||
import macosRelease from 'macos-release'
|
|
||||||
|
|
||||||
export const windows = (os.platform() === 'win32')
|
export const windows = (os.platform() === 'win32')
|
||||||
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
|
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
|
||||||
@@ -162,73 +161,105 @@ export async function hashFile(file) {
|
|||||||
return hash.digest('hex')
|
return hash.digest('hex')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// macos is not listed explicitly, see below
|
||||||
const GitHubHostedPlatforms = [
|
const GitHubHostedPlatforms = [
|
||||||
'ubuntu-20.04-x64',
|
'ubuntu-20.04-x64',
|
||||||
'ubuntu-22.04-x64',
|
'ubuntu-22.04-x64',
|
||||||
'ubuntu-24.04-x64',
|
'ubuntu-24.04-x64',
|
||||||
'macos-12-x64',
|
|
||||||
'macos-13-x64',
|
|
||||||
'macos-13-arm64',
|
|
||||||
'macos-14-x64',
|
|
||||||
'macos-14-arm64',
|
|
||||||
'windows-2019-x64',
|
'windows-2019-x64',
|
||||||
'windows-2022-x64',
|
'windows-2022-x64',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
|
||||||
|
function isSupportedPlatform() {
|
||||||
|
const platform = getOSName()
|
||||||
|
switch (platform) {
|
||||||
|
case 'ubuntu':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
|
case 'macos':
|
||||||
|
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
|
||||||
|
// 13 on arm64 because of old macos-arm-oss runners
|
||||||
|
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 12) ||
|
||||||
|
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
|
||||||
|
case 'windows':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
|
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
|
||||||
export function isSelfHostedRunner() {
|
export function isSelfHostedRunner() {
|
||||||
if (inputs.selfHosted === undefined) {
|
if (inputs.selfHosted === undefined) {
|
||||||
throw new Error('inputs.selfHosted should have been already set')
|
throw new Error('inputs.selfHosted should have been already set')
|
||||||
}
|
}
|
||||||
|
|
||||||
return inputs.selfHosted === 'true' ||
|
return inputs.selfHosted === 'true' || !isSupportedPlatform()
|
||||||
!GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function selfHostedRunnerReason() {
|
export function selfHostedRunnerReason() {
|
||||||
if (inputs.selfHosted === 'true') {
|
if (inputs.selfHosted === 'true') {
|
||||||
return 'the self-hosted input was set'
|
return 'the self-hosted input was set'
|
||||||
} else if (!GitHubHostedPlatforms.includes(getOSNameVersionArch())) {
|
} else if (!isSupportedPlatform()) {
|
||||||
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
|
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
|
||||||
} else {
|
} else {
|
||||||
return 'unknown reason'
|
return 'unknown reason'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let osNameVersion = undefined
|
let osName = undefined
|
||||||
|
let osVersion = undefined
|
||||||
|
|
||||||
export function getOSNameVersion() {
|
export function getOSName() {
|
||||||
if (osNameVersion !== undefined) {
|
if (osName !== undefined) {
|
||||||
return osNameVersion
|
return osName
|
||||||
}
|
}
|
||||||
|
|
||||||
const platform = os.platform()
|
const platform = os.platform()
|
||||||
let osName
|
|
||||||
let osVersion
|
|
||||||
if (platform === 'linux') {
|
if (platform === 'linux') {
|
||||||
const info = linuxOSInfo({mode: 'sync'})
|
const info = linuxOSInfo({mode: 'sync'})
|
||||||
osName = info.id
|
osName = info.id
|
||||||
osVersion = info.version_id
|
|
||||||
} else if (platform === 'darwin') {
|
} else if (platform === 'darwin') {
|
||||||
osName = 'macos'
|
osName = 'macos'
|
||||||
osVersion = macosRelease().version
|
|
||||||
} else if (platform === 'win32') {
|
} else if (platform === 'win32') {
|
||||||
osName = 'windows'
|
osName = 'windows'
|
||||||
|
} else {
|
||||||
|
throw new Error(`Unknown platform ${platform}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
return osName
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getOSVersion() {
|
||||||
|
if (osVersion !== undefined) {
|
||||||
|
return osVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
const platform = os.platform()
|
||||||
|
if (platform === 'linux') {
|
||||||
|
const info = linuxOSInfo({mode: 'sync'})
|
||||||
|
osVersion = info.version_id
|
||||||
|
} else if (platform === 'darwin') {
|
||||||
|
// See https://github.com/sindresorhus/macos-release/blob/main/index.js
|
||||||
|
const darwinVersion = parseInt(os.release().match(/^\d+/)[0])
|
||||||
|
osVersion = `${darwinVersion - 9}`
|
||||||
|
} else if (platform === 'win32') {
|
||||||
osVersion = findWindowsVersion()
|
osVersion = findWindowsVersion()
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`Unknown platform ${platform}`)
|
throw new Error(`Unknown platform ${platform}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
osNameVersion = `${osName}-${osVersion}`
|
return osVersion
|
||||||
return osNameVersion
|
}
|
||||||
|
|
||||||
|
export function getOSNameVersion() {
|
||||||
|
return `${getOSName()}-${getOSVersion()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getOSNameVersionArch() {
|
export function getOSNameVersionArch() {
|
||||||
return `${getOSNameVersion()}-${os.arch()}`
|
return `${getOSName()}-${getOSVersion()}-${os.arch()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function findWindowsVersion() {
|
function findWindowsVersion() {
|
||||||
const version = os.version();
|
const version = os.version()
|
||||||
const match = version.match(/^Windows Server (\d+) Datacenter/)
|
const match = version.match(/^Windows Server (\d+) Datacenter/)
|
||||||
if (match) {
|
if (match) {
|
||||||
return match[1]
|
return match[1]
|
||||||
@@ -261,15 +292,14 @@ export function getRunnerToolCache() {
|
|||||||
|
|
||||||
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
|
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
|
||||||
function getDefaultToolCachePath() {
|
function getDefaultToolCachePath() {
|
||||||
const platform = getOSNameVersion()
|
const platform = getOSName()
|
||||||
if (platform.startsWith('ubuntu-')) {
|
switch (platform) {
|
||||||
return '/opt/hostedtoolcache'
|
case 'ubuntu':
|
||||||
} else if (platform.startsWith('macos-')) {
|
return '/opt/hostedtoolcache'
|
||||||
return '/Users/runner/hostedtoolcache'
|
case 'macos':
|
||||||
} else if (platform.startsWith('windows-')) {
|
return '/Users/runner/hostedtoolcache'
|
||||||
return 'C:\\hostedtoolcache\\windows'
|
case 'windows':
|
||||||
} else {
|
return 'C:\\hostedtoolcache\\windows'
|
||||||
throw new Error('Unknown platform')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+102
-111
@@ -17,7 +17,7 @@ const path = __nccwpck_require__(1017)
|
|||||||
const core = __nccwpck_require__(2186)
|
const core = __nccwpck_require__(2186)
|
||||||
const exec = __nccwpck_require__(1514)
|
const exec = __nccwpck_require__(1514)
|
||||||
const cache = __nccwpck_require__(7799)
|
const cache = __nccwpck_require__(7799)
|
||||||
const common = __nccwpck_require__(3143)
|
const common = __nccwpck_require__(4717)
|
||||||
|
|
||||||
const DEFAULT_CACHE_VERSION = '0'
|
const DEFAULT_CACHE_VERSION = '0'
|
||||||
|
|
||||||
@@ -280,95 +280,53 @@ async function computeBaseKey(platform, engine, version, lockFile, cacheVersion)
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 3143:
|
/***/ 4717:
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
// ESM COMPAT FLAG
|
|
||||||
__nccwpck_require__.r(__webpack_exports__);
|
__nccwpck_require__.r(__webpack_exports__);
|
||||||
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
||||||
// EXPORTS
|
/* harmony export */ "windows": () => (/* binding */ windows),
|
||||||
__nccwpck_require__.d(__webpack_exports__, {
|
/* harmony export */ "drive": () => (/* binding */ drive),
|
||||||
"createToolCacheCompleteFile": () => (/* binding */ createToolCacheCompleteFile),
|
/* harmony export */ "inputs": () => (/* binding */ inputs),
|
||||||
"drive": () => (/* binding */ drive),
|
/* harmony export */ "partition": () => (/* binding */ partition),
|
||||||
"floatVersion": () => (/* binding */ floatVersion),
|
/* harmony export */ "measure": () => (/* binding */ measure),
|
||||||
"getOSNameVersion": () => (/* binding */ getOSNameVersion),
|
/* harmony export */ "time": () => (/* binding */ time),
|
||||||
"getOSNameVersionArch": () => (/* binding */ getOSNameVersionArch),
|
/* harmony export */ "isHeadVersion": () => (/* binding */ isHeadVersion),
|
||||||
"getRunnerToolCache": () => (/* binding */ getRunnerToolCache),
|
/* harmony export */ "isStableVersion": () => (/* binding */ isStableVersion),
|
||||||
"getToolCachePath": () => (/* binding */ getToolCachePath),
|
/* harmony export */ "hasBundlerDefaultGem": () => (/* binding */ hasBundlerDefaultGem),
|
||||||
"getToolCacheRubyPrefix": () => (/* binding */ getToolCacheRubyPrefix),
|
/* harmony export */ "isBundler1Default": () => (/* binding */ isBundler1Default),
|
||||||
"hasBundlerDefaultGem": () => (/* binding */ hasBundlerDefaultGem),
|
/* harmony export */ "isBundler2Default": () => (/* binding */ isBundler2Default),
|
||||||
"hashFile": () => (/* binding */ hashFile),
|
/* harmony export */ "isBundler2dot2Default": () => (/* binding */ isBundler2dot2Default),
|
||||||
"inputs": () => (/* binding */ inputs),
|
/* harmony export */ "targetRubyVersion": () => (/* binding */ targetRubyVersion),
|
||||||
"isBundler1Default": () => (/* binding */ isBundler1Default),
|
/* harmony export */ "floatVersion": () => (/* binding */ floatVersion),
|
||||||
"isBundler2Default": () => (/* binding */ isBundler2Default),
|
/* harmony export */ "hashFile": () => (/* binding */ hashFile),
|
||||||
"isBundler2dot2Default": () => (/* binding */ isBundler2dot2Default),
|
/* harmony export */ "isSelfHostedRunner": () => (/* binding */ isSelfHostedRunner),
|
||||||
"isHeadVersion": () => (/* binding */ isHeadVersion),
|
/* harmony export */ "selfHostedRunnerReason": () => (/* binding */ selfHostedRunnerReason),
|
||||||
"isSelfHostedRunner": () => (/* binding */ isSelfHostedRunner),
|
/* harmony export */ "getOSName": () => (/* binding */ getOSName),
|
||||||
"isStableVersion": () => (/* binding */ isStableVersion),
|
/* harmony export */ "getOSVersion": () => (/* binding */ getOSVersion),
|
||||||
"measure": () => (/* binding */ measure),
|
/* harmony export */ "getOSNameVersion": () => (/* binding */ getOSNameVersion),
|
||||||
"partition": () => (/* binding */ partition),
|
/* harmony export */ "getOSNameVersionArch": () => (/* binding */ getOSNameVersionArch),
|
||||||
"selfHostedRunnerReason": () => (/* binding */ selfHostedRunnerReason),
|
/* harmony export */ "shouldUseToolCache": () => (/* binding */ shouldUseToolCache),
|
||||||
"setupPath": () => (/* binding */ setupPath),
|
/* harmony export */ "getToolCachePath": () => (/* binding */ getToolCachePath),
|
||||||
"shouldUseToolCache": () => (/* binding */ shouldUseToolCache),
|
/* harmony export */ "getRunnerToolCache": () => (/* binding */ getRunnerToolCache),
|
||||||
"targetRubyVersion": () => (/* binding */ targetRubyVersion),
|
/* harmony export */ "toolCacheFind": () => (/* binding */ toolCacheFind),
|
||||||
"time": () => (/* binding */ time),
|
/* harmony export */ "getToolCacheRubyPrefix": () => (/* binding */ getToolCacheRubyPrefix),
|
||||||
"toolCacheCompleteFile": () => (/* binding */ toolCacheCompleteFile),
|
/* harmony export */ "toolCacheCompleteFile": () => (/* binding */ toolCacheCompleteFile),
|
||||||
"toolCacheFind": () => (/* binding */ toolCacheFind),
|
/* harmony export */ "createToolCacheCompleteFile": () => (/* binding */ createToolCacheCompleteFile),
|
||||||
"win2nix": () => (/* binding */ win2nix),
|
/* harmony export */ "win2nix": () => (/* binding */ win2nix),
|
||||||
"windows": () => (/* binding */ windows)
|
/* harmony export */ "setupPath": () => (/* binding */ setupPath)
|
||||||
});
|
/* harmony export */ });
|
||||||
|
|
||||||
;// CONCATENATED MODULE: external "node:os"
|
|
||||||
const external_node_os_namespaceObject = require("node:os");
|
|
||||||
;// CONCATENATED MODULE: ./node_modules/macos-release/index.js
|
|
||||||
|
|
||||||
|
|
||||||
const nameMap = new Map([
|
|
||||||
[23, ['Sonoma', '14']],
|
|
||||||
[22, ['Ventura', '13']],
|
|
||||||
[21, ['Monterey', '12']],
|
|
||||||
[20, ['Big Sur', '11']],
|
|
||||||
[19, ['Catalina', '10.15']],
|
|
||||||
[18, ['Mojave', '10.14']],
|
|
||||||
[17, ['High Sierra', '10.13']],
|
|
||||||
[16, ['Sierra', '10.12']],
|
|
||||||
[15, ['El Capitan', '10.11']],
|
|
||||||
[14, ['Yosemite', '10.10']],
|
|
||||||
[13, ['Mavericks', '10.9']],
|
|
||||||
[12, ['Mountain Lion', '10.8']],
|
|
||||||
[11, ['Lion', '10.7']],
|
|
||||||
[10, ['Snow Leopard', '10.6']],
|
|
||||||
[9, ['Leopard', '10.5']],
|
|
||||||
[8, ['Tiger', '10.4']],
|
|
||||||
[7, ['Panther', '10.3']],
|
|
||||||
[6, ['Jaguar', '10.2']],
|
|
||||||
[5, ['Puma', '10.1']],
|
|
||||||
]);
|
|
||||||
|
|
||||||
function macosRelease(release) {
|
|
||||||
release = Number((release || external_node_os_namespaceObject.release()).split('.')[0]);
|
|
||||||
|
|
||||||
const [name, version] = nameMap.get(release) || ['Unknown', ''];
|
|
||||||
|
|
||||||
return {
|
|
||||||
name,
|
|
||||||
version,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
;// CONCATENATED MODULE: ./common.js
|
|
||||||
const os = __nccwpck_require__(2037)
|
const os = __nccwpck_require__(2037)
|
||||||
const path = __nccwpck_require__(1017)
|
const path = __nccwpck_require__(1017)
|
||||||
const fs = __nccwpck_require__(7147)
|
const fs = __nccwpck_require__(7147)
|
||||||
const util = __nccwpck_require__(3837)
|
const util = __nccwpck_require__(3837)
|
||||||
const stream = __nccwpck_require__(2781)
|
const stream = __nccwpck_require__(2781)
|
||||||
const common_crypto = __nccwpck_require__(6113)
|
const crypto = __nccwpck_require__(6113)
|
||||||
const core = __nccwpck_require__(2186)
|
const core = __nccwpck_require__(2186)
|
||||||
const tc = __nccwpck_require__(7784)
|
const tc = __nccwpck_require__(7784)
|
||||||
const { performance } = __nccwpck_require__(4074)
|
const { performance } = __nccwpck_require__(4074)
|
||||||
const linuxOSInfo = __nccwpck_require__(8487)
|
const linuxOSInfo = __nccwpck_require__(8487)
|
||||||
;
|
|
||||||
|
|
||||||
const windows = (os.platform() === 'win32')
|
const windows = (os.platform() === 'win32')
|
||||||
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
|
// Extract to SSD on Windows, see https://github.com/ruby/setup-ruby/pull/14
|
||||||
@@ -516,79 +474,111 @@ function floatVersion(rubyVersion) {
|
|||||||
|
|
||||||
async function hashFile(file) {
|
async function hashFile(file) {
|
||||||
// See https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
|
// See https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
|
||||||
const hash = common_crypto.createHash('sha256')
|
const hash = crypto.createHash('sha256')
|
||||||
const pipeline = util.promisify(stream.pipeline)
|
const pipeline = util.promisify(stream.pipeline)
|
||||||
await pipeline(fs.createReadStream(file), hash)
|
await pipeline(fs.createReadStream(file), hash)
|
||||||
return hash.digest('hex')
|
return hash.digest('hex')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// macos is not listed explicitly, see below
|
||||||
const GitHubHostedPlatforms = [
|
const GitHubHostedPlatforms = [
|
||||||
'ubuntu-20.04-x64',
|
'ubuntu-20.04-x64',
|
||||||
'ubuntu-22.04-x64',
|
'ubuntu-22.04-x64',
|
||||||
'ubuntu-24.04-x64',
|
'ubuntu-24.04-x64',
|
||||||
'macos-12-x64',
|
|
||||||
'macos-13-x64',
|
|
||||||
'macos-13-arm64',
|
|
||||||
'macos-14-x64',
|
|
||||||
'macos-14-arm64',
|
|
||||||
'windows-2019-x64',
|
'windows-2019-x64',
|
||||||
'windows-2022-x64',
|
'windows-2022-x64',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// Precisely: whether we have builds for that platform and there are GitHub-hosted runners to test it
|
||||||
|
function isSupportedPlatform() {
|
||||||
|
const platform = getOSName()
|
||||||
|
switch (platform) {
|
||||||
|
case 'ubuntu':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
|
case 'macos':
|
||||||
|
// See https://github.com/ruby/ruby-builder/blob/master/README.md#naming
|
||||||
|
// 13 on arm64 because of old macos-arm-oss runners
|
||||||
|
return (os.arch() === 'x64' && parseInt(getOSVersion()) >= 12) ||
|
||||||
|
(os.arch() === 'arm64' && parseInt(getOSVersion()) >= 13)
|
||||||
|
case 'windows':
|
||||||
|
return GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
|
// Actually a self-hosted runner for which the OS and OS version does not correspond to a GitHub-hosted runner image,
|
||||||
function isSelfHostedRunner() {
|
function isSelfHostedRunner() {
|
||||||
if (inputs.selfHosted === undefined) {
|
if (inputs.selfHosted === undefined) {
|
||||||
throw new Error('inputs.selfHosted should have been already set')
|
throw new Error('inputs.selfHosted should have been already set')
|
||||||
}
|
}
|
||||||
|
|
||||||
return inputs.selfHosted === 'true' ||
|
return inputs.selfHosted === 'true' || !isSupportedPlatform()
|
||||||
!GitHubHostedPlatforms.includes(getOSNameVersionArch())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function selfHostedRunnerReason() {
|
function selfHostedRunnerReason() {
|
||||||
if (inputs.selfHosted === 'true') {
|
if (inputs.selfHosted === 'true') {
|
||||||
return 'the self-hosted input was set'
|
return 'the self-hosted input was set'
|
||||||
} else if (!GitHubHostedPlatforms.includes(getOSNameVersionArch())) {
|
} else if (!isSupportedPlatform()) {
|
||||||
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
|
return 'the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported)'
|
||||||
} else {
|
} else {
|
||||||
return 'unknown reason'
|
return 'unknown reason'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let osNameVersion = undefined
|
let osName = undefined
|
||||||
|
let osVersion = undefined
|
||||||
|
|
||||||
function getOSNameVersion() {
|
function getOSName() {
|
||||||
if (osNameVersion !== undefined) {
|
if (osName !== undefined) {
|
||||||
return osNameVersion
|
return osName
|
||||||
}
|
}
|
||||||
|
|
||||||
const platform = os.platform()
|
const platform = os.platform()
|
||||||
let osName
|
|
||||||
let osVersion
|
|
||||||
if (platform === 'linux') {
|
if (platform === 'linux') {
|
||||||
const info = linuxOSInfo({mode: 'sync'})
|
const info = linuxOSInfo({mode: 'sync'})
|
||||||
osName = info.id
|
osName = info.id
|
||||||
osVersion = info.version_id
|
|
||||||
} else if (platform === 'darwin') {
|
} else if (platform === 'darwin') {
|
||||||
osName = 'macos'
|
osName = 'macos'
|
||||||
osVersion = macosRelease().version
|
|
||||||
} else if (platform === 'win32') {
|
} else if (platform === 'win32') {
|
||||||
osName = 'windows'
|
osName = 'windows'
|
||||||
|
} else {
|
||||||
|
throw new Error(`Unknown platform ${platform}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
return osName
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOSVersion() {
|
||||||
|
if (osVersion !== undefined) {
|
||||||
|
return osVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
const platform = os.platform()
|
||||||
|
if (platform === 'linux') {
|
||||||
|
const info = linuxOSInfo({mode: 'sync'})
|
||||||
|
osVersion = info.version_id
|
||||||
|
} else if (platform === 'darwin') {
|
||||||
|
// See https://github.com/sindresorhus/macos-release/blob/main/index.js
|
||||||
|
const darwinVersion = parseInt(os.release().match(/^\d+/)[0])
|
||||||
|
osVersion = `${darwinVersion - 9}`
|
||||||
|
} else if (platform === 'win32') {
|
||||||
osVersion = findWindowsVersion()
|
osVersion = findWindowsVersion()
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`Unknown platform ${platform}`)
|
throw new Error(`Unknown platform ${platform}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
osNameVersion = `${osName}-${osVersion}`
|
return osVersion
|
||||||
return osNameVersion
|
}
|
||||||
|
|
||||||
|
function getOSNameVersion() {
|
||||||
|
return `${getOSName()}-${getOSVersion()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOSNameVersionArch() {
|
function getOSNameVersionArch() {
|
||||||
return `${getOSNameVersion()}-${os.arch()}`
|
return `${getOSName()}-${getOSVersion()}-${os.arch()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
function findWindowsVersion() {
|
function findWindowsVersion() {
|
||||||
const version = os.version();
|
const version = os.version()
|
||||||
const match = version.match(/^Windows Server (\d+) Datacenter/)
|
const match = version.match(/^Windows Server (\d+) Datacenter/)
|
||||||
if (match) {
|
if (match) {
|
||||||
return match[1]
|
return match[1]
|
||||||
@@ -621,15 +611,14 @@ function getRunnerToolCache() {
|
|||||||
|
|
||||||
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
|
// Rubies prebuilt by this action embed this path rather than using $RUNNER_TOOL_CACHE
|
||||||
function getDefaultToolCachePath() {
|
function getDefaultToolCachePath() {
|
||||||
const platform = getOSNameVersion()
|
const platform = getOSName()
|
||||||
if (platform.startsWith('ubuntu-')) {
|
switch (platform) {
|
||||||
return '/opt/hostedtoolcache'
|
case 'ubuntu':
|
||||||
} else if (platform.startsWith('macos-')) {
|
return '/opt/hostedtoolcache'
|
||||||
return '/Users/runner/hostedtoolcache'
|
case 'macos':
|
||||||
} else if (platform.startsWith('windows-')) {
|
return '/Users/runner/hostedtoolcache'
|
||||||
return 'C:\\hostedtoolcache\\windows'
|
case 'windows':
|
||||||
} else {
|
return 'C:\\hostedtoolcache\\windows'
|
||||||
throw new Error('Unknown platform')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64961,7 +64950,7 @@ const core = __nccwpck_require__(2186)
|
|||||||
const exec = __nccwpck_require__(1514)
|
const exec = __nccwpck_require__(1514)
|
||||||
const io = __nccwpck_require__(7436)
|
const io = __nccwpck_require__(7436)
|
||||||
const tc = __nccwpck_require__(7784)
|
const tc = __nccwpck_require__(7784)
|
||||||
const common = __nccwpck_require__(3143)
|
const common = __nccwpck_require__(4717)
|
||||||
const rubyBuilderVersions = __nccwpck_require__(5959)
|
const rubyBuilderVersions = __nccwpck_require__(5959)
|
||||||
|
|
||||||
const builderReleaseTag = 'toolcache'
|
const builderReleaseTag = 'toolcache'
|
||||||
@@ -65090,7 +65079,7 @@ __nccwpck_require__.r(__webpack_exports__);
|
|||||||
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
||||||
/* harmony export */ "rubygemsUpdate": () => (/* binding */ rubygemsUpdate)
|
/* harmony export */ "rubygemsUpdate": () => (/* binding */ rubygemsUpdate)
|
||||||
/* harmony export */ });
|
/* harmony export */ });
|
||||||
const common = __nccwpck_require__(3143)
|
const common = __nccwpck_require__(4717)
|
||||||
const path = __nccwpck_require__(1017)
|
const path = __nccwpck_require__(1017)
|
||||||
const exec = __nccwpck_require__(1514)
|
const exec = __nccwpck_require__(1514)
|
||||||
const semver = __nccwpck_require__(1383)
|
const semver = __nccwpck_require__(1383)
|
||||||
@@ -65175,7 +65164,7 @@ const core = __nccwpck_require__(2186)
|
|||||||
const exec = __nccwpck_require__(1514)
|
const exec = __nccwpck_require__(1514)
|
||||||
const io = __nccwpck_require__(7436)
|
const io = __nccwpck_require__(7436)
|
||||||
const tc = __nccwpck_require__(7784)
|
const tc = __nccwpck_require__(7784)
|
||||||
const common = __nccwpck_require__(3143)
|
const common = __nccwpck_require__(4717)
|
||||||
const rubyInstallerVersions = __nccwpck_require__(6459)
|
const rubyInstallerVersions = __nccwpck_require__(6459)
|
||||||
|
|
||||||
const drive = common.drive
|
const drive = common.drive
|
||||||
@@ -65737,7 +65726,7 @@ const fs = __nccwpck_require__(7147)
|
|||||||
const path = __nccwpck_require__(1017)
|
const path = __nccwpck_require__(1017)
|
||||||
const core = __nccwpck_require__(2186)
|
const core = __nccwpck_require__(2186)
|
||||||
const exec = __nccwpck_require__(1514)
|
const exec = __nccwpck_require__(1514)
|
||||||
const common = __nccwpck_require__(3143)
|
const common = __nccwpck_require__(4717)
|
||||||
const rubygems = __nccwpck_require__(160)
|
const rubygems = __nccwpck_require__(160)
|
||||||
const bundler = __nccwpck_require__(1641)
|
const bundler = __nccwpck_require__(1641)
|
||||||
|
|
||||||
@@ -65924,6 +65913,8 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
|
|||||||
- { os: macos-13, ruby: '2.5' }
|
- { os: macos-13, ruby: '2.5' }
|
||||||
|
|
||||||
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
|
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
|
||||||
|
} else if (engine === 'truffleruby' && platform.startsWith('windows')) {
|
||||||
|
throw new Error('TruffleRuby does not currently support Windows.')
|
||||||
}
|
}
|
||||||
|
|
||||||
return version
|
return version
|
||||||
|
|||||||
@@ -190,6 +190,8 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, parsedVe
|
|||||||
- { os: macos-13, ruby: '2.5' }
|
- { os: macos-13, ruby: '2.5' }
|
||||||
|
|
||||||
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
|
But of course you should consider dropping support for these long-EOL Rubies, which cannot even be built on recent macOS machines.`)
|
||||||
|
} else if (engine === 'truffleruby' && platform.startsWith('windows')) {
|
||||||
|
throw new Error('TruffleRuby does not currently support Windows.')
|
||||||
}
|
}
|
||||||
|
|
||||||
return version
|
return version
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
"@actions/io": "^1.1.2",
|
"@actions/io": "^1.1.2",
|
||||||
"@actions/tool-cache": "^2",
|
"@actions/tool-cache": "^2",
|
||||||
"linux-os-info": "^2.0.0",
|
"linux-os-info": "^2.0.0",
|
||||||
"macos-release": "^3.1.0",
|
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -281,11 +281,6 @@ lru-cache@^6.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist "^4.0.0"
|
yallist "^4.0.0"
|
||||||
|
|
||||||
macos-release@^3.1.0:
|
|
||||||
version "3.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.2.0.tgz#dcee82b6a4932971b1538dbf6f3aabc4a903b613"
|
|
||||||
integrity sha512-fSErXALFNsnowREYZ49XCdOHF8wOPWuFOGQrAhP7x5J/BqQv+B02cNsTykGpDgRVx43EKg++6ANmTaGTtW+hUA==
|
|
||||||
|
|
||||||
mime-db@1.52.0:
|
mime-db@1.52.0:
|
||||||
version "1.52.0"
|
version "1.52.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||||
|
|||||||
Reference in New Issue
Block a user