微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我在基于git的wiki更新程序任务中面临以下问题

如何解决我在基于git的wiki更新程序任务中面临以下问题

enter image description here

我创建了身份验证令牌以及已定义运行管道的用户的所有权限

解决方法

如果您在任务中选中Run with Build Agent Credentials作为“身份验证”。并在 Wiki安全性页面中向构建帐户{ProjectName} build service ({OrganizationName})授予了读取和贡献权限。

但是您仍然遇到上述错误。可能是因为您在Azure DevOps Server计算机中启用了IIS基本身份验证。在Windows计算机上启用IIS基本身份验证后,它将阻止您使用个人访问令牌(PAT)作为身份验证机制。参见here

我们建议您在使用Azure DevOps Server时始终关闭IIS基本身份验证。仅在必要时才启用IIS基本身份验证。在Windows计算机上启用IIS基本身份验证后,它将阻止您使用个人访问令牌(PAT)作为身份验证机制。

作为解决方法,您可以在启用IIS基本身份验证时向Git请求添加额外的标头,其中包括以“ user:PAT”为基数64的编码:

因此,您可以在powershell任务中运行纯git命令来更新您的Wiki存储库,而无需使用基于git的Wiki更新器任务。请参阅以下powershell任务(yaml格式)中的示例脚本:

steps:
- powershell: |
  
   git config --global user.email "your@eamil.com"
   git config --global user.name "name"
   
   $MyPat = "$(system.accesstoken)"
   $B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
   
   #clone the wiki repo
   git -c http.extraHeader="Authorization: Basic $B64Pat" clone https://server/collection/_git/Document.wiki -q
   
   cd Document.wiki

   #add a new file 
   echo  echo "some-text"  > addnew.md
   
   git add .
   git commit -m message

   #push to wiki repo
   git -c http.extraHeader="Authorization: Basic $B64Pat" push https://server/collection/_git/Document.wiki -q
  displayName: 'update wiki'

检查here以获得更多信息。

为了在上述脚本中使用Build Agent OAuth令牌$(system.accesstoken)。您需要单击Agent job 1并选中选项Allow scripts to access the OAuth token

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。