Introduce check-for-updates feature.
This commit is contained in:
@@ -7,6 +7,7 @@ export const INPUT_COMPONENTS = 'components'
|
||||
export const INPUT_GITHUB_TOKEN = 'github-token'
|
||||
export const INPUT_SET_JAVA_HOME = 'set-java-home'
|
||||
export const INPUT_CACHE = 'cache'
|
||||
export const INPUT_CHECK_FOR_UPDATES = 'check-for-updates'
|
||||
export const INPUT_NI_MUSL = 'native-image-musl'
|
||||
|
||||
export const IS_LINUX = process.platform === 'linux'
|
||||
|
||||
@@ -1,14 +1,42 @@
|
||||
import * as c from './constants'
|
||||
import * as core from '@actions/core'
|
||||
import * as tc from '@actions/tool-cache'
|
||||
import {IS_LINUX} from './constants'
|
||||
import {exec} from './utils'
|
||||
import {exec, toSemVer} from './utils'
|
||||
import {join} from 'path'
|
||||
import {lt, major, minor, valid} from 'semver'
|
||||
import {getLatestReleaseVersion} from './graalvm'
|
||||
|
||||
const MUSL_NAME = 'x86_64-linux-musl-native'
|
||||
const MUSL_VERSION = '10.2.1'
|
||||
|
||||
export async function checkForUpdates(
|
||||
graalVMVersion: string,
|
||||
javaVersion: string
|
||||
): Promise<void> {
|
||||
if (graalVMVersion === '22.3.0' && javaVersion === '11') {
|
||||
core.notice(
|
||||
'Please consider upgrading your project to Java 17+. The GraalVM 22.3.0 release is the last to support JDK11: https://github.com/oracle/graal/issues/5063'
|
||||
)
|
||||
return
|
||||
}
|
||||
const latestGraalVMVersion = await getLatestReleaseVersion()
|
||||
const selectedVersion = toSemVer(graalVMVersion)
|
||||
const latestVersion = toSemVer(latestGraalVMVersion)
|
||||
if (
|
||||
valid(selectedVersion) &&
|
||||
valid(latestVersion) &&
|
||||
lt(selectedVersion, latestVersion)
|
||||
) {
|
||||
core.notice(
|
||||
`A new GraalVM release is available! Please consider upgrading to GraalVM ${latestGraalVMVersion}. Release notes: https://www.graalvm.org/release-notes/${major(
|
||||
latestVersion
|
||||
)}_${minor(latestVersion)}/`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export async function setUpNativeImageMusl(): Promise<void> {
|
||||
if (!IS_LINUX) {
|
||||
if (!c.IS_LINUX) {
|
||||
core.warning('musl is only supported on Linux')
|
||||
return
|
||||
}
|
||||
|
||||
@@ -20,14 +20,15 @@ export async function setUpGraalVMLatest(
|
||||
if (gdsToken.length > 0) {
|
||||
return setUpGraalVMRelease(gdsToken, c.VERSION_LATEST, javaVersion)
|
||||
}
|
||||
const latestReleaseVersion = await getLatestReleaseVersion()
|
||||
return setUpGraalVMRelease(gdsToken, latestReleaseVersion, javaVersion)
|
||||
}
|
||||
|
||||
export async function getLatestReleaseVersion(): Promise<string> {
|
||||
const latestRelease = await getLatestRelease(GRAALVM_REPO_RELEASES)
|
||||
const tag_name = latestRelease.tag_name
|
||||
if (tag_name.startsWith(GRAALVM_TAG_PREFIX)) {
|
||||
const latestVersion = tag_name.substring(
|
||||
GRAALVM_TAG_PREFIX.length,
|
||||
tag_name.length
|
||||
)
|
||||
return setUpGraalVMRelease(gdsToken, latestVersion, javaVersion)
|
||||
return tag_name.substring(GRAALVM_TAG_PREFIX.length, tag_name.length)
|
||||
}
|
||||
throw new Error(`Could not find latest GraalVM release: ${tag_name}`)
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import {restore} from './cache'
|
||||
import {setUpDependencies} from './dependencies'
|
||||
import {setUpGUComponents} from './gu'
|
||||
import {setUpMandrel} from './mandrel'
|
||||
import {setUpNativeImageMusl} from './features'
|
||||
import {checkForUpdates, setUpNativeImageMusl} from './features'
|
||||
import {setUpWindowsEnvironment} from './msvc'
|
||||
|
||||
async function run(): Promise<void> {
|
||||
@@ -20,6 +20,8 @@ async function run(): Promise<void> {
|
||||
componentsString.length > 0 ? componentsString.split(',') : []
|
||||
const setJavaHome = core.getInput(c.INPUT_SET_JAVA_HOME) === 'true'
|
||||
const cache = core.getInput(c.INPUT_CACHE)
|
||||
const enableCheckForUpdates =
|
||||
core.getInput(c.INPUT_CHECK_FOR_UPDATES) === 'true'
|
||||
const enableNativeImageMusl = core.getInput(c.INPUT_NI_MUSL) === 'true'
|
||||
|
||||
if (c.IS_WINDOWS) {
|
||||
@@ -43,6 +45,9 @@ async function run(): Promise<void> {
|
||||
if (graalvmVersion.startsWith(c.MANDREL_NAMESPACE)) {
|
||||
graalVMHome = await setUpMandrel(graalvmVersion, javaVersion)
|
||||
} else {
|
||||
if (enableCheckForUpdates) {
|
||||
await checkForUpdates(graalvmVersion, javaVersion)
|
||||
}
|
||||
graalVMHome = await graalvm.setUpGraalVMRelease(
|
||||
gdsToken,
|
||||
graalvmVersion,
|
||||
|
||||
@@ -105,7 +105,7 @@ function findJavaHomeInSubfolder(searchPath: string): string {
|
||||
* semver.org versions (e.g., `22.0.0-2`), which is needed because
|
||||
* @actions/tool-cache uses `semver` to validate versions.
|
||||
*/
|
||||
function toSemVer(version: string): string {
|
||||
export function toSemVer(version: string): string {
|
||||
const parts = version.split('.')
|
||||
const major = parts[0]
|
||||
const minor = parts.length > 1 ? parts[1] : '0'
|
||||
|
||||
Reference in New Issue
Block a user