create-pull-request/README.md

146 lines
8.0 KiB
Markdown
Raw Normal View History

2019-11-03 06:46:11 +00:00
# <img width="24" height="24" src="assets/logo.svg"> Create Pull Request
2019-07-16 10:58:27 +00:00
[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-Create%20Pull%20Request-blue.svg?colorA=24292e&colorB=0366d6&style=flat&longCache=true&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAM6wAADOsB5dZE0gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAERSURBVCiRhZG/SsMxFEZPfsVJ61jbxaF0cRQRcRJ9hlYn30IHN/+9iquDCOIsblIrOjqKgy5aKoJQj4O3EEtbPwhJbr6Te28CmdSKeqzeqr0YbfVIrTBKakvtOl5dtTkK+v4HfA9PEyBFCY9AGVgCBLaBp1jPAyfAJ/AAdIEG0dNAiyP7+K1qIfMdonZic6+WJoBJvQlvuwDqcXadUuqPA1NKAlexbRTAIMvMOCjTbMwl1LtI/6KWJ5Q6rT6Ht1MA58AX8Apcqqt5r2qhrgAXQC3CZ6i1+KMd9TRu3MvA3aH/fFPnBodb6oe6HM8+lYHrGdRXW8M9bMZtPXUji69lmf5Cmamq7quNLFZXD9Rq7v0Bpc1o/tp0fisAAAAASUVORK5CYII=)](https://github.com/marketplace/actions/create-pull-request)
2019-07-16 10:53:24 +00:00
A GitHub action to create a pull request for changes to your repository in the actions workspace.
2019-07-16 10:58:27 +00:00
2019-09-25 14:58:47 +00:00
Changes to a repository in the Actions workspace persist between steps in a workflow.
This action is designed to be used in conjunction with other steps that modify or add files to your repository.
2019-07-16 10:58:27 +00:00
The changes will be automatically committed to a new branch and a pull request created.
Create Pull Request action will:
2019-09-25 14:58:47 +00:00
1. Check for repository changes in the Actions workspace. This includes untracked (new) files as well as modified files.
2019-10-06 05:59:45 +00:00
2. Commit all changes to a new branch, or update an existing pull request branch.
2019-07-16 10:58:27 +00:00
3. Create a pull request to merge the new branch into the currently active branch executing the workflow.
## Usage
2019-11-03 08:37:39 +00:00
See [examples](examples.md) for detailed use cases.
2019-08-13 09:14:43 +00:00
```yml
2019-09-30 09:58:24 +00:00
- name: Create Pull Request
2019-11-13 14:52:28 +00:00
uses: peter-evans/create-pull-request@v1
2019-11-09 09:22:57 +00:00
with:
token: ${{ secrets.GITHUB_TOKEN }}
2019-09-25 00:42:45 +00:00
```
2019-11-13 14:52:28 +00:00
You can also pin to a [specific release](https://github.com/peter-evans/create-pull-request/releases) version in the format `@v1.x.x`
2019-10-30 07:10:02 +00:00
**Note**: If you want pull requests created by this action to trigger an `on: pull_request` workflow then you must use a [Personal Access Token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) instead of the default `GITHUB_TOKEN`.
2019-10-02 13:38:58 +00:00
See [this issue](https://github.com/peter-evans/create-pull-request/issues/48) for further details.
2019-11-09 09:22:57 +00:00
### Action inputs
2019-07-16 10:58:27 +00:00
2019-11-09 09:22:57 +00:00
These inputs are *all optional*. If not set, sensible default values will be used.
2019-10-06 05:59:45 +00:00
| Name | Description | Default |
| --- | --- | --- |
2019-11-09 09:22:57 +00:00
| `commit-message` | The message to use when committing changes. | `Auto-committed changes by create-pull-request action` |
| `author-email` | The email address of the commit author. | For `push` events, the HEAD commit author. Otherwise, <GITHUB_ACTOR>@users.noreply.github.com, where `GITHUB_ACTOR` is the GitHub user that initiated the event. |
| `author-name` | The name of the commit author. | For `push` events, the HEAD commit author. Otherwise, <GITHUB_ACTOR>, the GitHub user that initiated the event. |
| `title` | The title of the pull request. | `Auto-generated by create-pull-request action` |
| `body` | The body of the pull request. | `Auto-generated pull request by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub Action` |
2019-11-24 00:28:14 +00:00
| `labels` | A comma separated list of labels. | |
| `assignees` | A comma separated list of assignees (GitHub usernames). | |
| `reviewers` | A comma separated list of reviewers (GitHub usernames) to request a review from. | |
| `team-reviewers` | A comma separated list of GitHub teams to request a review from. | |
| `milestone` | The number of the milestone to associate this pull request with. | |
| `project` | The name of the project for which a card should be created. Requires `project-column`. | |
| `project-column` | The name of the project column under which a card should be created. Requires `project`. | |
2019-11-09 09:22:57 +00:00
| `branch` | The branch name. See **Branch naming** below for details. | `create-pull-request/patch` |
2019-11-16 00:27:21 +00:00
| `base` | Sets the pull request base branch. | Defaults to the currently checked out branch, `GITHUB_REF`. For `pull_request` events, `GITHUB_HEAD_REF` |
2019-11-09 09:22:57 +00:00
| `branch-suffix` | The branch suffix type. Valid values are `short-commit-hash`, `timestamp`, `random` and `none`. See **Branch naming** below for details. | `short-commit-hash` |
**Outputs**
The pull request number is output as both an environment variable and a step output.
Note that in order to read the step output the action step must have an id.
2019-09-24 11:00:49 +00:00
2019-11-09 09:22:57 +00:00
```yml
- name: Create Pull Request
id: cpr
2019-11-13 14:52:28 +00:00
uses: peter-evans/create-pull-request@v1
2019-11-09 09:22:57 +00:00
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Check outputs
run: |
echo "Pull Request Number - ${{ env.PULL_REQUEST_NUMBER }}"
echo "Pull Request Number - ${{ steps.cpr.outputs.pr_number }}"
```
2019-07-16 10:58:27 +00:00
### Branch naming
2019-07-16 10:58:27 +00:00
For branch naming there are two strategies. Always create a new branch each time there are changes to be committed, OR, create a fixed-name pull request branch that will be updated with any new commits until it is merged or closed.
2019-07-16 10:58:27 +00:00
#### Strategy A - Always create a new pull request branch (default)
2019-07-16 10:58:27 +00:00
2019-09-30 09:58:24 +00:00
For this strategy there are three options to suffix the branch name.
2019-11-09 09:22:57 +00:00
The branch name is defined by the input `branch` and defaults to `create-pull-request/patch`. The following options are values for `branch-suffix`.
2019-09-24 11:00:49 +00:00
- `short-commit-hash` (default) - Commits will be made to a branch suffixed with the short SHA1 commit hash. e.g. `create-pull-request/patch-fcdfb59`, `create-pull-request/patch-394710b`
2019-09-30 09:58:24 +00:00
- `timestamp` - Commits will be made to a branch suffixed by a timestamp. e.g. `create-pull-request/patch-1569322532`, `create-pull-request/patch-1569322552`
2019-09-30 09:58:24 +00:00
- `random` - Commits will be made to a branch suffixed with a random alpha-numeric string. This option should be used if multiple pull requests will be created during the execution of a workflow. e.g. `create-pull-request/patch-6qj97jr`, `create-pull-request/patch-5jrjhvd`
2019-09-30 09:58:24 +00:00
#### Strategy B - Create and update a pull request branch
2019-09-30 09:58:24 +00:00
2019-12-05 09:28:50 +00:00
To use this strategy, set `branch-suffix` to the value `none`. The input `branch` defaults to `create-pull-request/patch`. Commits will be made to this branch and a pull request created. Any subsequent changes will be committed to the *same* branch and reflected in the open pull request. If the pull request is merged or closed a new one will be created.
2019-09-30 09:58:24 +00:00
### Ignoring files
2019-07-16 10:58:27 +00:00
If there are files or directories you want to ignore you can simply add them to a `.gitignore` file at the root of your repository. The action will respect this file.
2019-11-03 08:37:39 +00:00
## Reference Example
2019-07-16 10:58:27 +00:00
2019-11-09 09:22:57 +00:00
The following workflow is a reference example that sets all the main inputs.
2019-11-03 08:44:22 +00:00
2019-11-03 08:37:39 +00:00
See [examples](examples.md) for more realistic use cases.
2019-07-16 10:58:27 +00:00
2019-08-13 09:14:43 +00:00
```yml
2019-10-30 07:10:02 +00:00
name: Create Pull Request
on: push
2019-09-26 09:07:43 +00:00
jobs:
createPullRequest:
runs-on: ubuntu-latest
steps:
2019-09-30 09:58:24 +00:00
- uses: actions/checkout@v1
- name: Create report file
run: date +%s > report.txt
- name: Create Pull Request
2019-11-09 09:22:57 +00:00
id: cpr
2019-11-13 14:52:28 +00:00
uses: peter-evans/create-pull-request@v1
2019-11-09 09:22:57 +00:00
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Add report file
author-email: peter-evans@users.noreply.github.com
author-name: Peter Evans
title: '[Example] Add report file'
body: |
2019-10-21 09:42:39 +00:00
New report
- Contains *today's* date
- Auto-generated by [create-pull-request][1]
[1]: https://github.com/peter-evans/create-pull-request
2019-11-09 09:22:57 +00:00
labels: report, automated pr
assignees: peter-evans
reviewers: peter-evans
milestone: 1
2019-11-24 00:00:31 +00:00
project: Example Project
project-column: To do
2019-11-09 09:22:57 +00:00
branch: example-patches
branch-suffix: short-commit-hash
- name: Check outputs
run: |
echo "Pull Request Number - ${{ env.PULL_REQUEST_NUMBER }}"
echo "Pull Request Number - ${{ steps.cpr.outputs.pr_number }}"
2019-07-16 10:58:27 +00:00
```
2019-11-03 08:37:39 +00:00
This reference configuration will create pull requests that look like this:
2019-07-16 11:43:33 +00:00
2019-11-03 06:46:11 +00:00
![Pull Request Example](assets/pull-request-example.png)
2019-07-16 11:42:29 +00:00
2019-07-16 10:58:27 +00:00
## License
2019-09-30 09:58:24 +00:00
[MIT](LICENSE)