triggerWorkflowOnComplete param for cloud runner
parent
f2a85382ce
commit
f14933b016
|
@ -309,6 +309,7 @@ class BuildParameters {
|
|||
githubChecks: cloud_runner_options_1.default.githubChecks,
|
||||
asyncWorkflow: cloud_runner_options_1.default.asyncCloudRunner,
|
||||
githubCheckId: cloud_runner_options_1.default.githubCheckId,
|
||||
triggerWorkflowOnComplete: cloud_runner_options_1.default.triggerWorkflowOnComplete,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
@ -752,6 +753,9 @@ class CloudRunnerOptions {
|
|||
static get githubRepoName() {
|
||||
return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false;
|
||||
}
|
||||
static get triggerWorkflowOnComplete() {
|
||||
return CloudRunnerOptions.getInput('triggerWorkflowOnComplete') || [];
|
||||
}
|
||||
// ### ### ###
|
||||
// Git syncronization parameters
|
||||
// ### ### ###
|
||||
|
@ -1111,6 +1115,7 @@ class CloudRunner {
|
|||
yield shared_workspace_locking_1.default.ReleaseWorkspace(CloudRunner.lockedWorkspace || ``, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
||||
CloudRunner.lockedWorkspace = undefined;
|
||||
}
|
||||
yield github_1.default.triggerWorkflowOnComplete(CloudRunner.buildParameters.triggerWorkflowOnComplete);
|
||||
if (buildParameters.constantGarbageCollection) {
|
||||
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.githubInputEnabled = true;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -73,6 +73,7 @@ class BuildParameters {
|
|||
public githubChecks!: boolean;
|
||||
public asyncWorkflow!: boolean;
|
||||
public githubCheckId!: string;
|
||||
public triggerWorkflowOnComplete!: string[];
|
||||
|
||||
static async create(): Promise<BuildParameters> {
|
||||
const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle);
|
||||
|
@ -159,6 +160,7 @@ class BuildParameters {
|
|||
githubChecks: CloudRunnerOptions.githubChecks,
|
||||
asyncWorkflow: CloudRunnerOptions.asyncCloudRunner,
|
||||
githubCheckId: CloudRunnerOptions.githubCheckId,
|
||||
triggerWorkflowOnComplete: CloudRunnerOptions.triggerWorkflowOnComplete,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,10 @@ class CloudRunnerOptions {
|
|||
return CloudRunnerOptions.getInput('githubRepoName') || CloudRunnerOptions.githubRepo.split(`/`)[1] || false;
|
||||
}
|
||||
|
||||
static get triggerWorkflowOnComplete() {
|
||||
return CloudRunnerOptions.getInput('triggerWorkflowOnComplete') || [];
|
||||
}
|
||||
|
||||
// ### ### ###
|
||||
// Git syncronization parameters
|
||||
// ### ### ###
|
||||
|
|
|
@ -140,6 +140,8 @@ class CloudRunner {
|
|||
CloudRunner.lockedWorkspace = undefined;
|
||||
}
|
||||
|
||||
await GitHub.triggerWorkflowOnComplete(CloudRunner.buildParameters.triggerWorkflowOnComplete);
|
||||
|
||||
if (buildParameters.constantGarbageCollection) {
|
||||
CloudRunner.Provider.garbageCollect(``, true, buildParameters.garbageCollectionMaxAge, true, true);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue