From 64178c87e0a5ea43d805d6064a4ac3cc263efde3 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Thu, 26 Sep 2019 17:48:53 +0900 Subject: [PATCH 1/2] Add new optional parameters --- create-pull-request.py | 53 ++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/create-pull-request.py b/create-pull-request.py index f0135e2..548e667 100755 --- a/create-pull-request.py +++ b/create-pull-request.py @@ -71,19 +71,18 @@ def commit_changes(git, branch, commit_message): return git.push('--set-upstream', 'origin', branch) -def create_pull_request(token, repo, head, base, title, body): - return Github(token).get_repo(repo).create_pull( - title=title, - body=body, - base=base, - head=head) +def cs_string_to_list(str): + # Split the comma separated string into a list + l = [i.strip() for i in str.split(',')] + # Remove empty strings + return list(filter(None, l)) def process_event(event_name, event_data, repo, branch, base): # Fetch required environment variables github_token = os.environ['GITHUB_TOKEN'] github_repository = os.environ['GITHUB_REPOSITORY'] - # Fetch remaining optional environment variables + # Fetch optional environment variables with default values commit_message = os.getenv( 'COMMIT_MESSAGE', "Auto-committed changes by create-pull-request action") @@ -93,6 +92,12 @@ def process_event(event_name, event_data, repo, branch, base): body = os.getenv( 'PULL_REQUEST_BODY', "Auto-generated pull request by " "[create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub Action") + # Fetch optional environment variables with no default values + pull_request_labels = os.environ.get('PULL_REQUEST_LABELS') + pull_request_assignees = os.environ.get('PULL_REQUEST_ASSIGNEES') + pull_request_milestone = os.environ.get('PULL_REQUEST_MILESTONE') + pull_request_reviewers = os.environ.get('PULL_REQUEST_REVIEWERS') + pull_request_team_reviewers = os.environ.get('PULL_REQUEST_TEAM_REVIEWERS') # Get the HEAD committer's email and name author_email, author_name = get_head_author(event_name, event_data) @@ -108,16 +113,34 @@ def process_event(event_name, event_data, repo, branch, base): # Create the pull request print("Creating a request to pull %s into %s." % (branch, base)) - pull_request = create_pull_request( - github_token, - github_repository, - branch, - base, - title, - body - ) + github_repo = Github(github_token).get_repo(github_repository) + pull_request = github_repo.create_pull( + title=title, + body=body, + base=base, + head=branch) print("Created pull request %d." % pull_request.number) + # Set labels, assignees and milestone + if pull_request_labels is not None: + print("Applying labels") + pull_request.as_issue().edit(labels=cs_string_to_list(pull_request_labels)) + if pull_request_assignees is not None: + print("Applying assignees") + pull_request.as_issue().edit(assignees=cs_string_to_list(pull_request_assignees)) + if pull_request_milestone is not None: + print("Applying milestone") + milestone = github_repo.get_milestone(int(pull_request_milestone)) + pull_request.as_issue().edit(milestone=milestone) + + # Set pull request reviewers and team reviewers + if pull_request_reviewers is not None: + print("Requesting reviewers") + pull_request.create_review_request(reviewers=cs_string_to_list(pull_request_reviewers)) + if pull_request_team_reviewers is not None: + print("Requesting team reviewers") + pull_request.create_review_request(team_reviewers=cs_string_to_list(pull_request_team_reviewers)) + # Get the JSON event data event_name = os.environ['GITHUB_EVENT_NAME'] From f3f5770a0e1d130988a708513fe3c81c45c3a179 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Thu, 26 Sep 2019 17:49:23 +0900 Subject: [PATCH 2/2] Update workflows --- .github/workflows/create-pull-request-multi.yml | 12 ++++++++---- .github/workflows/create-pull-request.yml | 13 +++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/create-pull-request-multi.yml b/.github/workflows/create-pull-request-multi.yml index 9f470b9..e382fdd 100644 --- a/.github/workflows/create-pull-request-multi.yml +++ b/.github/workflows/create-pull-request-multi.yml @@ -1,7 +1,7 @@ on: repository_dispatch: types: [create-pull-request-multi] -name: create-pull-request action testing workflow +name: create-pull-request workflow jobs: createPullRequest: name: Testing on ${{ matrix.platform }} @@ -10,7 +10,7 @@ jobs: platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@master + - uses: actions/checkout@v1 - name: Create report file if: matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-latest' run: touch report.txt @@ -23,6 +23,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMMIT_MESSAGE: Add report file PULL_REQUEST_BODY: This PR is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request). - PULL_REQUEST_BRANCH: test-patches - PULL_REQUEST_TITLE: '[Test] Add report file' + PULL_REQUEST_TITLE: '[Example] Add report file' + PULL_REQUEST_LABELS: report, automated pr + PULL_REQUEST_ASSIGNEES: peter-evans + PULL_REQUEST_REVIEWERS: peter-evans + PULL_REQUEST_MILESTONE: 1 + PULL_REQUEST_BRANCH: example-patches BRANCH_SUFFIX: 'timestamp' diff --git a/.github/workflows/create-pull-request.yml b/.github/workflows/create-pull-request.yml index b384836..c990434 100644 --- a/.github/workflows/create-pull-request.yml +++ b/.github/workflows/create-pull-request.yml @@ -1,12 +1,12 @@ on: repository_dispatch: types: [create-pull-request] -name: create-pull-request action testing workflow +name: create-pull-request workflow jobs: createPullRequest: runs-on: ubuntu-latest steps: - - uses: actions/checkout@master + - uses: actions/checkout@v1 - name: Create report file run: touch report.txt - name: Create Pull Request @@ -15,5 +15,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMMIT_MESSAGE: Add report file PULL_REQUEST_BODY: This PR is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request). - PULL_REQUEST_BRANCH: test-patches - PULL_REQUEST_TITLE: '[Test] Add report file' + PULL_REQUEST_TITLE: '[Example] Add report file' + PULL_REQUEST_LABELS: report, automated pr + PULL_REQUEST_ASSIGNEES: peter-evans + PULL_REQUEST_REVIEWERS: peter-evans + PULL_REQUEST_MILESTONE: 1 + PULL_REQUEST_BRANCH: example-patches + BRANCH_SUFFIX: short-commit-hash