A GitHub Action to create or update a pull request based on local changes
ISC License
A GitHub Action to create or update a pull request based on local changes
Minimal workflow example
name: Nightly update
on:
schedule:
# https://crontab.guru/every-night-at-midnight
- cron: "0 0 * * *"
jobs:
update_routes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- run: "date > datetime.txt" # create or update a test.txt file
- uses: gr2m/create-or-update-pull-request-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
persist-credentials: false
is crucial otherwise Git push is performed with github.token
and not the token you configure using the env: GITHUB_TOKEN
.
Customizations
uses: gr2m/create-or-update-pull-request-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
title: "My pull request title"
body: "My pull request body"
branch: "my-pull-request-base-branch"
path: "lib/"
commit-message: "My commit message for uncommitted changes in lib/ folder"
author: "Lorem J. Ipsum <[email protected]>"
labels: label1, label2
assignees: user1, user2
reviewers: user1, user2
team_reviewers: team1, team2
auto-merge: squash
update-pull-request-title-and-body: false
Note: auto-merge
is optional. It can be set to merge
, squash
, or rebase
. If auto-merging is disabled in the repository, a warning will be logged, but the action will not fail.
To create multiple commits for different paths, use the action multiple times
- uses: gr2m/create-or-update-pull-request-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
title: "My pull request title"
body: "My pull request body"
branch: "my-pull-request-base-branch"
author: "Lorem J. Ipsum <[email protected]>"
path: "cache/"
commit-message: "build: cache"
- uses: gr2m/create-or-update-pull-request-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
branch: "my-pull-request-base-branch"
author: "Lorem J. Ipsum <[email protected]>"
path: "data/"
commit-message: "feat: data updated"
To see additional debug logs, create a secret with the name: ACTIONS_STEP_DEBUG
and value true
. There is no need to pass it as env
to steps, it will work globally.
The actions checks for local changes which can be
git status
If there are none, the action concludes with the "neutral" status
If there are changes, it does the following
user.name
and user.email
with git config --global
based on the author
input, unless it has been already set before.git status
.commit-message
input if there are uncommitted changes.branch
input.title
and body
inputs. If a pull request exists for the branch, it's checked out locally, rebased with -XTheirs
and pushed with --force
to update the pull request with the new changes.The actions outputs following properties:
pull-request-number
- number of created/updated PR. Not set if result is unchanged
.result
- created
, updated
or unchanged
based if the PR was created, updated or if there were no local changes.The action is written in JavaScript. Learn how to create your own.
ergebnis/composer-normalize
Please send a pull request to add yours :)
Inspired by the Create Pull Request action by @peter-evans