mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 19:33:35 +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 }} |     # Default: ${{ github.token }} | ||||||
|     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 |     # 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 |     # git config, which enables your scripts to run authenticated git commands. The | ||||||
|     # post-job step removes the SSH key. |     # post-job step removes the SSH key. | ||||||
| @ -316,8 +322,6 @@ jobs: | |||||||
|       - run: | |       - run: | | ||||||
|           date > generated.txt |           date > generated.txt | ||||||
|           # Note: the following account information will not work on GHES |           # 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 add . | ||||||
|           git commit -m "generated" |           git commit -m "generated" | ||||||
|           git push |           git push | ||||||
| @ -340,8 +344,6 @@ jobs: | |||||||
|       - run: | |       - run: | | ||||||
|           date > generated.txt |           date > generated.txt | ||||||
|           # Note: the following account information will not work on GHES |           # 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 add . | ||||||
|           git commit -m "generated" |           git commit -m "generated" | ||||||
|           git push |           git push | ||||||
|  | |||||||
| @ -1,12 +1,12 @@ | |||||||
| import * as core from '@actions/core' | import * as core from '@actions/core' | ||||||
| import * as fs from 'fs' | 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 io from '@actions/io' | ||||||
| import * as os from 'os' | import * as os from 'os' | ||||||
| import * as path from 'path' | import * as path from 'path' | ||||||
| import * as stateHelper from '../lib/state-helper' | import * as stateHelper from '../src/state-helper' | ||||||
| import {IGitCommandManager} from '../lib/git-command-manager' | import {IGitCommandManager} from '../src/git-command-manager' | ||||||
| import {IGitSourceSettings} from '../lib/git-source-settings' | import {IGitSourceSettings} from '../src/git-source-settings' | ||||||
| 
 | 
 | ||||||
| const isWindows = process.platform === 'win32' | const isWindows = process.platform === 'win32' | ||||||
| const testWorkspace = path.join(__dirname, '_temp', 'git-auth-helper') | const testWorkspace = path.join(__dirname, '_temp', 'git-auth-helper') | ||||||
| @ -824,7 +824,8 @@ async function setup(testName: string): Promise<void> { | |||||||
|     sshUser: '', |     sshUser: '', | ||||||
|     workflowOrganizationId: 123456, |     workflowOrganizationId: 123456, | ||||||
|     setSafeDirectory: true, |     setSafeDirectory: true, | ||||||
|     githubServerUrl: githubServerUrl |     githubServerUrl: githubServerUrl, | ||||||
|  |     gitUser: 'github-action[bot]' | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import * as exec from '@actions/exec' | import * as exec from '@actions/exec' | ||||||
| import * as fshelper from '../lib/fs-helper' | import * as fshelper from '../src/fs-helper' | ||||||
| import * as commandManager from '../lib/git-command-manager' | import * as commandManager from '../src/git-command-manager' | ||||||
| 
 | 
 | ||||||
| let git: commandManager.IGitCommandManager | let git: commandManager.IGitCommandManager | ||||||
| let mockExec = jest.fn() | let mockExec = jest.fn() | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| import * as core from '@actions/core' | import * as core from '@actions/core' | ||||||
| import * as fs from 'fs' | 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 io from '@actions/io' | ||||||
| import * as path from 'path' | 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') | const testWorkspace = path.join(__dirname, '_temp', 'git-directory-helper') | ||||||
| let repositoryPath: string | let repositoryPath: string | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| import * as core from '@actions/core' | 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 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 path from 'path' | ||||||
| import * as workflowContextHelper from '../lib/workflow-context-helper' | import * as workflowContextHelper from '../src/workflow-context-helper' | ||||||
| import {IGitSourceSettings} from '../lib/git-source-settings' | import {IGitSourceSettings} from '../src/git-source-settings' | ||||||
| 
 | 
 | ||||||
| const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE'] | const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE'] | ||||||
| const gitHubWorkspace = path.resolve('/checkout-tests/workspace') | const gitHubWorkspace = path.resolve('/checkout-tests/workspace') | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import * as assert from 'assert' | import * as assert from 'assert' | ||||||
| import * as refHelper from '../lib/ref-helper' | import * as refHelper from '../src/ref-helper' | ||||||
| import {IGitCommandManager} from '../lib/git-command-manager' | import {IGitCommandManager} from '../src/git-command-manager' | ||||||
| 
 | 
 | ||||||
| const commit = '1234567890123456789012345678901234567890' | const commit = '1234567890123456789012345678901234567890' | ||||||
| let git: IGitCommandManager | let git: IGitCommandManager | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import * as core from '@actions/core' | import * as core from '@actions/core' | ||||||
| import {RetryHelper} from '../lib/retry-helper' | import {RetryHelper} from '../src/retry-helper' | ||||||
| 
 | 
 | ||||||
| let info: string[] | let info: string[] | ||||||
| let retryHelper: any | 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) |       [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 }} |     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: |   ssh-key: | ||||||
|     description: > |     description: > | ||||||
|       SSH key used to fetch the repository. The SSH key is configured with the local |       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()); |             core.setOutput('commit', commitSHA.trim()); | ||||||
|             // Check for incorrect pull request merge commit
 |             // Check for incorrect pull request merge commit
 | ||||||
|             yield refHelper.checkCommitInfo(settings.authToken, commitInfo, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.githubServerUrl); |             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 { |         finally { | ||||||
|             // Remove auth
 |             // Remove auth
 | ||||||
| @ -1546,6 +1555,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| exports.downloadRepository = downloadRepository; | exports.downloadRepository = downloadRepository; | ||||||
| exports.getDefaultBranch = getDefaultBranch; | exports.getDefaultBranch = getDefaultBranch; | ||||||
|  | exports.getUserId = getUserId; | ||||||
| const assert = __importStar(__nccwpck_require__(9491)); | const assert = __importStar(__nccwpck_require__(9491)); | ||||||
| const core = __importStar(__nccwpck_require__(2186)); | const core = __importStar(__nccwpck_require__(2186)); | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | 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
 |         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}`); |         core.debug(`recursive submodules = ${result.nestedSubmodules}`); | ||||||
|         // Auth token
 |         // Auth token
 | ||||||
|         result.authToken = core.getInput('token', { required: true }); |         result.authToken = core.getInput('token', { required: true }); | ||||||
|  |         // Git user
 | ||||||
|  |         result.gitUser = core.getInput('git-user') || 'github-action[bot]'; | ||||||
|         // SSH
 |         // SSH
 | ||||||
|         result.sshKey = core.getInput('ssh-key'); |         result.sshKey = core.getInput('ssh-key'); | ||||||
|         result.sshKnownHosts = core.getInput('ssh-known-hosts'); |         result.sshKnownHosts = core.getInput('ssh-known-hosts'); | ||||||
|  | |||||||
| @ -274,6 +274,23 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | |||||||
|       settings.commit, |       settings.commit, | ||||||
|       settings.githubServerUrl |       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 { |   } finally { | ||||||
|     // Remove auth
 |     // Remove auth
 | ||||||
|     if (authHelper) { |     if (authHelper) { | ||||||
|  | |||||||
| @ -79,6 +79,11 @@ export interface IGitSourceSettings { | |||||||
|    */ |    */ | ||||||
|   authToken: string |   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 |    * The SSH key to configure | ||||||
|    */ |    */ | ||||||
|  | |||||||
| @ -143,3 +143,15 @@ async function downloadArchive( | |||||||
|   }) |   }) | ||||||
|   return Buffer.from(response.data as ArrayBuffer) // response.data is ArrayBuffer
 |   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
 |   // Auth token
 | ||||||
|   result.authToken = core.getInput('token', {required: true}) |   result.authToken = core.getInput('token', {required: true}) | ||||||
| 
 | 
 | ||||||
|  |   // Git user
 | ||||||
|  |   result.gitUser = core.getInput('git-user') || 'github-action[bot]' | ||||||
|  | 
 | ||||||
|   // SSH
 |   // SSH
 | ||||||
|   result.sshKey = core.getInput('ssh-key') |   result.sshKey = core.getInput('ssh-key') | ||||||
|   result.sshKnownHosts = core.getInput('ssh-known-hosts') |   result.sshKnownHosts = core.getInput('ssh-known-hosts') | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user