This commit is contained in:
xrkffgg
2021-03-10 15:00:45 +08:00
parent d4ec9b4ffc
commit 993f6a4e01
5 changed files with 5743 additions and 66 deletions

View File

@@ -1,17 +1,64 @@
const core = require('@actions/core');
const { Octokit } = require('@octokit/rest');
const github = require('@actions/github');
// **********************************************************
const token = core.getInput('token');
const octokit = new Octokit({ auth: `token ${token}` });
const context = github.context;
const outEventErr = `This Action only support "pull_request" "pull_request_target"`;
async function run() {
try {
const ms = core.getInput('milliseconds');
core.debug(`Waiting ${ms} milliseconds ...`); // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
const { owner, repo } = context.repo;
if (context.eventName === 'pull_request_target' || context.eventName === 'pull_request') {
const title = context.payload.pull_request.title;
const body = context.payload.pull_request.body;
const number = context.payload.pull_request.number;
core.debug(new Date().toTimeString());
await new Promise(resolve => {
setTimeout(() => resolve('done!'), 10);
});
core.debug(new Date().toTimeString());
let issues = [];
const way = core.getInput('way');
if (way === 'title') {
let arr = title.split('');
arr.forEach(it => {
if (it.startsWith('#')) {
issues.push(it.replace('#', ''));
}
});
} else if (way === 'body') {
let arr = body.split('\n');
arr.forEach(it => {
if (it.startsWith('#')) {
issues.push(it.replace('#', ''));
}
});
} else if (way === 'commit') {
const { data: commits } = await octokit.pulls.listCommits({
owner,
repo,
pull_number: number,
// 一般不会超过 100 个 commit 吧,😌 不想分页了,暂时保留
per_page: 100,
});
commits.forEach(commit => {
let message = commit.commit.message;
let messageArr = message.split('');
messageArr.forEach(it => {
if (it.startsWith('#')) {
issues.push(it.replace('#', ''));
}
});
});
} else {
core.setFailed('Wrong way!');
}
core.setOutput('time', new Date().toTimeString());
core.info(`[Action: Query Issues][${issues}]`);
core.setOutput('issues', issues);
} else {
core.setFailed(outEventErr);
}
} catch (error) {
core.setFailed(error.message);
}