@ -6572,9 +6572,13 @@ class GitAuthHelper {
yield this . configureToken ( ) ;
} ) ;
}
configure GlobalAuth( ) {
var _a ;
configure TempGlobalConfig( repositoryPath ) {
var _a , _b ;
return _ _awaiter ( this , void 0 , void 0 , function * ( ) {
// Already setup global config
if ( ( ( _a = this . temporaryHomePath ) === null || _a === void 0 ? void 0 : _a . length ) > 0 ) {
return path . join ( this . temporaryHomePath , '.gitconfig' ) ;
}
// Create a temp home directory
const runnerTemp = process . env [ 'RUNNER_TEMP' ] || '' ;
assert . ok ( runnerTemp , 'RUNNER_TEMP is not defined' ) ;
@ -6590,7 +6594,7 @@ class GitAuthHelper {
configExists = true ;
}
catch ( err ) {
if ( ( ( _ a = err ) === null || _a === void 0 ? void 0 : _a . code ) !== 'ENOENT' ) {
if ( ( ( _ b = err ) === null || _b === void 0 ? void 0 : _b . code ) !== 'ENOENT' ) {
throw err ;
}
}
@ -6601,10 +6605,25 @@ class GitAuthHelper {
else {
yield fs . promises . writeFile ( newGitConfigPath , '' ) ;
}
try {
// Override HOME
core . info ( ` Temporarily overriding HOME=' ${ this . temporaryHomePath } ' before making global git config changes ` ) ;
this . git . setEnvironmentVariable ( 'HOME' , this . temporaryHomePath ) ;
// Setup the workspace as a safe directory, so if we pass this into a container job with a different user it doesn't fail
// Otherwise all git commands we run in a container fail
core . info ( ` Adding working directory to the temporary git global config as a safe directory ` ) ;
yield this . git
. config ( 'safe.directory' , repositoryPath !== null && repositoryPath !== void 0 ? repositoryPath : this . settings . repositoryPath , true , true )
. catch ( error => {
core . info ( ` Failed to initialize safe directory with error: ${ error } ` ) ;
} ) ;
return newGitConfigPath ;
} ) ;
}
configureGlobalAuth ( ) {
return _ _awaiter ( this , void 0 , void 0 , function * ( ) {
// 'configureTempGlobalConfig' noops if already set, just returns the path
const newGitConfigPath = yield this . configureTempGlobalConfig ( ) ;
try {
// Configure the token
yield this . configureToken ( newGitConfigPath , true ) ;
// Configure HTTPS instead of SSH
@ -6657,11 +6676,14 @@ class GitAuthHelper {
yield this . removeToken ( ) ;
} ) ;
}
removeGlobalAuth ( ) {
removeGlobalConfig ( ) {
var _a ;
return _ _awaiter ( this , void 0 , void 0 , function * ( ) {
if ( ( ( _a = this . temporaryHomePath ) === null || _a === void 0 ? void 0 : _a . length ) > 0 ) {
core . debug ( ` Unsetting HOME override ` ) ;
this . git . removeEnvironmentVariable ( 'HOME' ) ;
yield io . rmRF ( this . temporaryHomePath ) ;
}
} ) ;
}
configureSsh ( ) {
@ -7326,6 +7348,12 @@ function getSource(settings) {
core . startGroup ( 'Getting Git version info' ) ;
const git = yield getGitCommandManager ( settings ) ;
core . endGroup ( ) ;
let authHelper = null ;
try {
if ( git ) {
authHelper = gitAuthHelper . createAuthHelper ( git , settings ) ;
yield authHelper . configureTempGlobalConfig ( ) ;
}
// Prepare existing directory, otherwise recreate
if ( isExisting ) {
yield gitDirectoryHelper . prepareExistingDirectory ( git , settings . repositoryPath , repositoryUrl , settings . clean , settings . ref ) ;
@ -7358,8 +7386,10 @@ function getSource(settings) {
core . warning ( ` Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay. ` ) ;
}
core . endGroup ( ) ;
const authHelper = gitAuthHelper . createAuthHelper ( git , settings ) ;
try {
// If we didn't initialize it above, do it now
if ( ! authHelper ) {
authHelper = gitAuthHelper . createAuthHelper ( git , settings ) ;
}
// Configure auth
core . startGroup ( 'Setting up auth' ) ;
yield authHelper . configureAuth ( ) ;
@ -7415,7 +7445,6 @@ function getSource(settings) {
core . endGroup ( ) ;
// Submodules
if ( settings . submodules ) {
try {
// Temporarily override global config
core . startGroup ( 'Setting up auth for fetching submodules' ) ;
yield authHelper . configureGlobalAuth ( ) ;
@ -7433,11 +7462,6 @@ function getSource(settings) {
core . endGroup ( ) ;
}
}
finally {
// Remove temporary global config override
yield authHelper . removeGlobalAuth ( ) ;
}
}
// Get commit information
const commitInfo = yield git . log1 ( ) ;
// Log commit sha
@ -7447,11 +7471,14 @@ function getSource(settings) {
}
finally {
// Remove auth
if ( authHelper ) {
if ( ! settings . persistCredentials ) {
core . startGroup ( 'Removing auth' ) ;
yield authHelper . removeAuth ( ) ;
core . endGroup ( ) ;
}
authHelper . removeGlobalConfig ( ) ;
}
}
} ) ;
}
@ -7472,7 +7499,13 @@ function cleanup(repositoryPath) {
}
// Remove auth
const authHelper = gitAuthHelper . createAuthHelper ( git ) ;
try {
yield authHelper . configureTempGlobalConfig ( repositoryPath ) ;
yield authHelper . removeAuth ( ) ;
}
finally {
yield authHelper . removeGlobalConfig ( ) ;
}
} ) ;
}
exports . cleanup = cleanup ;