我正在使用Azure Dev OPS触发生成和部署。我在GIT分支中有角度代码,将从中触发生成,并且基于build#,我需要在TFS中更新文件并进行检入。
我添加了PowerShell任务以从GIT分支读取build#。但我不知道进一步的步骤来更新文件并在TFS分支中检入相同的文件。
请建议使用PowerShell命令来实现上述任务。
答案 0 :(得分:0)
Azure DevOps管道任务以更新文件并签入TFS
您可以调用REST API Pushes - Create来更新文件,并使用powershell脚本在TFS分支中检入该文件。
转到代理阶段,然后选择“允许脚本访问OAuth令牌”。参见Use the OAuth token to access the REST API:
在构建管道中添加PowerShell任务,以获取要更新文件并签入的分支上的最新提交:
GET https://{instance}/{collection}/{project}/_apis/git/repositories/{repositoryId}/commits?api-version=5.0&branch={BranchName}&$top=1
更新文件并通过REST API在TFS分支中检入该文件:
POST https://{instance}/{collection}/{project}/_apis/git/repositories/{repositoryId}/pushes?api-version=5.0
正文(application / json)
{
"refUpdates": [
{
"name": "refs/heads/$(BranchName)",
"oldObjectId": "[step 2 commit ID]"
}
],
"commits": [
{
"comment": "Added a few more items to the task list.",
"changes": [
{
"changeType": "edit",
"item": {
"path": "/tasks.md"
},
"newContent": {
"content": "# Tasks\n\n* Item 1\n* Item 2\n* Item 3\n* Item 4\n\nIf you need to add more, update this file and add them!",
"contentType": "rawtext"
}
}
]
}
]
}
作为测试结果:
注意:
repositoryId
。希望这会有所帮助。
答案 1 :(得分:0)
基于以上建议。我添加了下面提到的代码
$requestBody = @{
changes=
@(@{
item= @{
path= "$/SMT_Project/" + $branch + "/SMT/BPOSE_WebApp/Deal/LandingPage.aspx"
contentMetadata= @{
encoding= -1
}
}
changeType= "add"
newContent= @{
content= $EncodedText
contentType= "base64Encoded"
}
})
comment= "Updated LandingPage.aspx with script for deployment"
} | ConvertTo-Json -Depth 4
$headers = @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
$headers.Add("Accept", 'application/json')
$requestBodyJson = ($requestBody | ConvertFrom-Json)
Write-Host 'headers - ' $headers
Write-Host 'requestBody - ' $requestBody
Write-Host 'requestBodyJson - ' $requestBodyJson
$postRes = Invoke-WebRequest -Uri https://dev.azure.com/sm10/_apis/tfvc/changesets?api-version=5.1 -ContentType "application/json" -Headers $headers -Method POST -Body $requestBody -Verbose
但是我没有收到Web请求的响应,也没有收到任何错误。请让我知道任何东西丢失。