From d3dc2259205cf50a2464e8690010bd69b2612894 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Fri, 6 Dec 2019 17:06:14 +0900 Subject: [PATCH 1/2] Add inputs for committer-name and committer-email --- action.yml | 8 ++++++-- dist/index.js | 8 ++++++-- dist/src/create-pull-request.py | 29 +++++++++++++++++------------ index.js | 8 ++++++-- package-lock.json | 2 +- package.json | 2 +- src/create-pull-request.py | 29 +++++++++++++++++------------ 7 files changed, 54 insertions(+), 32 deletions(-) diff --git a/action.yml b/action.yml index 7d0fd6e..599430d 100644 --- a/action.yml +++ b/action.yml @@ -6,10 +6,14 @@ inputs: required: true commit-message: description: 'The message to use when committing changes.' - author-email: - description: 'The email address of the commit author.' author-name: description: 'The name of the commit author.' + author-email: + description: 'The email address of the commit author.' + committer-name: + description: 'The name of the committer.' + committer-email: + description: 'The email address of the committer.' title: description: 'The title of the pull request.' body: diff --git a/dist/index.js b/dist/index.js index 63de897..48d46f2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -978,8 +978,10 @@ async function run() { const inputs = { token: core.getInput("token"), commitMessage: core.getInput("commit-message"), - commitAuthorEmail: core.getInput("author-email"), commitAuthorName: core.getInput("author-name"), + commitAuthorEmail: core.getInput("author-email"), + committerName: core.getInput("committer-name"), + committerEmail: core.getInput("committer-email"), title: core.getInput("title"), body: core.getInput("body"), labels: core.getInput("labels"), @@ -999,8 +1001,10 @@ async function run() { // Set environment variables from inputs. if (inputs.token) process.env.GITHUB_TOKEN = inputs.token; if (inputs.commitMessage) process.env.COMMIT_MESSAGE = inputs.commitMessage; - if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail; if (inputs.commitAuthorName) process.env.COMMIT_AUTHOR_NAME = inputs.commitAuthorName; + if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail; + if (inputs.committerName) process.env.COMMITTER_NAME = inputs.committerName; + if (inputs.committerEmail) process.env.COMMITTER_EMAIL = inputs.committerEmail; if (inputs.title) process.env.PULL_REQUEST_TITLE = inputs.title; if (inputs.body) process.env.PULL_REQUEST_BODY = inputs.body; if (inputs.labels) process.env.PULL_REQUEST_LABELS = inputs.labels; diff --git a/dist/src/create-pull-request.py b/dist/src/create-pull-request.py index 3b2a458..ad79795 100755 --- a/dist/src/create-pull-request.py +++ b/dist/src/create-pull-request.py @@ -44,12 +44,6 @@ def get_author_default(event_name, event_data): return email, name -def set_git_config(git, email, name): - print("Configuring git user as '%s <%s>'" % (name, email)) - git.config("--global", "user.email", '"%s"' % email) - git.config("--global", "user.name", '"%s"' % name) - - def set_git_remote_url(git, token, github_repository): git.remote( "set-url", @@ -229,15 +223,26 @@ event_name = os.environ["GITHUB_EVENT_NAME"] # Get the JSON event data event_data = get_github_event(os.environ["GITHUB_EVENT_PATH"]) -# Set the repo to the working directory -repo = Repo(os.getcwd()) # Get the default for author email and name author_email, author_name = get_author_default(event_name, event_data) -# Set commit author overrides -author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email) +# Set author name and email overrides author_name = os.getenv("COMMIT_AUTHOR_NAME", author_name) -# Set git configuration -set_git_config(repo.git, author_email, author_name) +author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email) +# Set committer name and email overrides +committer_name = os.getenv("COMMITTER_NAME", author_name) +committer_email = os.getenv("COMMITTER_EMAIL", author_email) + +# Set the repo to the working directory +repo = Repo(os.getcwd()) +# Set git environment. This will not persist after the action completes. +print("Configuring git author as '%s <%s>'" % (author_name, author_email)) +print("Configuring git committer as '%s <%s>'" % (committer_name, committer_email)) +repo.git.update_environment( + GIT_AUTHOR_NAME=author_name, + GIT_AUTHOR_EMAIL=author_email, + GIT_COMMITTER_NAME=committer_name, + GIT_COMMITTER_EMAIL=committer_email, +) # Update URL for the 'origin' remote set_git_remote_url(repo.git, github_token, github_repository) diff --git a/index.js b/index.js index 8fe3039..e95f469 100644 --- a/index.js +++ b/index.js @@ -23,8 +23,10 @@ async function run() { const inputs = { token: core.getInput("token"), commitMessage: core.getInput("commit-message"), - commitAuthorEmail: core.getInput("author-email"), commitAuthorName: core.getInput("author-name"), + commitAuthorEmail: core.getInput("author-email"), + committerName: core.getInput("committer-name"), + committerEmail: core.getInput("committer-email"), title: core.getInput("title"), body: core.getInput("body"), labels: core.getInput("labels"), @@ -44,8 +46,10 @@ async function run() { // Set environment variables from inputs. if (inputs.token) process.env.GITHUB_TOKEN = inputs.token; if (inputs.commitMessage) process.env.COMMIT_MESSAGE = inputs.commitMessage; - if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail; if (inputs.commitAuthorName) process.env.COMMIT_AUTHOR_NAME = inputs.commitAuthorName; + if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail; + if (inputs.committerName) process.env.COMMITTER_NAME = inputs.committerName; + if (inputs.committerEmail) process.env.COMMITTER_EMAIL = inputs.committerEmail; if (inputs.title) process.env.PULL_REQUEST_TITLE = inputs.title; if (inputs.body) process.env.PULL_REQUEST_BODY = inputs.body; if (inputs.labels) process.env.PULL_REQUEST_LABELS = inputs.labels; diff --git a/package-lock.json b/package-lock.json index 7962fc7..89d5da6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "create-pull-request", - "version": "1.7.0", + "version": "1.8.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1555b6a..b8f6a16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "create-pull-request", - "version": "1.8.0", + "version": "1.9.0", "description": "Creates a pull request for changes to your repository in the actions workspace", "main": "index.js", "scripts": { diff --git a/src/create-pull-request.py b/src/create-pull-request.py index 3b2a458..ad79795 100755 --- a/src/create-pull-request.py +++ b/src/create-pull-request.py @@ -44,12 +44,6 @@ def get_author_default(event_name, event_data): return email, name -def set_git_config(git, email, name): - print("Configuring git user as '%s <%s>'" % (name, email)) - git.config("--global", "user.email", '"%s"' % email) - git.config("--global", "user.name", '"%s"' % name) - - def set_git_remote_url(git, token, github_repository): git.remote( "set-url", @@ -229,15 +223,26 @@ event_name = os.environ["GITHUB_EVENT_NAME"] # Get the JSON event data event_data = get_github_event(os.environ["GITHUB_EVENT_PATH"]) -# Set the repo to the working directory -repo = Repo(os.getcwd()) # Get the default for author email and name author_email, author_name = get_author_default(event_name, event_data) -# Set commit author overrides -author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email) +# Set author name and email overrides author_name = os.getenv("COMMIT_AUTHOR_NAME", author_name) -# Set git configuration -set_git_config(repo.git, author_email, author_name) +author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email) +# Set committer name and email overrides +committer_name = os.getenv("COMMITTER_NAME", author_name) +committer_email = os.getenv("COMMITTER_EMAIL", author_email) + +# Set the repo to the working directory +repo = Repo(os.getcwd()) +# Set git environment. This will not persist after the action completes. +print("Configuring git author as '%s <%s>'" % (author_name, author_email)) +print("Configuring git committer as '%s <%s>'" % (committer_name, committer_email)) +repo.git.update_environment( + GIT_AUTHOR_NAME=author_name, + GIT_AUTHOR_EMAIL=author_email, + GIT_COMMITTER_NAME=committer_name, + GIT_COMMITTER_EMAIL=committer_email, +) # Update URL for the 'origin' remote set_git_remote_url(repo.git, github_token, github_repository) From 83fef4e8a1e98d77252097e8ed5d0df77857666c Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Fri, 6 Dec 2019 18:36:27 +0900 Subject: [PATCH 2/2] Update README --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e98db2..79274b3 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,10 @@ These inputs are *all optional*. If not set, sensible default values will be use | Name | Description | Default | | --- | --- | --- | | `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, @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, , the GitHub user that initiated the event. | +| `author-email` | The email address of the commit author. | For `push` events, the HEAD commit author. Otherwise, @users.noreply.github.com, where `GITHUB_ACTOR` is the GitHub user that initiated the event. | +| `committer-name` | The name of the committer. | Defaults to match `author-name` | +| `committer-email` | The email address of the committer. | Defaults to match `author-email` | | `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` | | `labels` | A comma separated list of labels. | | @@ -91,6 +93,21 @@ To use this strategy, set `branch-suffix` to the value `none`. The input `branch 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. +### Commit as github-actions[bot] + +You can make commits that appear to be made by the GitHub Actions bot as follows. + +```yml + - name: Create Pull Request + uses: peter-evans/create-pull-request@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + author-name: github-actions[bot] + author-email: 41898282+github-actions[bot]@users.noreply.github.com + committer-name: GitHub + committer-email: noreply@github.com +``` + ## Reference Example The following workflow is a reference example that sets all the main inputs.