mirror of
https://github.com/graalvm/setup-graalvm.git
synced 2025-07-04 16:55:27 +08:00
refactor utils.ts and build index.js
This commit is contained in:
parent
4f45574efe
commit
5fed054030
139963
dist/cleanup/index.js
generated
vendored
139963
dist/cleanup/index.js
generated
vendored
File diff suppressed because one or more lines are too long
5987
dist/main/index.js
generated
vendored
5987
dist/main/index.js
generated
vendored
File diff suppressed because it is too large
Load Diff
@ -44,9 +44,17 @@ export const EVENT_NAME_PULL_REQUEST = 'pull_request'
|
|||||||
export const ERROR_HINT =
|
export const ERROR_HINT =
|
||||||
'If you think this is a mistake, please file an issue at: https://github.com/graalvm/setup-graalvm/issues.'
|
'If you think this is a mistake, please file an issue at: https://github.com/graalvm/setup-graalvm/issues.'
|
||||||
|
|
||||||
export const METRIC_REF_PATH = 'refs/graalvm-metrics'
|
export const METRIC_PATH = 'graalvm-metrics'
|
||||||
|
export const OCTOKIT_REF_BRANCHE_PREFIX = 'heads'
|
||||||
|
|
||||||
|
export const OCTOKIT_ROUTE_CREATE_REF = 'POST /repos/{owner}/{repo}/git/refs'
|
||||||
|
export const OCTOKIT_ROUTE_CREATE_TREE = 'POST /repos/{owner}/{repo}/git/trees'
|
||||||
|
export const OCTOKIT_ROUTE_REF = 'GET /repos/{owner}/{repo}/git/ref/'
|
||||||
|
export const OCTOKIT_ROUTE_REF_METRICS = `GET /repos/{owner}/{repo}/git/ref/${METRIC_PATH}/`
|
||||||
|
export const OCTOKIT_ROUTE_TREE = 'GET /repos/{owner}/{repo}/git/trees/'
|
||||||
|
export const OCTOKIT_ROUTE_BLOB = 'GET /repos/{owner}/{repo}/git/blobs/'
|
||||||
|
export const OCTOKIT_BASIC_HEADER = {'X-GitHub-Api-Version': '2022-11-28'}
|
||||||
|
|
||||||
export const OCTOKIT_ROUTE_REF_METRICS = `GET /repos/${context.repo.owner}/${context.repo.repo}/git/ref/metrics/${baseCommitSha}`
|
|
||||||
|
|
||||||
export type LatestReleaseResponse =
|
export type LatestReleaseResponse =
|
||||||
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']
|
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']
|
||||||
@ -54,10 +62,6 @@ export type LatestReleaseResponse =
|
|||||||
export type MatchingRefsResponse =
|
export type MatchingRefsResponse =
|
||||||
otypes.Endpoints['GET /repos/{owner}/{repo}/git/matching-refs/{ref}']['response']
|
otypes.Endpoints['GET /repos/{owner}/{repo}/git/matching-refs/{ref}']['response']
|
||||||
|
|
||||||
export type LatestReleaseResponse =
|
|
||||||
otypes.Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']
|
|
||||||
|
|
||||||
|
|
||||||
function determineJDKArchitecture(): string {
|
function determineJDKArchitecture(): string {
|
||||||
switch (process.arch) {
|
switch (process.arch) {
|
||||||
case 'x64': {
|
case 'x64': {
|
||||||
|
@ -92,7 +92,6 @@ interface BuildOutput {
|
|||||||
export async function setUpNativeImageBuildReports(
|
export async function setUpNativeImageBuildReports(
|
||||||
isGraalVMforJDK17OrLater: boolean,
|
isGraalVMforJDK17OrLater: boolean,
|
||||||
graalVMVersion: string,
|
graalVMVersion: string,
|
||||||
reportToken: string
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const isRequired = areJobReportsEnabled() || arePRReportsEnabled()
|
const isRequired = areJobReportsEnabled() || arePRReportsEnabled()
|
||||||
if (!isRequired) {
|
if (!isRequired) {
|
||||||
@ -136,13 +135,13 @@ export async function generateReports(): Promise<void> {
|
|||||||
const report = createReport(buildOutput)
|
const report = createReport(buildOutput)
|
||||||
if (areJobReportsEnabled()) {
|
if (areJobReportsEnabled()) {
|
||||||
core.summary.addRaw(report)
|
core.summary.addRaw(report)
|
||||||
core.summary.write()
|
await core.summary.write()
|
||||||
}
|
}
|
||||||
if (arePRReportsEnabled()) {
|
if (arePRReportsEnabled()) {
|
||||||
createPRComment(report)
|
await createPRComment(report)
|
||||||
}
|
}
|
||||||
const prBaseReport = createPRComparison(buildOutput, prMetrics)
|
const prBaseReport = createPRComparison(buildOutput, prMetrics)
|
||||||
createPRComment(prBaseReport)
|
await createPRComment(prBaseReport)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ async function run(): Promise<void> {
|
|||||||
if (cache && isCacheAvailable()) {
|
if (cache && isCacheAvailable()) {
|
||||||
await restore(cache)
|
await restore(cache)
|
||||||
}
|
}
|
||||||
setUpNativeImageBuildReports(isGraalVMforJDK17OrLater, graalVMVersion, reportToken)
|
setUpNativeImageBuildReports(isGraalVMforJDK17OrLater, graalVMVersion)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof Error) core.setFailed(error.message)
|
if (error instanceof Error) core.setFailed(error.message)
|
||||||
}
|
}
|
||||||
|
87
src/utils.ts
87
src/utils.ts
@ -3,13 +3,12 @@ import * as core from '@actions/core'
|
|||||||
import * as github from '@actions/github'
|
import * as github from '@actions/github'
|
||||||
import * as httpClient from '@actions/http-client'
|
import * as httpClient from '@actions/http-client'
|
||||||
import * as tc from '@actions/tool-cache'
|
import * as tc from '@actions/tool-cache'
|
||||||
import {ExecOptions, exec as e} from '@actions/exec'
|
import {exec as e, ExecOptions} from '@actions/exec'
|
||||||
import {readFileSync, readdirSync} from 'fs'
|
import {readdirSync, readFileSync} from 'fs'
|
||||||
//import {Octokit} from '@octokit/core'
|
|
||||||
import {createHash} from 'crypto'
|
import {createHash} from 'crypto'
|
||||||
import {join} from 'path'
|
import {join} from 'path'
|
||||||
import {Base64} from "js-base64";
|
import {Base64} from "js-base64";
|
||||||
import { Octokit } from '@octokit/rest';
|
import {Octokit} from '@octokit/rest';
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
import {Context} from "@actions/github/lib/context";
|
import {Context} from "@actions/github/lib/context";
|
||||||
|
|
||||||
@ -189,19 +188,17 @@ export async function createPRComment(content: string): Promise<void> {
|
|||||||
export async function createRef(sha: string) {
|
export async function createRef(sha: string) {
|
||||||
try {
|
try {
|
||||||
const commitSha = getCommitSha()
|
const commitSha = getCommitSha()
|
||||||
const ref = c.METRIC_REF_PATH + commitSha
|
const ref = c.METRIC_PATH + commitSha
|
||||||
core.info(`creating ref ${ref} for metrics tree ${sha}`);
|
core.info(`creating reference with ref '${ref}' for metrics tree ${sha}`);
|
||||||
const octokit = new Octokit({
|
const octokit = new Octokit({
|
||||||
auth: getGitHubToken(),
|
auth: getGitHubToken(),
|
||||||
request: {
|
request: {
|
||||||
fetch: fetch,
|
fetch: fetch,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const context = github.context
|
await octokit.request(c.OCTOKIT_ROUTE_CREATE_REF,
|
||||||
await octokit.request(
|
|
||||||
`POST /repos/${context.repo.owner}/${context.repo.repo}/git/refs`,
|
|
||||||
{
|
{
|
||||||
...context.repo,
|
...github.context.repo,
|
||||||
ref,
|
ref,
|
||||||
sha,
|
sha,
|
||||||
}
|
}
|
||||||
@ -224,8 +221,7 @@ export async function createTree(metadataJson: string): Promise<string> {
|
|||||||
});
|
});
|
||||||
const context = github.context
|
const context = github.context
|
||||||
core.info(`creating tree at ${context.repo.owner}/${context.repo.repo}`);
|
core.info(`creating tree at ${context.repo.owner}/${context.repo.repo}`);
|
||||||
const response = await octokit.request(
|
const response = await octokit.request(c.OCTOKIT_ROUTE_CREATE_TREE,
|
||||||
`POST /repos/${context.repo.owner}/${context.repo.repo}/git/trees`,
|
|
||||||
{
|
{
|
||||||
...context.repo,
|
...context.repo,
|
||||||
tree: [
|
tree: [
|
||||||
@ -239,12 +235,12 @@ export async function createTree(metadataJson: string): Promise<string> {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
core.info("Tree-sha" + response.data.sha);
|
|
||||||
return response.data.sha;
|
return response.data.sha;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.error(
|
core.error(
|
||||||
`Creating metrics tree failed.`
|
`Creating metrics tree failed.`
|
||||||
)
|
)
|
||||||
|
return ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,69 +248,56 @@ export async function getPrBaseBranchMetrics(): Promise<string> {
|
|||||||
if (!isPREvent()) {
|
if (!isPREvent()) {
|
||||||
throw new Error('Not a PR event.')
|
throw new Error('Not a PR event.')
|
||||||
}
|
}
|
||||||
const context = github.context
|
try {
|
||||||
const octokit = new Octokit({
|
const context = github.context
|
||||||
auth: getGitHubToken(),
|
const octokit = new Octokit({
|
||||||
request: {
|
auth: getGitHubToken(),
|
||||||
fetch: fetch,
|
request: {
|
||||||
},
|
fetch: fetch,
|
||||||
})
|
},
|
||||||
const baseCommitSha = await getBaseBranchCommitSha(octokit, context)
|
})
|
||||||
core.info(baseCommitSha)
|
const baseCommitSha = await getBaseBranchCommitSha(octokit, context)
|
||||||
const blobTreeSha = await getBlobTreeSha(octokit, context, baseCommitSha)
|
const blobTreeSha = await getBlobTreeSha(octokit, context, baseCommitSha)
|
||||||
core.info(blobTreeSha)
|
const blobSha = await getBlobSha(octokit, context, blobTreeSha)
|
||||||
const blobSha = await getBlobSha(octokit, context, blobTreeSha)
|
return await getBlobContent(octokit, context, blobSha)
|
||||||
core.info(blobSha)
|
} catch (err) {
|
||||||
const blobContent = await getBlobContent(octokit, context, blobSha)
|
core.error('Failed to get build metrics for PR base branch.')
|
||||||
core.info(blobContent)
|
return ''
|
||||||
return blobContent
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBaseBranchCommitSha(octokit: Octokit, context: Context): Promise<string> {
|
async function getBaseBranchCommitSha(octokit: Octokit, context: Context): Promise<string> {
|
||||||
const prBaseSha = getPrBaseBranchSha()
|
const prBaseBranchName = getPrBaseBranchSha()
|
||||||
core.info(prBaseSha)
|
const { data } = await octokit.request(c.OCTOKIT_ROUTE_REF + c.OCTOKIT_REF_BRANCHE_PREFIX + '/' + prBaseBranchName, {
|
||||||
const { data } = await octokit.request(`GET /repos/${context.repo.owner}/${context.repo.repo}/git/ref/heads/${prBaseSha}`, {
|
|
||||||
...context.repo,
|
...context.repo,
|
||||||
ref: 'heads/' + prBaseSha,
|
ref: c.OCTOKIT_REF_BRANCHE_PREFIX + '/' + prBaseBranchName,
|
||||||
headers: {
|
headers: c.OCTOKIT_BASIC_HEADER
|
||||||
'X-GitHub-Api-Version': '2022-11-28'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
core.info(data)
|
|
||||||
return data.object.sha
|
return data.object.sha
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBlobTreeSha(octokit: Octokit, context: Context, baseCommitSha: string): Promise<string> {
|
async function getBlobTreeSha(octokit: Octokit, context: Context, baseCommitSha: string): Promise<string> {
|
||||||
const { data } = await octokit.request(, {
|
const { data } = await octokit.request(c.OCTOKIT_ROUTE_REF_METRICS + baseCommitSha, {
|
||||||
...context.repo,
|
...context.repo,
|
||||||
headers: {
|
headers: c.OCTOKIT_BASIC_HEADER
|
||||||
'X-GitHub-Api-Version': '2022-11-28'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
core.info(data)
|
|
||||||
return data.object.sha
|
return data.object.sha
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBlobSha(octokit: Octokit, context: Context, blobTreeSha: string) {
|
async function getBlobSha(octokit: Octokit, context: Context, blobTreeSha: string) {
|
||||||
const { data } = await octokit.request(`GET /repos/${context.repo.owner}/${context.repo.repo}/git/trees/${blobTreeSha}`, {
|
const { data } = await octokit.request(c.OCTOKIT_ROUTE_TREE + blobTreeSha, {
|
||||||
...context.repo,
|
...context.repo,
|
||||||
tree_sha: blobTreeSha,
|
tree_sha: blobTreeSha,
|
||||||
headers: {
|
headers: c.OCTOKIT_BASIC_HEADER
|
||||||
'X-GitHub-Api-Version': '2022-11-28'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
core.info(data)
|
|
||||||
return data.tree[0].sha
|
return data.tree[0].sha
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getBlobContent(octokit: Octokit, context: Context, blobSha: string) {
|
async function getBlobContent(octokit: Octokit, context: Context, blobSha: string) {
|
||||||
const { data } = await octokit.request(`GET /repos/${context.repo.owner}/${context.repo.repo}/git/blobs/${blobSha}`, {
|
const { data } = await octokit.request(c.OCTOKIT_ROUTE_BLOB + blobSha, {
|
||||||
...context.repo,
|
...context.repo,
|
||||||
file_sha: blobSha,
|
file_sha: blobSha,
|
||||||
headers: {
|
headers: c.OCTOKIT_BASIC_HEADER
|
||||||
'X-GitHub-Api-Version': '2022-11-28'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
core.info(data)
|
|
||||||
return Base64.decode(data.content)
|
return Base64.decode(data.content)
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user