triggerWorkflowOnComplete param for cloud runner

pull/496/head
Frostebite 2023-02-05 00:07:27 +00:00
parent f2a85382ce
commit f14933b016
6 changed files with 77 additions and 1 deletions

37
dist/index.js generated vendored
View File

@ -309,6 +309,7 @@ class BuildParameters {
githubChecks: cloud_runner_options_1.default.githubChecks, githubChecks: cloud_runner_options_1.default.githubChecks,
asyncWorkflow: cloud_runner_options_1.default.asyncCloudRunner, asyncWorkflow: cloud_runner_options_1.default.asyncCloudRunner,
githubCheckId: cloud_runner_options_1.default.githubCheckId, githubCheckId: cloud_runner_options_1.default.githubCheckId,
triggerWorkflowOnComplete: cloud_runner_options_1.default.triggerWorkflowOnComplete,
}; };
}); });
} }
@ -752,6 +753,9 @@ class CloudRunnerOptions {
static get githubRepoName() { static get githubRepoName() {
return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false; return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false;
} }
static get triggerWorkflowOnComplete() {
return CloudRunnerOptions.getInput('triggerWorkflowOnComplete') || [];
}
// ### ### ### // ### ### ###
// Git syncronization parameters // Git syncronization parameters
// ### ### ### // ### ### ###
@ -1111,6 +1115,7 @@ class CloudRunner {
yield shared_workspace_locking_1.default.ReleaseWorkspace(CloudRunner.lockedWorkspace || ``, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters); yield shared_workspace_locking_1.default.ReleaseWorkspace(CloudRunner.lockedWorkspace || ``, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
CloudRunner.lockedWorkspace = undefined; CloudRunner.lockedWorkspace = undefined;
} }
yield github_1.default.triggerWorkflowOnComplete(CloudRunner.buildParameters.triggerWorkflowOnComplete);
if (buildParameters.constantGarbageCollection) { if (buildParameters.constantGarbageCollection) {
CloudRunner.Provider.garbageCollect(``, true, buildParameters.garbageCollectionMaxAge, true, true); CloudRunner.Provider.garbageCollect(``, true, buildParameters.garbageCollectionMaxAge, true, true);
} }
@ -6681,6 +6686,38 @@ class GitHub {
}); });
}); });
} }
static triggerWorkflowOnComplete(triggerWorkflowOnComplete) {
return __awaiter(this, void 0, void 0, function* () {
const workflowsResult = yield GitHub.octokitPAT.request(`GET /repos/{owner}/{repo}/actions/workflows`, {
owner: GitHub.owner,
repo: GitHub.repo,
});
const workflows = workflowsResult.data.workflows;
cloud_runner_logger_1.default.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}"`);
}
yield 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: cloud_runner_options_1.default.branch,
inputs: {
buildGuid: cloud_runner_1.default.buildParameters.buildGuid,
},
});
}
});
}
} }
GitHub.asyncChecksApiWorkflowName = `Async Checks API`; GitHub.asyncChecksApiWorkflowName = `Async Checks API`;
GitHub.githubInputEnabled = true; GitHub.githubInputEnabled = true;

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -73,6 +73,7 @@ class BuildParameters {
public githubChecks!: boolean; public githubChecks!: boolean;
public asyncWorkflow!: boolean; public asyncWorkflow!: boolean;
public githubCheckId!: string; public githubCheckId!: string;
public triggerWorkflowOnComplete!: string[];
static async create(): Promise<BuildParameters> { static async create(): Promise<BuildParameters> {
const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle); const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle);
@ -159,6 +160,7 @@ class BuildParameters {
githubChecks: CloudRunnerOptions.githubChecks, githubChecks: CloudRunnerOptions.githubChecks,
asyncWorkflow: CloudRunnerOptions.asyncCloudRunner, asyncWorkflow: CloudRunnerOptions.asyncCloudRunner,
githubCheckId: CloudRunnerOptions.githubCheckId, githubCheckId: CloudRunnerOptions.githubCheckId,
triggerWorkflowOnComplete: CloudRunnerOptions.triggerWorkflowOnComplete,
}; };
} }

View File

@ -74,6 +74,10 @@ class CloudRunnerOptions {
return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false; return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false;
} }
static get triggerWorkflowOnComplete() {
return CloudRunnerOptions.getInput('triggerWorkflowOnComplete') || [];
}
// ### ### ### // ### ### ###
// Git syncronization parameters // Git syncronization parameters
// ### ### ### // ### ### ###

View File

@ -140,6 +140,8 @@ class CloudRunner {
CloudRunner.lockedWorkspace = undefined; CloudRunner.lockedWorkspace = undefined;
} }
await GitHub.triggerWorkflowOnComplete(CloudRunner.buildParameters.triggerWorkflowOnComplete);
if (buildParameters.constantGarbageCollection) { if (buildParameters.constantGarbageCollection) {
CloudRunner.Provider.garbageCollect(``, true, buildParameters.garbageCollectionMaxAge, true, true); CloudRunner.Provider.garbageCollect(``, true, buildParameters.garbageCollectionMaxAge, true, true);
} }

View File

@ -168,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; export default GitHub;