From 8cbb31fb8704c7034812846cfbcff19967c8aebe Mon Sep 17 00:00:00 2001 From: Raul Hernandez Date: Mon, 26 Jul 2021 13:02:34 +0200 Subject: [PATCH 1/4] fix cancelling jobs from different repos where two branches have the same name --- dist/index.js | 17 +++++++++++++++-- package.json | 2 +- src/index.ts | 12 +++++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index 3056d027..98ad26e6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6078,6 +6078,9 @@ __nccwpck_require__.r(__webpack_exports__); /* harmony import */ var _actions_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(_actions_core__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _actions_github__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(438); /* harmony import */ var _actions_github__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(_actions_github__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(747); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__); + if (!_actions_github__WEBPACK_IMPORTED_MODULE_1__) { @@ -6088,7 +6091,7 @@ if (!_actions_core__WEBPACK_IMPORTED_MODULE_0__) { } async function main() { const { eventName, sha, ref, repo: { owner, repo }, payload, } = _actions_github__WEBPACK_IMPORTED_MODULE_1__.context; - const { GITHUB_RUN_ID } = process.env; + const { GITHUB_RUN_ID, GITHUB_EVENT_PATH } = process.env; let branch = ref.slice(11); let headSha = sha; if (payload.pull_request) { @@ -6122,6 +6125,15 @@ async function main() { workflow_ids.push(String(current_run.workflow_id)); } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); + const trigger_repo_id = (function () { + try { + const data = JSON.parse((0,fs__WEBPACK_IMPORTED_MODULE_2__.readFileSync)(GITHUB_EVENT_PATH || '', 'utf8')); + return data.workflow_run.head_repository.id; + } + catch (e) { + return current_run.head_repository.id; + } + })(); await Promise.all(workflow_ids.map(async (workflow_id) => { try { const { data: { total_count, workflow_runs }, } = await octokit.actions.listWorkflowRuns({ @@ -6139,7 +6151,8 @@ async function main() { .reduce((a, b) => Math.max(a, b), cancelBefore.getTime()); cancelBefore = new Date(n); } - const runningWorkflows = workflow_runs.filter(run => run.id !== current_run.id && + const runningWorkflows = workflow_runs.filter(run => run.head_repository.id === trigger_repo_id && + run.id !== current_run.id && (ignore_sha || run.head_sha !== headSha) && run.status !== 'completed' && new Date(run.created_at) < cancelBefore); diff --git a/package.json b/package.json index 193e20a3..f9e474aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cancel-workflow-action", - "version": "0.9.0", + "version": "0.9.1", "main": "dist/index.js", "license": "MIT", "scripts": { diff --git a/src/index.ts b/src/index.ts index 81c47fdc..7a7fbdb2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ import * as core from '@actions/core'; import * as github from '@actions/github'; +import { readFileSync } from 'fs'; if (!github) { throw new Error('Module not found: github'); @@ -17,7 +18,7 @@ async function main() { repo: { owner, repo }, payload, } = github.context; - const { GITHUB_RUN_ID } = process.env; + const { GITHUB_RUN_ID, GITHUB_EVENT_PATH } = process.env; let branch = ref.slice(11); let headSha = sha; @@ -55,6 +56,14 @@ async function main() { workflow_ids.push(String(current_run.workflow_id)); } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); + const trigger_repo_id = (function () { + try { + const data = JSON.parse(readFileSync(GITHUB_EVENT_PATH || '', 'utf8')); + return data.workflow_run.head_repository.id; + } catch (e) { + return current_run.head_repository.id; + } + })(); await Promise.all( workflow_ids.map(async workflow_id => { try { @@ -78,6 +87,7 @@ async function main() { } const runningWorkflows = workflow_runs.filter( run => + run.head_repository.id === trigger_repo_id && run.id !== current_run.id && (ignore_sha || run.head_sha !== headSha) && run.status !== 'completed' && From 938c9b316740b87259d40f05a82f45fcf97d5fca Mon Sep 17 00:00:00 2001 From: Raul Hernandez Date: Tue, 27 Jul 2021 12:40:28 +0200 Subject: [PATCH 2/4] cleanup --- dist/index.js | 12 ++++-------- src/index.ts | 10 ++++------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/dist/index.js b/dist/index.js index 98ad26e6..8618fb95 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6078,9 +6078,6 @@ __nccwpck_require__.r(__webpack_exports__); /* harmony import */ var _actions_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(_actions_core__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _actions_github__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(438); /* harmony import */ var _actions_github__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(_actions_github__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(747); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__); - if (!_actions_github__WEBPACK_IMPORTED_MODULE_1__) { @@ -6091,7 +6088,7 @@ if (!_actions_core__WEBPACK_IMPORTED_MODULE_0__) { } async function main() { const { eventName, sha, ref, repo: { owner, repo }, payload, } = _actions_github__WEBPACK_IMPORTED_MODULE_1__.context; - const { GITHUB_RUN_ID, GITHUB_EVENT_PATH } = process.env; + const { GITHUB_RUN_ID } = process.env; let branch = ref.slice(11); let headSha = sha; if (payload.pull_request) { @@ -6126,11 +6123,10 @@ async function main() { } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); const trigger_repo_id = (function () { - try { - const data = JSON.parse((0,fs__WEBPACK_IMPORTED_MODULE_2__.readFileSync)(GITHUB_EVENT_PATH || '', 'utf8')); - return data.workflow_run.head_repository.id; + if (payload.workflow_run) { + return payload.workflow_run.head_repository.id; } - catch (e) { + else { return current_run.head_repository.id; } })(); diff --git a/src/index.ts b/src/index.ts index 7a7fbdb2..33c0538c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ import * as core from '@actions/core'; import * as github from '@actions/github'; -import { readFileSync } from 'fs'; if (!github) { throw new Error('Module not found: github'); @@ -18,7 +17,7 @@ async function main() { repo: { owner, repo }, payload, } = github.context; - const { GITHUB_RUN_ID, GITHUB_EVENT_PATH } = process.env; + const { GITHUB_RUN_ID } = process.env; let branch = ref.slice(11); let headSha = sha; @@ -57,10 +56,9 @@ async function main() { } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); const trigger_repo_id = (function () { - try { - const data = JSON.parse(readFileSync(GITHUB_EVENT_PATH || '', 'utf8')); - return data.workflow_run.head_repository.id; - } catch (e) { + if (payload.workflow_run) { + return payload.workflow_run.head_repository.id; + } else { return current_run.head_repository.id; } })(); From c85635ac283fb8eb94d050d231cd4ce27be716f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Hern=C3=A1ndez?= Date: Wed, 28 Jul 2021 09:14:07 +0200 Subject: [PATCH 3/4] remove the unnecessary iife --- dist/index.js | 9 +-------- src/index.ts | 8 +------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/dist/index.js b/dist/index.js index 8618fb95..3f613e47 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6122,14 +6122,7 @@ async function main() { workflow_ids.push(String(current_run.workflow_id)); } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); - const trigger_repo_id = (function () { - if (payload.workflow_run) { - return payload.workflow_run.head_repository.id; - } - else { - return current_run.head_repository.id; - } - })(); + const trigger_repo_id = (payload.workflow_run || current_run).head_repository.id; await Promise.all(workflow_ids.map(async (workflow_id) => { try { const { data: { total_count, workflow_runs }, } = await octokit.actions.listWorkflowRuns({ diff --git a/src/index.ts b/src/index.ts index 33c0538c..cfbb846e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -55,13 +55,7 @@ async function main() { workflow_ids.push(String(current_run.workflow_id)); } console.log(`Found workflow_id: ${JSON.stringify(workflow_ids)}`); - const trigger_repo_id = (function () { - if (payload.workflow_run) { - return payload.workflow_run.head_repository.id; - } else { - return current_run.head_repository.id; - } - })(); + const trigger_repo_id = (payload.workflow_run || current_run).head_repository.id; await Promise.all( workflow_ids.map(async workflow_id => { try { From 860d4c7374d6e4a1c482e80897cb913ae46692ac Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 29 Jul 2021 16:53:25 -0400 Subject: [PATCH 4/4] Revert package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f9e474aa..193e20a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cancel-workflow-action", - "version": "0.9.1", + "version": "0.9.0", "main": "dist/index.js", "license": "MIT", "scripts": {