diff --git a/README.md b/README.md index b0f6224f1..9b666c80f 100644 --- a/README.md +++ b/README.md @@ -281,8 +281,6 @@ jobs: - run: | date > generated.txt # Note: the following account information will not work on GHES - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add . git commit -m "generated" git push @@ -305,8 +303,6 @@ jobs: - run: | date > generated.txt # Note: the following account information will not work on GHES - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add . git commit -m "generated" git push diff --git a/action.yml b/action.yml index 6842eb843..2e379126f 100644 --- a/action.yml +++ b/action.yml @@ -22,6 +22,12 @@ inputs: [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets) default: ${{ github.token }} + configure-user: + description: > + Whether to configure user.name and user.email in the local git config. + This is required to push a commit from a Github Action Workflow. + Set to `false` to disable the config. + default: true ssh-key: description: > SSH key used to fetch the repository. The SSH key is configured with the local diff --git a/dist/index.js b/dist/index.js index b0db71380..230e725f3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1813,6 +1813,9 @@ function getInputs() { core.debug(`recursive submodules = ${result.nestedSubmodules}`); // Auth token result.authToken = core.getInput('token', { required: true }); + // Configure user + result.configureUser = + (core.getInput('configure-user') || 'true').toUpperCase() === 'TRUE' // SSH result.sshKey = core.getInput('ssh-key'); result.sshKnownHosts = core.getInput('ssh-known-hosts'); diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index 2d3513897..dcdb9b278 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -274,6 +274,14 @@ export async function getSource(settings: IGitSourceSettings): Promise { settings.commit, settings.githubServerUrl ) + if (settings.configureUser) { + if (!await git.configExists('user.name', true)) { + await git.config('user.name', 'github-action[bot]', true) + } + if (!await git.configExists('user.email', true)) { + await git.config('user.email', '41898282+github-actions[bot]@users.noreply.github.com', true) + } + } } finally { // Remove auth if (authHelper) { diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts index 4e41ac302..e7ddb41cd 100644 --- a/src/git-source-settings.ts +++ b/src/git-source-settings.ts @@ -79,6 +79,11 @@ export interface IGitSourceSettings { */ authToken: string + /** + * Indicates whether to set a default user name and email in the local git config + */ + configureUser: boolean + /** * The SSH key to configure */ diff --git a/src/input-helper.ts b/src/input-helper.ts index 059232f5c..b1a2b7a4b 100644 --- a/src/input-helper.ts +++ b/src/input-helper.ts @@ -138,6 +138,10 @@ export async function getInputs(): Promise { // Auth token result.authToken = core.getInput('token', {required: true}) + // Configure user + result.configureUser = + (core.getInput('configure-user') || 'true').toUpperCase() === 'TRUE' + // SSH result.sshKey = core.getInput('ssh-key') result.sshKnownHosts = core.getInput('ssh-known-hosts')