triggerWorkflowOnComplete param for cloud runner

This commit is contained in:
Frostebite
2023-02-05 00:16:42 +00:00
parent e334dc785a
commit 00c5685d03
21 changed files with 241 additions and 86 deletions

View File

@@ -9,6 +9,7 @@ class GitHub {
private static longDescriptionContent: string = ``;
private static startedDate: string;
private static endedDate: string;
static result: string = ``;
private static get octokitDefaultToken() {
return new Octokit({
auth: process.env.GITHUB_TOKEN,
@@ -32,7 +33,7 @@ class GitHub {
}
private static get checkRunId() {
return CloudRunner.githubCheckId;
return CloudRunner.buildParameters.githubCheckId;
}
private static get owner() {
@@ -44,13 +45,12 @@ class GitHub {
}
public static async createGitHubCheck(summary) {
if (!CloudRunnerOptions.githubChecks) {
if (!CloudRunnerOptions.githubChecks || CloudRunner.isCloudRunnerEnvironment) {
return ``;
}
GitHub.startedDate = new Date().toISOString();
CloudRunnerLogger.log(`POST /repos/${GitHub.owner}/${GitHub.repo}/check-runs`);
CloudRunnerLogger.log(`Creating inital github check`);
const data = {
owner: GitHub.owner,
repo: GitHub.repo,
@@ -77,15 +77,20 @@ class GitHub {
};
const result = await GitHub.createGitHubCheckRequest(data);
return result.data.id;
return result.data.id.toString();
}
public static async updateGitHubCheck(longDescription, summary, result = `neutral`, status = `in_progress`) {
if (!CloudRunnerOptions.githubChecks) {
const isLocalAsync = CloudRunner.buildParameters.asyncWorkflow && !CloudRunner.isCloudRunnerAsyncEnvironment;
if (!CloudRunnerOptions.githubChecks || isLocalAsync) {
return;
}
GitHub.longDescriptionContent += `\n${longDescription}`;
if (GitHub.result !== `success` && GitHub.result !== `failure`) {
GitHub.result = result;
} else {
result = GitHub.result;
}
const data: any = {
owner: GitHub.owner,
repo: GitHub.repo,
@@ -114,11 +119,13 @@ class GitHub {
data.conclusion = result;
}
if (await CloudRunnerOptions.asyncCloudRunner) {
if (CloudRunner.isCloudRunnerAsyncEnvironment) {
CloudRunnerLogger.log(`Updating check via async update workflow`);
await GitHub.runUpdateAsyncChecksWorkflow(data, `update`);
return;
}
CloudRunnerLogger.log(`Updating check via direct call`);
await GitHub.updateGitHubCheckRequest(data);
}
@@ -134,18 +141,16 @@ class GitHub {
if (mode === `create`) {
throw new Error(`Not supported: only use update`);
}
const workflowsResult = await GitHub.octokitDefaultToken.request(
`GET /repos/${GitHub.owner}/${GitHub.repo}/actions/workflows`,
{
owner: GitHub.owner,
repo: GitHub.repo,
},
);
const workflowsResult = await GitHub.octokitPAT.request(`GET /repos/{owner}/{repo}/actions/workflows`, {
owner: GitHub.owner,
repo: GitHub.repo,
});
const workflows = workflowsResult.data.workflows;
CloudRunnerLogger.log(`Got ${workflows.length} workflows`);
let selectedId = ``;
for (let index = 0; index < workflowsResult.data.total_count; index++) {
if (workflows[index].name === GitHub.asyncChecksApiWorkflowName) {
selectedId = workflows[index].id;
selectedId = workflows[index].id.toString();
}
}
if (selectedId === ``) {
@@ -163,6 +168,37 @@ class GitHub {
},
});
}
static async triggerWorkflowOnComplete(triggerWorkflowOnComplete: string[]) {
const workflowsResult = await GitHub.octokitPAT.request(`GET /repos/{owner}/{repo}/actions/workflows`, {
owner: GitHub.owner,
repo: GitHub.repo,
});
const workflows = workflowsResult.data.workflows;
CloudRunnerLogger.log(`Got ${workflows.length} workflows`);
for (const element of triggerWorkflowOnComplete) {
let selectedId = ``;
for (let index = 0; index < workflowsResult.data.total_count; index++) {
if (workflows[index].name === element) {
selectedId = workflows[index].id.toString();
}
}
if (selectedId === ``) {
core.info(JSON.stringify(workflows));
throw new Error(`no workflow with name "${GitHub.asyncChecksApiWorkflowName}"`);
}
await GitHub.octokitPAT.request(`POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches`, {
owner: GitHub.owner,
repo: GitHub.repo,
// eslint-disable-next-line camelcase
workflow_id: selectedId,
ref: CloudRunnerOptions.branch,
inputs: {
buildGuid: CloudRunner.buildParameters.buildGuid,
},
});
}
}
}
export default GitHub;