1

尽管遵循Microsoft 此处关于如何使 YAML 管道能够在脚本中运行 Git 命令的说明,但当我在云中构建时,我似乎无法正确地将 Git 标记应用于存储库。它可以在本地托管代理上运行。

谁能发现我做错了什么?

我不断收到此错误:

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 的说明”时,我的意思是我给了我的 repo 的“项目集合构建服务”用户执行以下操作的权利(它已经拥有其他权利)

Contribute
Create branch
Create tag

该用户的权限如下所示:

在此处输入图像描述

我很小心地申请persistCredentials: true了回购结帐

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

1 回答 1

2

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

如何预防?

有几种选择,但最短的只是添加--porcelaingit push

git push origin v$(fullVersion) --porcelain
于 2020-07-28T08:29:48.377 回答