Skip to content

Commit 1454bc7

Browse files
committed
Fetch matching git tags instead of GitHub releases.
(to resolve GraalVM release tag)
1 parent 8a43335 commit 1454bc7

4 files changed

Lines changed: 58 additions & 41 deletions

File tree

dist/main.js

Lines changed: 22 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/constants.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ export const ERROR_HINT =
5656
export type LatestReleaseResponseData =
5757
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']['data']
5858

59-
export type ListReleasesResponseData = otypes.Endpoints['GET /repos/{owner}/{repo}/releases']['response']['data']
60-
6159
export type MatchingRefsResponseData =
6260
otypes.Endpoints['GET /repos/{owner}/{repo}/git/matching-refs/{ref}']['response']['data']
6361

src/graalvm.ts

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import {
88
getContents,
99
getLatestRelease,
1010
getMatchingTags,
11-
getTaggedRelease,
12-
getLastReleases
11+
getTaggedRelease
1312
} from './utils.js'
1413
import {
1514
downloadGraalVMViaGDS,
@@ -60,29 +59,45 @@ export async function setUpGraalVMJDKCE(graalVMVersionOrDev: string, javaVersion
6059
const jdkVersion = javaVersionOrEmpty.length > 0 ? javaVersionOrEmpty : '' + semver.coerce(graalVMVersionOrDev)?.major
6160
const graalVMVersion = normalizeInnovationReleaseVersions(graalVMVersionOrDev)
6261

63-
const githubRelease = await getGraalVMCEGitHubRelease(graalVMVersion, jdkVersion)
62+
const githubRelease = await getGraalVMCEGitHubRelease(graalVMVersion)
63+
if (githubRelease.name?.includes(jdkVersion)) {
64+
core.warning(
65+
`JDK version does not match GraalVM CE release. Are you sure java-version: '${jdkVersion}' is correct?`
66+
)
67+
}
6468
const downloadUrl = findAssetDownloadUrl(githubRelease)
6569
const toolName = determineLegacyToolName(false, graalVMVersion, jdkVersion)
6670
const downloader = async () => downloadGraalVMByJavaVersionJDK(downloadUrl, graalVMVersion)
6771
return downloadExtractAndCacheJDK(downloader, toolName, graalVMVersion)
6872
}
6973

70-
async function getGraalVMCEGitHubRelease(
71-
graalVMVersion: string,
72-
jdkVersion: string
73-
): Promise<c.LatestReleaseResponseData> {
74+
async function getGraalVMCEGitHubRelease(graalVMVersion: string): Promise<c.LatestReleaseResponseData> {
75+
let tagName
7476
if (semver.valid(graalVMVersion)) {
75-
return await getTaggedRelease(c.GRAALVM_GH_USER, c.GRAALVM_RELEASES_REPO, GRAALVM_GRAAL_TAG_PREFIX + graalVMVersion)
77+
tagName = GRAALVM_GRAAL_TAG_PREFIX + graalVMVersion
78+
} else {
79+
tagName = await findReleaseTagUrl(graalVMVersion)
7680
}
77-
const latestReleases = await getLastReleases(c.GRAALVM_GH_USER, c.GRAALVM_RELEASES_REPO)
78-
for (const release of latestReleases) {
79-
if (release.tag_name.includes(graalVMVersion)) {
80-
return release
81+
return await getTaggedRelease(c.GRAALVM_GH_USER, c.GRAALVM_RELEASES_REPO, tagName)
82+
}
83+
84+
async function findReleaseTagUrl(graalVMVersion: string) {
85+
const matchingRefs = await getMatchingTags(
86+
c.GRAALVM_GH_USER,
87+
c.GRAALVM_RELEASES_REPO,
88+
GRAALVM_GRAAL_TAG_PREFIX + graalVMVersion
89+
)
90+
for (const matchingRef of matchingRefs) {
91+
const version = matchingRef.ref.substring(`refs/tags/${GRAALVM_GRAAL_TAG_PREFIX}`.length)
92+
if (semver.valid(version)) {
93+
return version
94+
} else {
95+
core.warning(
96+
`Unexpected release tag version ${version} for GraalVM version: ${graalVMVersion}. ${c.ERROR_REQUEST}`
97+
)
8198
}
8299
}
83-
throw new Error(
84-
`Unable to find GitHub release. Are you sure version: '${graalVMVersion}' and java-version: '${jdkVersion}' correct?`
85-
)
100+
throw new Error(`Could not find GraalVM CE release tag. Are you sure version: '${graalVMVersion}' is correct?`)
86101
}
87102

88103
function findAssetDownloadUrl(release: c.LatestReleaseResponseData) {

src/utils.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,13 @@ export async function getContents(repo: string, path: string): Promise<c.Content
6161
).data
6262
}
6363

64-
export async function getLastReleases(owner: string, repo: string): Promise<c.ListReleasesResponseData> {
64+
export async function getLastTags(owner: string, repo: string) {
6565
const octokit = getOctokit()
66-
return (
67-
await octokit.request('GET /repos/{owner}/{repo}/releases', {
68-
owner,
69-
repo,
70-
per_page: 100
71-
})
72-
).data
66+
return octokit.paginate('GET /repos/{owner}/{repo}/tags', {
67+
owner,
68+
repo,
69+
per_page: 100
70+
})
7371
}
7472

7573
export async function getTaggedRelease(owner: string, repo: string, tag: string): Promise<c.LatestReleaseResponseData> {

0 commit comments

Comments
 (0)