在旧的TFS构建定义(XAML构建)中,如果代码未更改,我可以选择让Team Build不再构建相同的代码。 如何防止在新的TFS构建过程中重复构建vNext 2015
但是,在新的XML Build(vNext)中,我没有看到这个选项,并且构建服务器一次又一次地构建代码。有没有什么办法可以达到我们在旧XAML构建定义中所做的相同行为,即如果它没有被更改,则不再构建代码?
感谢您的帮助...
[UPDATE]
我写了一个PowerShell脚本要达到什么埃迪在回答表明
Write-Debug -Message ("System URL: "+$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)
Write-Debug -Message ("Team Project Name: "+$env:SYSTEM_TEAMPROJECT)
$baseURI=$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI+"DefaultCollection/"+$env:SYSTEM_TEAMPROJECT+"/_apis/"
$oauth= @{Authorization="Bearer $env:SYSTEM_ACCESSTOKEN"}
Write-Debug -Message ("Base URL: "+$baseURI)
$BuildDefList=(Invoke-RestMethod -Uri $baseURI/build/definitions?api-version=2.0 -Headers $oauth -Method Get).value | where {$_.name -like "*Build"}
Write-Host -ForegroundColor Cyan -Object ("Found "+$BuildDefList.count+" build definition(s)")
foreach ($buildDef in $BuildDefList)
{
Write-Host -ForegroundColor Yellow -Object ("Checking Build Definition: "+$buildDef.name+" ...")
$id=$buildDef.id
$build= Invoke-RestMethod -Uri $baseURI/build/builds?api-version=2.0"&"definitions=$id"&"`$top=1"&"resultFilter=succeeded -Headers $oauth -Method Get
$changeset= $build.value.sourceVersion
"The changeset used in the lastest build in this build definition is "+$changeset
$sourceBranch=$build.value.sourceBranch
$latestChangeset=(Invoke-RestMethod -Uri $baseURI/tfvc/changesets?api-version=1.0"&"searchCriteria.itemPath=$sourceBranch"&"`$top=1 -Headers $oauth -Method Get).value.changesetId
"The latest changset need to build is "+$latestChangeset
if($latestChangeset -and $changeset -lt $latestChangeset)
{
Write-Host -ForegroundColor Green -Object ("The build is old. Queuing new build for "+$buildDef.name+" now")
$body= @{Definition = @{ Id=$id}} | ConvertTo-Json
Invoke-RestMethod -Uri $baseURI/build/builds?api-version=2.0 -Body $body -ContentType "application/json" -Headers $oauth -Method Post
}
}
我添加了我写你的建议powershell脚本。我也有相关的问题,我认为在给定背景的情况下最好问这里。我的问题是:现在我在每个请求的标题中使用我的PAT。由于此脚本是由构建定义运行的。我想知道是否可以用运行此构建定义的帐户(例如服务帐户)来替换我的凭证?我认为这是可能的,否则其他构建任务(例如tfvc get)将无法访问REST API。顺便说一句,我使用的VSTS不是TFS的前提下,并且构建代理是在专用机器上。 – LxL
@LxL在构建定义设置下,选中“选项”选项卡下的“允许脚本访问OAuth标记”。然后,您可以使用构建的oauth令牌访问VSTS。 –
这里是如何在脚本中使用OAuth的链接,以防其他人也像我一样丢失https://www.visualstudio.com/docs/build/scripts/index#oauth – LxL