Compare commits

..

5 Commits

Author SHA1 Message Date
Peter Evans
3c9fba7af9 Update README 2019-09-26 18:07:43 +09:00
Peter Evans
ae3acffc2b Merge pull request #46 from peter-evans/issue-params
Issue params
2019-09-26 17:54:10 +09:00
Peter Evans
f3f5770a0e Update workflows 2019-09-26 17:49:23 +09:00
Peter Evans
64178c87e0 Add new optional parameters 2019-09-26 17:48:53 +09:00
Peter Evans
b1a0d5fc24 Update README 2019-09-26 13:35:59 +09:00
6 changed files with 84 additions and 31 deletions

View File

@@ -1,7 +1,7 @@
on: on:
repository_dispatch: repository_dispatch:
types: [create-pull-request-multi] types: [create-pull-request-multi]
name: create-pull-request action testing workflow name: create-pull-request workflow
jobs: jobs:
createPullRequest: createPullRequest:
name: Testing on ${{ matrix.platform }} name: Testing on ${{ matrix.platform }}
@@ -10,7 +10,7 @@ jobs:
platform: [ubuntu-latest, macos-latest, windows-latest] platform: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.platform }} runs-on: ${{ matrix.platform }}
steps: steps:
- uses: actions/checkout@master - uses: actions/checkout@v1
- name: Create report file - name: Create report file
if: matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-latest' if: matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-latest'
run: touch report.txt run: touch report.txt
@@ -23,6 +23,10 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_MESSAGE: Add report file 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_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: '[Example] Add report file'
PULL_REQUEST_TITLE: '[Test] 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' BRANCH_SUFFIX: 'timestamp'

View File

@@ -1,12 +1,12 @@
on: on:
repository_dispatch: repository_dispatch:
types: [create-pull-request] types: [create-pull-request]
name: create-pull-request action testing workflow name: create-pull-request workflow
jobs: jobs:
createPullRequest: createPullRequest:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@master - uses: actions/checkout@v1
- name: Create report file - name: Create report file
run: touch report.txt run: touch report.txt
- name: Create Pull Request - name: Create Pull Request
@@ -15,5 +15,10 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_MESSAGE: Add report file 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_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: '[Example] Add report file'
PULL_REQUEST_TITLE: '[Test] 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

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.DS_Store

View File

@@ -22,7 +22,7 @@ This action is experimental and may not work well for some use cases.
Linux Linux
```yml ```yml
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v1.2.1 uses: peter-evans/create-pull-request@v1.3.1
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
@@ -39,11 +39,16 @@ Multi platform - Linux, MacOS, Windows (beta)
These variables are all optional. If not set, a default value will be used. These variables are all optional. If not set, a default value will be used.
- `PULL_REQUEST_BRANCH` - The branch name. See **Branch naming** below for details.
- `BRANCH_SUFFIX` - The branch suffix type. Valid values are `short-commit-hash` (default) and `timestamp`. See **Branch naming** below for details.
- `COMMIT_MESSAGE` - The message to use when committing changes. - `COMMIT_MESSAGE` - The message to use when committing changes.
- `PULL_REQUEST_TITLE` - The title of the pull request. - `PULL_REQUEST_TITLE` - The title of the pull request.
- `PULL_REQUEST_BODY` - The body of the pull request. - `PULL_REQUEST_BODY` - The body of the pull request.
- `PULL_REQUEST_LABELS` - A comma separated list of labels.
- `PULL_REQUEST_ASSIGNEES` - A comma separated list of assignees (GitHub usernames).
- `PULL_REQUEST_REVIEWERS` - A comma separated list of reviewers (GitHub usernames) to request a review from.
- `PULL_REQUEST_TEAM_REVIEWERS` - A comma separated list of GitHub teams to request a review from.
- `PULL_REQUEST_MILESTONE` - The number of the milestone to associate this pull request with.
- `PULL_REQUEST_BRANCH` - The branch name. See **Branch naming** below for details.
- `BRANCH_SUFFIX` - The branch suffix type. Valid values are `short-commit-hash` (default) and `timestamp`. See **Branch naming** below for details.
The following parameters are available for debugging and troubleshooting. The following parameters are available for debugging and troubleshooting.
@@ -78,15 +83,30 @@ If there are files or directories you want to ignore you can simply add them to
Here is an example that sets all the main environment variables. Here is an example that sets all the main environment variables.
```yml ```yml
on:
repository_dispatch:
types: [create-pull-request]
name: create-pull-request workflow
jobs:
createPullRequest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Create report file
run: touch report.txt
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v1.2.1 uses: peter-evans/create-pull-request@v1.3.1
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_REQUEST_BRANCH: my-patches 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_TITLE: '[Example] New report'
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 BRANCH_SUFFIX: short-commit-hash
COMMIT_MESSAGE: Auto-modify files by my-file-modifier-action
PULL_REQUEST_TITLE: Changes from my-file-modifier-action
PULL_REQUEST_BODY: This is an auto-generated PR with changes from my-file-modifier-action
``` ```
This configuration will create pull requests that look like this: This configuration will create pull requests that look like this:

View File

@@ -71,19 +71,18 @@ def commit_changes(git, branch, commit_message):
return git.push('--set-upstream', 'origin', branch) return git.push('--set-upstream', 'origin', branch)
def create_pull_request(token, repo, head, base, title, body): def cs_string_to_list(str):
return Github(token).get_repo(repo).create_pull( # Split the comma separated string into a list
title=title, l = [i.strip() for i in str.split(',')]
body=body, # Remove empty strings
base=base, return list(filter(None, l))
head=head)
def process_event(event_name, event_data, repo, branch, base): def process_event(event_name, event_data, repo, branch, base):
# Fetch required environment variables # Fetch required environment variables
github_token = os.environ['GITHUB_TOKEN'] github_token = os.environ['GITHUB_TOKEN']
github_repository = os.environ['GITHUB_REPOSITORY'] github_repository = os.environ['GITHUB_REPOSITORY']
# Fetch remaining optional environment variables # Fetch optional environment variables with default values
commit_message = os.getenv( commit_message = os.getenv(
'COMMIT_MESSAGE', 'COMMIT_MESSAGE',
"Auto-committed changes by create-pull-request action") "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( body = os.getenv(
'PULL_REQUEST_BODY', "Auto-generated pull request by " 'PULL_REQUEST_BODY', "Auto-generated pull request by "
"[create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub Action") "[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 # Get the HEAD committer's email and name
author_email, author_name = get_head_author(event_name, event_data) 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 # Create the pull request
print("Creating a request to pull %s into %s." % (branch, base)) print("Creating a request to pull %s into %s." % (branch, base))
pull_request = create_pull_request( github_repo = Github(github_token).get_repo(github_repository)
github_token, pull_request = github_repo.create_pull(
github_repository, title=title,
branch, body=body,
base, base=base,
title, head=branch)
body
)
print("Created pull request %d." % pull_request.number) 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 # Get the JSON event data
event_name = os.environ['GITHUB_EVENT_NAME'] event_name = os.environ['GITHUB_EVENT_NAME']

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 213 KiB