我想弄清楚如何關閉我們的構建過程中的循環,我們將版本號作爲構建過程的一部分應用於AssemblyInfo。*文件。如何將文件簽入爲Visual Studio Team Services中構建的一部分?
我們正在從內部tfs遷移到視覺演播室團隊服務。我們目前的許多內部部署版本都會更新版本號以使其與內部版本號保持同步,並在構建期間將這些文件還原到源代碼控制中。
我已經成功使用script located on msdn作爲示例來開始自定義構建過程。
我現在試圖檢查文件回到源的控制,但我收到的錯誤:
#[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
#[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.
我目前使用tf.exe試圖做到這一點。首先在powershell腳本的頂部獲取工具的路徑;
# get the tf command line tool path
$tfexe = [System.IO.Path]::GetFullPath($env:VS140COMNTOOLS + "..\..\common7\ide\tf.exe")
if (-Not (Test-Path $tfexe))
{
Write-Error "Could not find tf.exe at '$tfexe'"
exit 1
}
else
{
Write-Host "Found tf.exe at '$tfexe'"
}
然後修改環籤的文件,然後檢查文件回。
# Apply the version to the assembly property files
$files = gci $Env:BUILD_SOURCESDIRECTORY -recurse -include "*Properties*","My Project" |
?{ $_.PSIsContainer } |
foreach { gci -Path $_.FullName -Recurse -include AssemblyInfo.* }
if($files)
{
Write-Host "Will apply $NewVersion to $($files.count) files."
foreach ($file in $files) {
#Write-Host "Attempting to checkout file '$file'"
& ($tfexe) vc checkout $file
$filecontent = Get-Content($file)
attrib $file -r
$filecontent -replace $VersionRegex, $NewVersion | Out-File $file
Write-Host "$file.FullName - version applied"
}
# Checkin pending changes together
##[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
##[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.
Write-Host "Attempting to checkin files"
$comment = "Applied $NewVersion to $($files.count) files. ***NO_CI***"
& ($tfexe) vc checkin /comment:"$comment" /noprompt
}
這是在做正確的方法?如果構建服務沒有被授權訪問,它會如何獲取代碼,編譯它,然後在某處發佈工件?
我寧願放棄對'集信息的變化*'文件比檢查它們到源控制。 –
@ JuanM.Elosegui爲什麼? –
同意。因爲簽入的源代碼與用於構建的變更集記錄的內容不匹配,不符合符號和索引源,打破高級調試方案,混亂的歷史記錄,並消除了大多數開發人員的「版本」概念,導致他們在檢查重大更改,主要版本等時不會正確增加。我建議使用'1.2。*',並讓構建服務器自動應用修訂版,同時手動控制主版本和次版本。 – jessehouwing