Skip to content

Commit 1cb1956

Browse files
mszhanyivsoch
andauthored
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 <[email protected]>
1 parent 2ca2661 commit 1cb1956

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Unlike standard actions, this action just uses variables from the environment.
3939
| Name | Description | Required | Default |
4040
|------|-------------|----------|---------|
4141
| BRANCH_PREFIX | the prefix to filter to. If the branch doesn't start with the prefix, it will be ignored | false | "" |
42+
| PULL_REQUEST_REPOSITORY | Choose another repository instead of default GITHUB_REPOSITORY for the PR | false | |
43+
| 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 | |
4244
| PULL_REQUEST_BRANCH | open pull request against this branch | false | master |
4345
| PULL_REQUEST_FROM_BRANCH | if a branch isn't found in your GitHub payload, use this branch | false | |
4446
| PULL_REQUEST_BODY | the body for the pull request | false | |
@@ -71,6 +73,8 @@ an issue or PR, they are ignored otherwise.
7173
The `GITHUB_TOKEN` secret is required to interact and authenticate with the GitHub API to open
7274
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.
7375

76+
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)
77+
7478
## Outputs
7579

7680
The action sets a few useful output and environment variables. An output can

pull-request.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ def open_pull_request(title, body, target, source, is_draft=False, can_modify=Tr
108108
print("Data for opening pull request: %s" % data)
109109
response = requests.post(PULLS_URL, json=data, headers=HEADERS)
110110
if response.status_code != 201:
111+
print(f"pull request url is {PULLS_URL}")
111112
abort_if_fail(response, "Unable to create pull request")
112113

113114
return response
@@ -268,14 +269,17 @@ def add_reviewers(entry, reviewers, team_reviewers):
268269
API_VERSION = "v3"
269270
BASE = "https://api.github.com"
270271

272+
PR_TOKEN = os.environ.get("PULL_REQUEST_TOKEN") or get_envar("GITHUB_TOKEN")
273+
PR_REPO = os.environ.get("PULL_REQUEST_REPOSITORY") or get_envar("GITHUB_REPOSITORY")
274+
271275
HEADERS = {
272-
"Authorization": "token %s" % get_envar("GITHUB_TOKEN"),
276+
"Authorization": "token %s" % PR_TOKEN,
273277
"Accept": "application/vnd.github.%s+json;application/vnd.github.antiope-preview+json;application/vnd.github.shadow-cat-preview+json"
274278
% API_VERSION,
275279
}
276280

277281
# URLs
278-
REPO_URL = "%s/repos/%s" % (BASE, get_envar("GITHUB_REPOSITORY"))
282+
REPO_URL = "%s/repos/%s" % (BASE, PR_REPO)
279283
ISSUE_URL = "%s/issues" % REPO_URL
280284
PULLS_URL = "%s/pulls" % REPO_URL
281285

0 commit comments

Comments
 (0)