无法在 Azure 管道云构建中应用 Git 标记。虽然适用于本地代理

Unable to apply Git Tag in Azure pipeline cloud build. Works on local agent though

尽管遵循 Microsoft instructions here 如何使 YAML 管道能够在脚本中执行 运行 Git 命令,但我似乎无法正确应用 Git 当我在云中构建时标记到 repo。不过它适用于本地托管代理。

谁能发现我做错了什么?

我不断收到此错误:

2020-07-28T03:04:25.7818359Z + git push origin  v1.0.6253
2020-07-28T03:04:25.7818711Z + ~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-07-28T03:04:25.7821133Z     + CategoryInfo          : NotSpecified: (To https://dev....ftware/_git/Sdk:String) [], RemoteException
2020-07-28T03:04:25.7822040Z     + FullyQualifiedErrorId : NativeCommandError
2020-07-28T03:04:25.7822281Z  
2020-07-28T03:04:25.9298244Z ##[error]PowerShell exited with code '1'.

我的 YAML 步骤如下所示:

- task: PowerShell@2
  displayName: 'Tag the build with v$(fullVersion)'
  inputs:
    targetType: 'inline'
    script: |
      cd $(sdkFolder)
      git config user.email "me@mycompany.com"
      git config user.name "Build Script"
      git tag -a v$(fullVersion) -m "Nightly Build"
      git push origin v$(fullVersion)

(注:我在实际脚本中使用了我的真实姓名和地址)

当我说我“遵循了 Microsoft 的说明”时,我的意思是我向我的存储库的“项目集合构建服务”用户授予了执行以下操作的权限(它已经拥有其他权限)

Contribute
Create branch
Create tag

该用户的权限如下所示:

而且我小心地将 persistCredentials: true 应用到 repo checkout

steps:
- checkout: git://Software/Sdk
  persistCredentials: true

操作成功,这不是“真正的”错误,这是因为 git push 正在将输出发送到 stderr,而不是 stdout,所以 PowerShell 认为这是一个错误。

如何预防?

有多种选择,但最短的是将 --porcelain 添加到 git push:

git push origin v$(fullVersion) --porcelain