Увеличение номера сборки с помощью сборки Hudson
Вот что я пытаюсь достичь. В настоящее время я использую сборку Hudson для сборки на удаленном компьютере. В настоящее время мне нужно открыть свое решение и вручную обновить числа [assembly: AssemblyVersion("1.2.6.190")] в двух файлах, а затем зафиксировать мои изменения в SVN перед запуском сборки через Hudson. (задание hudson не настроено на запуск, пока вы не выполните сборку clcik)
Я хотел бы найти способ автоматически увеличивать только последнее число каждый раз, когда Хадсон делает сборку.
Я хотел бы увеличить его на 1 (без отметки времени или подобного).
Будем благодарны за любые идеи или ссылки на другие материалы, которые могут помочь =)
Спасибо,
Тоби
2 ответа
Поскольку я получал только ответы, которые не учитывали мои требования по использованию Hudson, я решил опубликовать ссылку на хорошее решение.
Посмотрите на ответ "nos" здесь - Как я могу автоматически увеличить версию сборки C# через нашу CI-платформу (Hudson)?
Это не принятый ответ, но так и должно быть.
Я использую плагин PowerShell для Jenkins и использую Powershell, чтобы найти все файлы, которые соответствуют шаблону (скажем, AssemblyInfo.*), Затем читаю файлы и использую встроенную функцию регулярного выражения в PowerShell (операции -match и -replace), чтобы найти и заменить атрибуты AssemblyVersion, изменив последний октет на текущий номер сборки Jenkins.
function assign-build-number
{
#get the build number form Jenkins env var
if(!(Test-Path env:\BUILD_NUMBER))
{
return
}
#set the line pattern for matching
$linePattern = 'AssemblyFileVersion'
#get all assemlby info files
$assemblyInfos = gci -path $env:ENLISTROOT -include AssemblyInfo.cs -Recurse
#foreach one, read it, find the line, replace the value and write out to temp
$assemblyInfos | foreach-object -process {
$file = $_
write-host -ForegroundColor Green "- Updating build number in $file"
if(test-path "$file.tmp" -PathType Leaf)
{
remove-item "$file.tmp"
}
get-content $file | foreach-object -process {
$line = $_
if($line -match $linePattern)
{
#replace the last digit in the file version to match this build number.
$line = $line -replace '\d"', "$env:BUILD_NUMBER`""
}
$line | add-content "$file.tmp"
}
#replace the old file with the new one
remove-item $file
rename-item "$file.tmp" $file -Force -Confirm:$false
}
}