Я пытаюсь выяснить, как закрыть цикл в нашем процессе сборки, где мы применяем номер версии к файлам 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
}
Является ли это правильный способ делать это? Если службе сборки не разрешен доступ, как он может это ПОЛУЧИТЬ код, скомпилировать его, а затем POST артефакт где-нибудь?
Я предпочел бы отказаться от изменений на 'AssemblyInfo *' файлы, чем проверить их в систему управления версиями.. –
@ JuanM.Elosegui почему? –
Согласовано. поскольку проверенные источники не будут соответствовать тем, которые были записаны в качестве набора изменений, используемого для сборки, не будут соответствовать символам и индексированным источникам, ломать расширенный сценарий отладки, обременять историю и удалять понятие «версий» для большинства разработчиков, вызывая чтобы они не прирастали правильно при проверке изменений, основных версий и т. д. Я рекомендую использовать «1.2. *», и сервер сборки автоматически применяет ревизию, а вручную контролирует основные и второстепенные версии. – jessehouwing