diff --git a/README.md b/README.md
index 3c75d920..17b7fb45 100644
--- a/README.md
+++ b/README.md
@@ -61,6 +61,7 @@ jobs:
#custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
#lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true)
#use-dco-flag: true - If you are using DCO instead of CLA
+ #pr-number: pull request number - Required only if the job was not triggered with a pull_request event
```
@@ -138,6 +139,7 @@ This PAT should have repo scope and is only required if you have configured to s
| `custom-pr-sign-comment` | _optional_ | The signature to be committed in order to sign the CLA. | I have read the Developer Terms Document and I hereby accept the Terms |
| `custom-allsigned-prcomment` | _optional_ | pull request comment when everyone has signed | All Contributors have signed the CLA. |
| `lock-pullrequest-aftermerge` | _optional_ | Boolean input for locking the pull request after merging. Default is set to `true`. It is highly recommended to lock the Pull Request after merging so that the Contributors won't be able to revoke their signature comments after merge | false |
+| `pr-number` | _optional_ | pull request number (required when the workflow event is not pull_request / pull_request_target). | 42 |
## Contributors
diff --git a/action.yml b/action.yml
index 6ea0466b..4b8c632e 100644
--- a/action.yml
+++ b/action.yml
@@ -38,6 +38,8 @@ inputs:
lock-pullrequest-aftermerge:
description: "Will lock the pull request after merge so that the signature the contributors cannot revoke their signature comments after merge"
default: "true"
+ pr-number:
+ description: "pull request number (required when the workflow event is not pull_request / pull_request_target)"
runs:
using: "node16"
main: 'dist/index.js'
diff --git a/dist/index.js b/dist/index.js
index 6ac87be9..1e4a6a96 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -682,6 +682,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
Object.defineProperty(exports, "__esModule", { value: true });
const octokit_1 = __webpack_require__(28);
const github_1 = __webpack_require__(469);
+const getInputs_1 = __webpack_require__(555);
function getCommitters() {
return __awaiter(this, void 0, void 0, function* () {
try {
@@ -727,7 +728,7 @@ function getCommitters() {
}`.replace(/ /g, ''), {
owner: github_1.context.repo.owner,
name: github_1.context.repo.repo,
- number: github_1.context.issue.number,
+ number: (0, getInputs_1.getPrNumber)(github_1.context.issue.number),
cursor: ''
});
response.repository.pullRequest.commits.edges.forEach(edge => {
@@ -735,7 +736,7 @@ function getCommitters() {
let user = {
name: committer.login || committer.name,
id: committer.databaseId || '',
- pullRequestNo: github_1.context.issue.number
+ pullRequestNo: (0, getInputs_1.getPrNumber)(github_1.context.issue.number)
};
if (committers.length === 0 || committers.map((c) => {
return c.name;
@@ -1648,10 +1649,11 @@ exports.lockPullRequest = void 0;
const octokit_1 = __webpack_require__(28);
const core = __importStar(__webpack_require__(470));
const github_1 = __webpack_require__(469);
+const getInputs_1 = __webpack_require__(555);
function lockPullRequest() {
return __awaiter(this, void 0, void 0, function* () {
core.info('Locking the Pull Request to safe guard the Pull Request CLA Signatures');
- const pullRequestNo = github_1.context.issue.number;
+ const pullRequestNo = (0, getInputs_1.getPrNumber)(github_1.context.issue.number);
try {
yield octokit_1.octokit.issues.lock({
owner: github_1.context.repo.owner,
@@ -1903,7 +1905,7 @@ exports.createFile = createFile;
function updateFile(sha, claFileContent, reactedCommitters) {
return __awaiter(this, void 0, void 0, function* () {
const octokitInstance = isRemoteRepoOrOrgConfigured() ? (0, octokit_1.getPATOctokit)() : (0, octokit_1.getDefaultOctokitClient)();
- const pullRequestNo = github_1.context.issue.number;
+ const pullRequestNo = input.getPrNumber(github_1.context.issue.number);
const owner = github_1.context.issue.owner;
const repo = github_1.context.issue.repo;
claFileContent === null || claFileContent === void 0 ? void 0 : claFileContent.signedContributors.push(...reactedCommitters.newSigned);
@@ -2088,7 +2090,7 @@ function dco(signed, committerMap) {
`;
if (committersCount > 1 && committerMap && committerMap.signed && committerMap.notSigned) {
text += `**${committerMap.signed.length}** out of **${committerMap.signed.length + committerMap.notSigned.length}** committers have signed the DCO.`;
- committerMap.signed.forEach(signedCommitter => { text += `
:white_check_mark: @${signedCommitter.name}`; });
+ committerMap.signed.forEach(signedCommitter => { text += `
:white_check_mark: (${signedCommitter.name})[https://github.com/${signedCommitter.name}]`; });
committerMap.notSigned.forEach(unsignedCommitter => {
text += `
:x: @${unsignedCommitter.name}`;
});
@@ -2122,7 +2124,7 @@ function cla(signed, committerMap) {
`;
if (committersCount > 1 && committerMap && committerMap.signed && committerMap.notSigned) {
text += `**${committerMap.signed.length}** out of **${committerMap.signed.length + committerMap.notSigned.length}** committers have signed the CLA.`;
- committerMap.signed.forEach(signedCommitter => { text += `
:white_check_mark: @${signedCommitter.name}`; });
+ committerMap.signed.forEach(signedCommitter => { text += `
:white_check_mark: (${signedCommitter.name})[https://github.com/${signedCommitter.name}]`; });
committerMap.notSigned.forEach(unsignedCommitter => {
text += `
:x: @${unsignedCommitter.name}`;
});
@@ -2213,6 +2215,7 @@ const github_1 = __webpack_require__(469);
const persistence_1 = __webpack_require__(362);
const pullRerunRunner_1 = __webpack_require__(633);
const core = __importStar(__webpack_require__(470));
+const getInputs_1 = __webpack_require__(555);
function setupClaCheck() {
return __awaiter(this, void 0, void 0, function* () {
let committerMap = getInitialCommittersMap();
@@ -2233,7 +2236,7 @@ function setupClaCheck() {
return (0, pullRerunRunner_1.reRunLastWorkFlowIfRequired)();
}
else {
- core.setFailed(`Committers of Pull Request number ${github_1.context.issue.number} have to sign the CLA 📝`);
+ core.setFailed(`Committers of Pull Request number ${(0, getInputs_1.getPrNumber)(github_1.context.issue.number)} have to sign the CLA 📝`);
}
}
catch (err) {
@@ -2277,7 +2280,7 @@ function createClaFileAndPRComment(committers, committerMap) {
const initialContentBinary = Buffer.from(initialContentString).toString('base64');
yield (0, persistence_1.createFile)(initialContentBinary).catch(error => core.setFailed(`Error occurred when creating the signed contributors file: ${error.message || error}. Make sure the branch where signatures are stored is NOT protected.`));
yield (0, pullRequestComment_1.default)(committerMap, committers);
- throw new Error(`Committers of pull request ${github_1.context.issue.number} have to sign the CLA`);
+ throw new Error(`Committers of pull request ${(0, getInputs_1.getPrNumber)(github_1.context.issue.number)} have to sign the CLA`);
});
}
function prepareCommiterMap(committers, claFileContent) {
@@ -2379,13 +2382,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
const octokit_1 = __webpack_require__(28);
const github_1 = __webpack_require__(469);
const getInputs_1 = __webpack_require__(555);
+const getInputs_2 = __webpack_require__(555);
function signatureWithPRComment(committerMap, committers) {
return __awaiter(this, void 0, void 0, function* () {
let repoId = github_1.context.payload.repository.id;
let prResponse = yield octokit_1.octokit.issues.listComments({
owner: github_1.context.repo.owner,
repo: github_1.context.repo.repo,
- issue_number: github_1.context.issue.number
+ issue_number: (0, getInputs_2.getPrNumber)(github_1.context.issue.number)
});
let listOfPRComments = [];
let filteredListOfPRComments = [];
@@ -2397,7 +2401,7 @@ function signatureWithPRComment(committerMap, committers) {
body: prComment.body.trim().toLowerCase(),
created_at: prComment.created_at,
repoId: repoId,
- pullRequestNo: github_1.context.issue.number
+ pullRequestNo: (0, getInputs_2.getPrNumber)(github_1.context.issue.number)
});
});
listOfPRComments.map(comment => {
@@ -4494,7 +4498,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
-exports.lockPullRequestAfterMerge = exports.getCustomPrSignComment = exports.getUseDcoFlag = exports.getCustomAllSignedPrComment = exports.getCustomNotSignedPrComment = exports.getCreateFileCommitMessage = exports.getSignedCommitMessage = exports.getEmptyCommitFlag = exports.getAllowListItem = exports.getBranch = exports.getPathToDocument = exports.getPathToSignatures = exports.getRemoteOrgName = exports.getRemoteRepoName = void 0;
+exports.getPrNumber = exports.lockPullRequestAfterMerge = exports.getCustomPrSignComment = exports.getUseDcoFlag = exports.getCustomAllSignedPrComment = exports.getCustomNotSignedPrComment = exports.getCreateFileCommitMessage = exports.getSignedCommitMessage = exports.getEmptyCommitFlag = exports.getAllowListItem = exports.getBranch = exports.getPathToDocument = exports.getPathToSignatures = exports.getRemoteOrgName = exports.getRemoteRepoName = void 0;
const core = __importStar(__webpack_require__(470));
const getRemoteRepoName = () => {
return core.getInput('remote-repository-name', { required: false });
@@ -4528,6 +4532,10 @@ const getCustomPrSignComment = () => core.getInput('custom-pr-sign-comment', { r
exports.getCustomPrSignComment = getCustomPrSignComment;
const lockPullRequestAfterMerge = () => core.getInput('lock-pullrequest-aftermerge', { required: false });
exports.lockPullRequestAfterMerge = lockPullRequestAfterMerge;
+const getPrNumber = (prNumberFromContext) => prNumberFromContext ?
+ prNumberFromContext :
+ Number(core.getInput('pr-number', { required: false }));
+exports.getPrNumber = getPrNumber;
/***/ }),
@@ -22039,6 +22047,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.reRunLastWorkFlowIfRequired = void 0;
const github_1 = __webpack_require__(469);
const octokit_1 = __webpack_require__(28);
+const getInputs_1 = __webpack_require__(555);
const core = __importStar(__webpack_require__(470));
// Note: why this re-run of the last failed CLA workflow status check is explained this issue https://github.com/cla-assistant/github-action/issues/39
function reRunLastWorkFlowIfRequired() {
@@ -22066,7 +22075,7 @@ function getBranchOfPullRequest() {
const pullRequest = yield octokit_1.octokit.pulls.get({
owner: github_1.context.repo.owner,
repo: github_1.context.repo.repo,
- pull_number: github_1.context.issue.number
+ pull_number: (0, getInputs_1.getPrNumber)(github_1.context.issue.number)
});
return pullRequest.data.head.ref;
});
@@ -23015,7 +23024,7 @@ function createComment(signed, committerMap) {
yield octokit_1.octokit.issues.createComment({
owner: github_1.context.repo.owner,
repo: github_1.context.repo.repo,
- issue_number: github_1.context.issue.number,
+ issue_number: (0, getInputs_1.getPrNumber)(github_1.context.issue.number),
body: (0, pullRequestCommentContent_1.commentContent)(signed, committerMap)
}).catch(error => { throw new Error(`Error occured when creating a pull request comment: ${error.message}`); });
});
@@ -23033,7 +23042,7 @@ function updateComment(signed, committerMap, claBotComment) {
function getComment() {
return __awaiter(this, void 0, void 0, function* () {
try {
- const response = yield octokit_1.octokit.issues.listComments({ owner: github_1.context.repo.owner, repo: github_1.context.repo.repo, issue_number: github_1.context.issue.number });
+ const response = yield octokit_1.octokit.issues.listComments({ owner: github_1.context.repo.owner, repo: github_1.context.repo.repo, issue_number: (0, getInputs_1.getPrNumber)(github_1.context.issue.number) });
//TODO: check the below regex
// using a `string` true or false purposely as github action input cannot have a boolean value
if ((0, getInputs_1.getUseDcoFlag)() === 'true') {
diff --git a/src/addEmptyCommit.ts b/src/addEmptyCommit.ts
index 01d41d2a..5481a930 100644
--- a/src/addEmptyCommit.ts
+++ b/src/addEmptyCommit.ts
@@ -20,7 +20,7 @@ export async function addEmptyCommit() {
const pullRequestResponse = await octokit.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
- pull_number: context.payload.issue!.number
+ pull_number: input.getPrNumber(context.payload.issue!.number)
})
const baseCommit = await octokit.git.getCommit({
diff --git a/src/graphql.ts b/src/graphql.ts
index 21b8f253..6b927043 100644
--- a/src/graphql.ts
+++ b/src/graphql.ts
@@ -1,8 +1,7 @@
import { octokit } from './octokit'
import { context } from '@actions/github'
import { CommittersDetails } from './interfaces'
-
-
+import { getPrNumber } from './shared/getInputs'
export default async function getCommitters(): Promise {
try {
@@ -48,7 +47,7 @@ export default async function getCommitters(): Promise {
}`.replace(/ /g, ''), {
owner: context.repo.owner,
name: context.repo.repo,
- number: context.issue.number,
+ number: getPrNumber(context.issue.number),
cursor: ''
})
response.repository.pullRequest.commits.edges.forEach(edge => {
@@ -56,7 +55,7 @@ export default async function getCommitters(): Promise {
let user = {
name: committer.login || committer.name,
id: committer.databaseId || '',
- pullRequestNo: context.issue.number
+ pullRequestNo: getPrNumber(context.issue.number)
}
if (committers.length === 0 || committers.map((c) => {
return c.name
diff --git a/src/persistence/persistence.ts b/src/persistence/persistence.ts
index f5a08e48..086b4509 100644
--- a/src/persistence/persistence.ts
+++ b/src/persistence/persistence.ts
@@ -43,7 +43,7 @@ export async function updateFile(
const octokitInstance: InstanceType =
isRemoteRepoOrOrgConfigured() ? getPATOctokit() : getDefaultOctokitClient()
- const pullRequestNo = context.issue.number
+ const pullRequestNo = input.getPrNumber(context.issue.number)
const owner = context.issue.owner
const repo = context.issue.repo
diff --git a/src/pullRerunRunner.ts b/src/pullRerunRunner.ts
index 234c94e5..da937747 100644
--- a/src/pullRerunRunner.ts
+++ b/src/pullRerunRunner.ts
@@ -1,5 +1,6 @@
import { context } from '@actions/github'
import { octokit } from './octokit'
+import { getPrNumber } from './shared/getInputs'
import * as core from '@actions/core'
@@ -31,7 +32,7 @@ async function getBranchOfPullRequest(): Promise {
const pullRequest = await octokit.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
- pull_number: context.issue.number
+ pull_number: getPrNumber(context.issue.number)
})
return pullRequest.data.head.ref
diff --git a/src/pullrequest/pullRequestComment.ts b/src/pullrequest/pullRequestComment.ts
index 55e7cc57..76cd9552 100644
--- a/src/pullrequest/pullRequestComment.ts
+++ b/src/pullrequest/pullRequestComment.ts
@@ -6,8 +6,7 @@ import {
CommitterMap,
CommittersDetails
} from '../interfaces'
-import { getUseDcoFlag } from '../shared/getInputs'
-
+import { getUseDcoFlag, getPrNumber } from '../shared/getInputs'
export default async function prCommentSetup(committerMap: CommitterMap, committers: CommittersDetails[]) {
@@ -41,7 +40,7 @@ async function createComment(signed: boolean, committerMap: CommitterMap): Promi
await octokit.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
- issue_number: context.issue.number,
+ issue_number: getPrNumber(context.issue.number),
body: commentContent(signed, committerMap)
}).catch(error => { throw new Error(`Error occured when creating a pull request comment: ${error.message}`) })
}
@@ -57,7 +56,7 @@ async function updateComment(signed: boolean, committerMap: CommitterMap, claBot
async function getComment() {
try {
- const response = await octokit.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number })
+ const response = await octokit.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: getPrNumber(context.issue.number) })
//TODO: check the below regex
// using a `string` true or false purposely as github action input cannot have a boolean value
diff --git a/src/pullrequest/pullRequestLock.ts b/src/pullrequest/pullRequestLock.ts
index 28a58d3a..1c2a76fd 100644
--- a/src/pullrequest/pullRequestLock.ts
+++ b/src/pullrequest/pullRequestLock.ts
@@ -1,10 +1,10 @@
import { octokit } from '../octokit'
import * as core from '@actions/core'
import { context } from '@actions/github'
-
+import { getPrNumber } from '../shared/getInputs'
export async function lockPullRequest() {
core.info('Locking the Pull Request to safe guard the Pull Request CLA Signatures')
- const pullRequestNo: number = context.issue.number
+ const pullRequestNo: number = getPrNumber(context.issue.number)
try {
await octokit.issues.lock(
{
diff --git a/src/pullrequest/signatureComment.ts b/src/pullrequest/signatureComment.ts
index 5e6d8423..41352a88 100644
--- a/src/pullrequest/signatureComment.ts
+++ b/src/pullrequest/signatureComment.ts
@@ -4,6 +4,7 @@ import { CommitterMap, CommittersDetails, ReactedCommitterMap } from '../interfa
import { getUseDcoFlag, getCustomPrSignComment } from '../shared/getInputs'
import * as core from '@actions/core'
+import { getPrNumber } from '../shared/getInputs'
export default async function signatureWithPRComment(committerMap: CommitterMap, committers): Promise {
@@ -11,7 +12,7 @@ export default async function signatureWithPRComment(committerMap: CommitterMap,
let prResponse = await octokit.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
- issue_number: context.issue.number
+ issue_number: getPrNumber(context.issue.number)
})
let listOfPRComments = [] as CommittersDetails[]
let filteredListOfPRComments = [] as CommittersDetails[]
@@ -24,7 +25,7 @@ export default async function signatureWithPRComment(committerMap: CommitterMap,
body: prComment.body.trim().toLowerCase(),
created_at: prComment.created_at,
repoId: repoId,
- pullRequestNo: context.issue.number
+ pullRequestNo: getPrNumber(context.issue.number)
})
})
listOfPRComments.map(comment => {
diff --git a/src/setupClaCheck.ts b/src/setupClaCheck.ts
index dc47d920..1795fabc 100644
--- a/src/setupClaCheck.ts
+++ b/src/setupClaCheck.ts
@@ -15,6 +15,7 @@ import {
} from './persistence/persistence'
import { reRunLastWorkFlowIfRequired } from './pullRerunRunner'
import * as core from '@actions/core'
+import { getPrNumber } from './shared/getInputs'
export async function setupClaCheck() {
let committerMap = getInitialCommittersMap()
@@ -48,7 +49,7 @@ export async function setupClaCheck() {
return reRunLastWorkFlowIfRequired()
} else {
core.setFailed(
- `Committers of Pull Request number ${context.issue.number} have to sign the CLA 📝`
+ `Committers of Pull Request number ${getPrNumber(context.issue.number)} have to sign the CLA 📝`
)
}
} catch (err) {
@@ -106,7 +107,7 @@ async function createClaFileAndPRComment(
)
await prCommentSetup(committerMap, committers)
throw new Error(
- `Committers of pull request ${context.issue.number} have to sign the CLA`
+ `Committers of pull request ${getPrNumber(context.issue.number)} have to sign the CLA`
)
}
diff --git a/src/shared/getInputs.ts b/src/shared/getInputs.ts
index cce93e19..9146da33 100644
--- a/src/shared/getInputs.ts
+++ b/src/shared/getInputs.ts
@@ -43,3 +43,8 @@ export const getCustomPrSignComment = (): string =>
export const lockPullRequestAfterMerge = (): string =>
core.getInput('lock-pullrequest-aftermerge', { required: false })
+
+export const getPrNumber = (prNumberFromContext: number): number =>
+ prNumberFromContext ?
+ prNumberFromContext :
+ Number(core.getInput('pr-number', { required: false }))