mirror of
https://github.com/zebrajr/tensorflow.git
synced 2026-01-15 12:15:41 +00:00
65 lines
2.8 KiB
JavaScript
65 lines
2.8 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2021 Google LLC. All Rights Reserved.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
* =============================================================================
|
|
*/
|
|
|
|
/** Extracts PR from commit message and creates a GitHub Issue on Rollback of PR
|
|
Created issue is assigned to original PR owner and reviewer.
|
|
|
|
@param {!object}
|
|
github enables querying for PR and also create issue using rest endpoint
|
|
context has the commit message details in the payload
|
|
@return {string} Returns the issue number and title
|
|
*/
|
|
module.exports = async ({github, context}) => {
|
|
const rollback_commit = context.payload.head_commit.id;
|
|
const pr_match_groups = context.payload.head_commit.message.match(/\Rollback of PR #(\d+).*/) || [];
|
|
if (pr_match_groups.length != 2) {
|
|
console.log(`PR Number not found in ${context.payload.head_commit.message}`);
|
|
throw "Error extracting PR Number from commit message";
|
|
}
|
|
const pr_number = parseInt(pr_match_groups[1]);
|
|
const owner = context.payload.repository.owner.name;
|
|
const repo = context.payload.repository.name;
|
|
console.log(`Original PR: ${pr_number} and Rollback Commit: ${rollback_commit}`);
|
|
// Get the Original PR Details
|
|
const pr_resp = await github.rest.pulls.get({
|
|
owner,
|
|
repo,
|
|
pull_number: pr_number
|
|
});
|
|
if (pr_resp.status != 200 || pr_resp.data.state != 'closed') {
|
|
console.log(`PR:{pr_number} is not found or closed. Not a valid condition to create an issue.`);
|
|
console.log(pr_resp);
|
|
throw `PR:{pr_number} needs to be valid and closed (merged)`;
|
|
}
|
|
const pr_title = pr_resp.data.title;
|
|
// Assign to PR owner and reviewers
|
|
const assignees = pr_resp.data.assignees.concat(pr_resp.data.requested_reviewers);
|
|
let assignee_logins = assignees.map(x => x.login);
|
|
assignee_logins.push(pr_resp.data.user.login);
|
|
console.log(assignee_logins);
|
|
// Create an new GH Issue and reference the Original PR
|
|
const resp = await github.rest.issues.create({
|
|
owner,
|
|
repo,
|
|
assignees: assignee_logins,
|
|
title: `Issue created for Rollback of PR #${pr_number}: ${pr_title}`,
|
|
body: `Merged PR #${pr_number} is rolled back in ${rollback_commit}.
|
|
Please follow up with the reviewer and close this issue once its resolved.`
|
|
});
|
|
return `Issue created: ${resp.data.number} with Title: ${resp.data.title}`;
|
|
};
|