Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd57348f7a | ||
|
|
cd08d4e74c | ||
|
|
29dbfc0acd | ||
|
|
c0bf76830b | ||
|
|
a08a03a717 | ||
|
|
1cb1956a68 | ||
|
|
6e7a9cb309 | ||
|
|
fc56ed279d | ||
|
|
89a865123c | ||
|
|
260ef70e70 | ||
|
|
2293747d8b |
@@ -39,6 +39,8 @@ Unlike standard actions, this action just uses variables from the environment.
|
|||||||
| Name | Description | Required | Default |
|
| 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 | "" |
|
| 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_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_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 | |
|
| 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 `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.
|
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
|
## Outputs
|
||||||
|
|
||||||
The action sets a few useful output and environment variables. An output can
|
The action sets a few useful output and environment variables. An output can
|
||||||
|
|||||||
@@ -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)
|
print("Data for opening pull request: %s" % data)
|
||||||
response = requests.post(PULLS_URL, json=data, headers=HEADERS)
|
response = requests.post(PULLS_URL, json=data, headers=HEADERS)
|
||||||
if response.status_code != 201:
|
if response.status_code != 201:
|
||||||
|
print(f"pull request url is {PULLS_URL}")
|
||||||
abort_if_fail(response, "Unable to create pull request")
|
abort_if_fail(response, "Unable to create pull request")
|
||||||
|
|
||||||
return response
|
return response
|
||||||
@@ -233,6 +234,22 @@ def find_pull_request(listing, source):
|
|||||||
return entry
|
return entry
|
||||||
|
|
||||||
|
|
||||||
|
def find_default_branch():
|
||||||
|
"""Find default branch for a repo (only called if branch not provided)
|
||||||
|
"""
|
||||||
|
response = requests.get(REPO_URL)
|
||||||
|
|
||||||
|
# Case 1: 404 might need a token
|
||||||
|
if response.status_code == 404:
|
||||||
|
response = requests.get(REPO_URL, headers=HEADERS)
|
||||||
|
if response.status_code != 200:
|
||||||
|
abort_if_fail(response, "Unable to retrieve default branch")
|
||||||
|
|
||||||
|
default_branch = response.json()["default_branch"]
|
||||||
|
print("Found default branch: %s" % default_branch)
|
||||||
|
return default_branch
|
||||||
|
|
||||||
|
|
||||||
def add_reviewers(entry, reviewers, team_reviewers):
|
def add_reviewers(entry, reviewers, team_reviewers):
|
||||||
"""Given regular or team reviewers, add them to a PR.
|
"""Given regular or team reviewers, add them to a PR.
|
||||||
|
|
||||||
@@ -268,14 +285,17 @@ def add_reviewers(entry, reviewers, team_reviewers):
|
|||||||
API_VERSION = "v3"
|
API_VERSION = "v3"
|
||||||
BASE = "https://api.github.com"
|
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 = {
|
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"
|
"Accept": "application/vnd.github.%s+json;application/vnd.github.antiope-preview+json;application/vnd.github.shadow-cat-preview+json"
|
||||||
% API_VERSION,
|
% API_VERSION,
|
||||||
}
|
}
|
||||||
|
|
||||||
# URLs
|
# 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
|
ISSUE_URL = "%s/issues" % REPO_URL
|
||||||
PULLS_URL = "%s/pulls" % REPO_URL
|
PULLS_URL = "%s/pulls" % REPO_URL
|
||||||
|
|
||||||
@@ -339,8 +359,8 @@ def main():
|
|||||||
if not branch_prefix:
|
if not branch_prefix:
|
||||||
print("No branch prefix is set, all branches will be used.")
|
print("No branch prefix is set, all branches will be used.")
|
||||||
|
|
||||||
# Default to master to support older, will eventually change to main
|
# Default to project default branch if none provided
|
||||||
pull_request_branch = os.environ.get("PULL_REQUEST_BRANCH", "master")
|
pull_request_branch = os.environ.get("PULL_REQUEST_BRANCH", find_default_branch())
|
||||||
print("Pull requests will go to %s" % pull_request_branch)
|
print("Pull requests will go to %s" % pull_request_branch)
|
||||||
|
|
||||||
# Pull request draft
|
# Pull request draft
|
||||||
|
|||||||
Reference in New Issue
Block a user