In an Azure Devops pipeline: push tag works, but not push

I don't understand a point concerning how Git uthentication works in an Azure Devops Yaml pipeline.

What I do

I run this pipeline :

resources:   repositories:
    - repository: TutoDeployin Tuto-DeployBuild repository
      ref: main
      type: git
      name: Tuto-Deploy

jobs:  
- job: Build

  steps:
    - checkout: self
      clean: true
      persistCredentials: true
    - checkout: TutoDeploy
      clean: true
      persistCredentials: true

    - task: Powershell@2
      inputs:
        pwsh: true
        filePath: '.\tuto-deploybuild\CI\build.ps1'
        arguments: "-repositoryName tuto-deploy"

It essentially run this PowerShell script located in Tuto-Deploy:

Param(
    $repositoryName
)

cd "$($env:Build_SourcesDirectory)/$repositoryName"


$version = @{
    numero = 0
    date = Get-Date
}

$path = "$env:Build_SourcesDirectory" + "/$repositoryName/version"
$versionFile = "$path/version.json"
New-Item -Path $path -ItemType Directory -force


If ((Test-Path $versionFile) -eq $True) {
    $version = ConvertFrom-Json $versionFile -asHashtable
}

$version.numero++

If(!(test-path $path))
{
      New-Item -ItemType Directory -Force -Path $path
}

ConvertTo-Json $version > $versionFile

git tag $version.numero --force
git push --tags --force

git add *
git commit -m 'New version'

What I have

git push tag works fine. But git push raised several error messages related to an authentication issue:

Author identity unknown

*** Please tell me who you are.

Run

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

to set your account's default identity. Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'VssAdministrator@WIN-QB09EGE8K8T.(none)') fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD) state now, use

git push origin HEAD:

Other infos

I gave Create tag and Contributor permissions to my build agent.

What I want to know

Why add,commit and push have authentication issue but not push tag? Why persistCredential is necessary for pushing tags but has no impact to commit and push?

Thanks

Upvotes: 1

Views: 2318

Answers (1)

qbik
qbik

Reputation: 5908

It's not exactly authentication issue - persistCredentials takes care of that. But in order to commit changes, git has to assign an author to the new commit. For that, it requires a name/email pair.

You just need to execute the commands from the error message:

git config --global user.email "[email protected]"
git config --global user.name "pipeline"

Either add them to your script or run them as a separate pipeline step, before the script and the error should go away.

Upvotes: 5

Related Questions