1

我不明白 Git 身份验证如何在 Azure Devops Yaml 管道中工作。

我所做的

我运行这个管道:

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"

它本质上运行位于 Tuto-Deploy 中的这个 PowerShell 脚本:

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'

我有的

git push 标签工作正常。但是 git push 引发了一些与身份验证问题相关的错误消息:

作者身份不明

*** 请告诉我你是谁。

git config --global user.email "you@example.com"
git config --global user.name "你的名字"

设置您帐户的默认身份。省略 --global 以仅在此存储库中设置身份。

致命:无法自动检测电子邮件地址(得到'VssAdministrator@WIN-QB09EGE8K8T.(无)')致命:您当前不在分支上。要将历史推送到当前(分离的 HEAD)状态,请使用

git push origin 头:

其他信息

我为我的构建代理授予了Create tagContributor权限。

我想知道的

为什么添加、提交和推送有身份验证问题但没有推送标签?为什么persistCredential是推送标签所必需的,但对提交和推送没有影响?

谢谢

4

1 回答 1

4

这不完全是身份验证问题 - persistCredentials负责处理。但是为了提交更改,git 必须为新提交分配一个作者。为此,它需要一个名称/电子邮件对。

您只需要执行错误消息中的命令:

git config --global user.email "pipeline@example.com"
git config --global user.name "pipeline"

在脚本和错误消失之前,将它们添加到您的脚本或作为单独的管道步骤运行它们。

于 2021-06-17T04:23:13.977 回答