mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 09:03:36 +00:00 
			
		
		
		
	Merge ab5d862ce859c0e3a909ea13d61a0112d9018d3b into ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
This commit is contained in:
		
						commit
						79d27f71d3
					
				
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							| @ -67,6 +67,12 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     # Default: ${{ github.token }} | ||||
|     token: '' | ||||
| 
 | ||||
|     # Github slug used to configure local user.name and user.email for git. This is | ||||
|     # required to push a commit from a Github Action Workflow. Set to '' to disable | ||||
|     # this configuration. | ||||
|     # Default: github-action[bot] | ||||
|     git-user: '' | ||||
| 
 | ||||
|     # SSH key used to fetch the repository. The SSH key is configured with the local | ||||
|     # git config, which enables your scripts to run authenticated git commands. The | ||||
|     # post-job step removes the SSH key. | ||||
| @ -316,8 +322,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 | ||||
| @ -340,8 +344,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 | ||||
|  | ||||
| @ -1,12 +1,12 @@ | ||||
| import * as core from '@actions/core' | ||||
| import * as fs from 'fs' | ||||
| import * as gitAuthHelper from '../lib/git-auth-helper' | ||||
| import * as gitAuthHelper from '../src/git-auth-helper' | ||||
| import * as io from '@actions/io' | ||||
| import * as os from 'os' | ||||
| import * as path from 'path' | ||||
| import * as stateHelper from '../lib/state-helper' | ||||
| import {IGitCommandManager} from '../lib/git-command-manager' | ||||
| import {IGitSourceSettings} from '../lib/git-source-settings' | ||||
| import * as stateHelper from '../src/state-helper' | ||||
| import {IGitCommandManager} from '../src/git-command-manager' | ||||
| import {IGitSourceSettings} from '../src/git-source-settings' | ||||
| 
 | ||||
| const isWindows = process.platform === 'win32' | ||||
| const testWorkspace = path.join(__dirname, '_temp', 'git-auth-helper') | ||||
| @ -824,7 +824,8 @@ async function setup(testName: string): Promise<void> { | ||||
|     sshUser: '', | ||||
|     workflowOrganizationId: 123456, | ||||
|     setSafeDirectory: true, | ||||
|     githubServerUrl: githubServerUrl | ||||
|     githubServerUrl: githubServerUrl, | ||||
|     gitUser: 'github-action[bot]' | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import * as exec from '@actions/exec' | ||||
| import * as fshelper from '../lib/fs-helper' | ||||
| import * as commandManager from '../lib/git-command-manager' | ||||
| import * as fshelper from '../src/fs-helper' | ||||
| import * as commandManager from '../src/git-command-manager' | ||||
| 
 | ||||
| let git: commandManager.IGitCommandManager | ||||
| let mockExec = jest.fn() | ||||
|  | ||||
| @ -1,9 +1,9 @@ | ||||
| import * as core from '@actions/core' | ||||
| import * as fs from 'fs' | ||||
| import * as gitDirectoryHelper from '../lib/git-directory-helper' | ||||
| import * as gitDirectoryHelper from '../src/git-directory-helper' | ||||
| import * as io from '@actions/io' | ||||
| import * as path from 'path' | ||||
| import {IGitCommandManager} from '../lib/git-command-manager' | ||||
| import {IGitCommandManager} from '../src/git-command-manager' | ||||
| 
 | ||||
| const testWorkspace = path.join(__dirname, '_temp', 'git-directory-helper') | ||||
| let repositoryPath: string | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| import * as core from '@actions/core' | ||||
| import * as fsHelper from '../lib/fs-helper' | ||||
| import * as fsHelper from '../src/fs-helper' | ||||
| import * as github from '@actions/github' | ||||
| import * as inputHelper from '../lib/input-helper' | ||||
| import * as inputHelper from '../src/input-helper' | ||||
| import * as path from 'path' | ||||
| import * as workflowContextHelper from '../lib/workflow-context-helper' | ||||
| import {IGitSourceSettings} from '../lib/git-source-settings' | ||||
| import * as workflowContextHelper from '../src/workflow-context-helper' | ||||
| import {IGitSourceSettings} from '../src/git-source-settings' | ||||
| 
 | ||||
| const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE'] | ||||
| const gitHubWorkspace = path.resolve('/checkout-tests/workspace') | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import * as assert from 'assert' | ||||
| import * as refHelper from '../lib/ref-helper' | ||||
| import {IGitCommandManager} from '../lib/git-command-manager' | ||||
| import * as refHelper from '../src/ref-helper' | ||||
| import {IGitCommandManager} from '../src/git-command-manager' | ||||
| 
 | ||||
| const commit = '1234567890123456789012345678901234567890' | ||||
| let git: IGitCommandManager | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| import * as core from '@actions/core' | ||||
| import {RetryHelper} from '../lib/retry-helper' | ||||
| import {RetryHelper} from '../src/retry-helper' | ||||
| 
 | ||||
| let info: string[] | ||||
| let retryHelper: any | ||||
|  | ||||
| @ -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 }} | ||||
|   git-user: | ||||
|     description: > | ||||
|       Github slug used to configure local user.name and user.email for git. | ||||
|       This is required to push a commit from a Github Action Workflow. | ||||
|       Set to '' to disable this configuration. | ||||
|     default: "github-action[bot]" | ||||
|   ssh-key: | ||||
|     description: > | ||||
|       SSH key used to fetch the repository. The SSH key is configured with the local | ||||
|  | ||||
							
								
								
									
										21
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1357,6 +1357,15 @@ function getSource(settings) { | ||||
|             core.setOutput('commit', commitSHA.trim()); | ||||
|             // Check for incorrect pull request merge commit
 | ||||
|             yield refHelper.checkCommitInfo(settings.authToken, commitInfo, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.githubServerUrl); | ||||
|             if (settings.gitUser) { | ||||
|                 if (!(yield git.configExists('user.name', true))) { | ||||
|                     yield git.config('user.name', settings.gitUser, true); | ||||
|                 } | ||||
|                 if (!(yield git.configExists('user.email', true))) { | ||||
|                     const userId = yield githubApiHelper.getUserId(settings.gitUser, settings.authToken, settings.githubServerUrl); | ||||
|                     yield git.config('user.email', `${userId}+${settings.gitUser}@users.noreply.github.com`, true); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         finally { | ||||
|             // Remove auth
 | ||||
| @ -1546,6 +1555,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.downloadRepository = downloadRepository; | ||||
| exports.getDefaultBranch = getDefaultBranch; | ||||
| exports.getUserId = getUserId; | ||||
| const assert = __importStar(__nccwpck_require__(9491)); | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| @ -1663,6 +1673,15 @@ function downloadArchive(authToken, owner, repo, ref, commit, baseUrl) { | ||||
|         return Buffer.from(response.data); // response.data is ArrayBuffer
 | ||||
|     }); | ||||
| } | ||||
| function getUserId(username, authToken, baseUrl) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         const octokit = github.getOctokit(authToken, { | ||||
|             baseUrl: (0, url_helper_1.getServerApiUrl)(baseUrl) | ||||
|         }); | ||||
|         const user = yield octokit.rest.users.getByUsername({ username, }); | ||||
|         return user.data.id; | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @ -1813,6 +1832,8 @@ function getInputs() { | ||||
|         core.debug(`recursive submodules = ${result.nestedSubmodules}`); | ||||
|         // Auth token
 | ||||
|         result.authToken = core.getInput('token', { required: true }); | ||||
|         // Git user
 | ||||
|         result.gitUser = core.getInput('git-user') || 'github-action[bot]'; | ||||
|         // SSH
 | ||||
|         result.sshKey = core.getInput('ssh-key'); | ||||
|         result.sshKnownHosts = core.getInput('ssh-known-hosts'); | ||||
|  | ||||
| @ -274,6 +274,23 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|       settings.commit, | ||||
|       settings.githubServerUrl | ||||
|     ) | ||||
|     if (settings.gitUser) { | ||||
|       if (!(await git.configExists('user.name', true))) { | ||||
|         await git.config('user.name', settings.gitUser, true) | ||||
|       } | ||||
|       if (!(await git.configExists('user.email', true))) { | ||||
|         const userId = await githubApiHelper.getUserId( | ||||
|           settings.gitUser, | ||||
|           settings.authToken, | ||||
|           settings.githubServerUrl | ||||
|         ) | ||||
|         await git.config( | ||||
|           'user.email', | ||||
|           `${userId}+${settings.gitUser}@users.noreply.github.com`, | ||||
|           true | ||||
|         ) | ||||
|       } | ||||
|     } | ||||
|   } finally { | ||||
|     // Remove auth
 | ||||
|     if (authHelper) { | ||||
|  | ||||
| @ -79,6 +79,11 @@ export interface IGitSourceSettings { | ||||
|    */ | ||||
|   authToken: string | ||||
| 
 | ||||
|   /** | ||||
|    * A github user slug to set a default user name and email in the local git config | ||||
|    */ | ||||
|   gitUser: string | ||||
| 
 | ||||
|   /** | ||||
|    * The SSH key to configure | ||||
|    */ | ||||
|  | ||||
| @ -143,3 +143,15 @@ async function downloadArchive( | ||||
|   }) | ||||
|   return Buffer.from(response.data as ArrayBuffer) // response.data is ArrayBuffer
 | ||||
| } | ||||
| 
 | ||||
| export async function getUserId( | ||||
|   username: string, | ||||
|   authToken: string, | ||||
|   baseUrl?: string | ||||
| ): Promise<number> { | ||||
|   const octokit = github.getOctokit(authToken, { | ||||
|     baseUrl: getServerApiUrl(baseUrl) | ||||
|   }) | ||||
|   const user = await octokit.rest.users.getByUsername({username}) | ||||
|   return user.data.id | ||||
| } | ||||
|  | ||||
| @ -138,6 +138,9 @@ export async function getInputs(): Promise<IGitSourceSettings> { | ||||
|   // Auth token
 | ||||
|   result.authToken = core.getInput('token', {required: true}) | ||||
| 
 | ||||
|   // Git user
 | ||||
|   result.gitUser = core.getInput('git-user') || 'github-action[bot]' | ||||
| 
 | ||||
|   // SSH
 | ||||
|   result.sshKey = core.getInput('ssh-key') | ||||
|   result.sshKnownHosts = core.getInput('ssh-known-hosts') | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user