From 1cb1956a68e7d8b6bf693d41299467bb0f1b6a7a Mon Sep 17 00:00:00 2001 From: Yi Zhang Date: Tue, 27 Apr 2021 20:04:20 +0800 Subject: [PATCH] Support to open pull request to another repo (#70) * support custom token and repo * print post url if there's error * update as comments * Update README.md Co-authored-by: Vanessasaurus <814322+vsoch@users.noreply.github.com> --- README.md | 4 ++++ pull-request.py | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f07d5f4..2d8d756 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,8 @@ Unlike standard actions, this action just uses variables from the environment. | Name | Description | Required | Default | |------|-------------|----------|---------| | BRANCH_PREFIX | the prefix to filter to. If the branch doesn't start with the prefix, it will be ignored | false | "" | +| PULL_REQUEST_REPOSITORY | Choose another repository instead of default GITHUB_REPOSITORY for the PR | false | | +| PULL_REQUEST_TOKEN | [Personal Access Token(PAT)](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) only if you define a different repository with PULL_REQUEST_REPOSITORY | false | | | PULL_REQUEST_BRANCH | open pull request against this branch | false | master | | PULL_REQUEST_FROM_BRANCH | if a branch isn't found in your GitHub payload, use this branch | false | | | PULL_REQUEST_BODY | the body for the pull request | false | | @@ -71,6 +73,8 @@ an issue or PR, they are ignored otherwise. The `GITHUB_TOKEN` secret is required to interact and authenticate with the GitHub API to open the pull request. The example is [deployed here](https://github.com/vsoch/pull-request-action-example) with an example opened (and merged) [pull request here](https://github.com/vsoch/pull-request-action-example/pull/1) if needed. +If you want to create a pull request to another repository, for example, a pull request to the upstream repository, you need to define PULL_REQUEST_REPOSITORY and PULL_REQUEST_TOKEN. The PULL_REQUEST_TOKEN is one [Personal Access Token(PAT)](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token), which can be save in the [encrypted secrets](https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) + ## Outputs The action sets a few useful output and environment variables. An output can diff --git a/pull-request.py b/pull-request.py index 9b2ca7b..ff569d0 100755 --- a/pull-request.py +++ b/pull-request.py @@ -108,6 +108,7 @@ def open_pull_request(title, body, target, source, is_draft=False, can_modify=Tr print("Data for opening pull request: %s" % data) response = requests.post(PULLS_URL, json=data, headers=HEADERS) if response.status_code != 201: + print(f"pull request url is {PULLS_URL}") abort_if_fail(response, "Unable to create pull request") return response @@ -268,14 +269,17 @@ def add_reviewers(entry, reviewers, team_reviewers): API_VERSION = "v3" BASE = "https://api.github.com" +PR_TOKEN = os.environ.get("PULL_REQUEST_TOKEN") or get_envar("GITHUB_TOKEN") +PR_REPO = os.environ.get("PULL_REQUEST_REPOSITORY") or get_envar("GITHUB_REPOSITORY") + HEADERS = { - "Authorization": "token %s" % get_envar("GITHUB_TOKEN"), + "Authorization": "token %s" % PR_TOKEN, "Accept": "application/vnd.github.%s+json;application/vnd.github.antiope-preview+json;application/vnd.github.shadow-cat-preview+json" % API_VERSION, } # URLs -REPO_URL = "%s/repos/%s" % (BASE, get_envar("GITHUB_REPOSITORY")) +REPO_URL = "%s/repos/%s" % (BASE, PR_REPO) ISSUE_URL = "%s/issues" % REPO_URL PULLS_URL = "%s/pulls" % REPO_URL