Увеличение номера сборки с помощью сборки Hudson - PullRequest
2 голосов
/ 07 ноября 2011

Вот то, чего я пытаюсь достичь. В настоящее время я использую сборку Hudson для сборки на удаленном компьютере. В настоящее время мне нужно открыть свое решение и вручную обновить числа [assembly: AssemblyVersion ("1.2.6.190")] в двух файлах, а затем зафиксировать мои изменения в SVN перед запуском сборки через Hudson. (задание hudson не будет запущено, пока вы не выполните сборку clcik)

Я хотел бы найти способ автоматически увеличивать только последнее число каждый раз, когда Хадсон выполняет сборку.

Я бы хотел увеличить его на 1 (без отметки времени или подобного).

Буду признателен за любые идеи или ссылки на другие материалы, которые могут помочь =)

Спасибо

Toby

Ответы [ 2 ]

5 голосов
/ 07 ноября 2011

Я использую плагин PowerShell для Jenkins и использую Powershell для поиска всех файлов, которые соответствуют шаблону (скажем, AssemblyInfo. *), Затем считываю файлы и использую встроенную функциональность регулярных выражений в PowerShell (-match и-relace операции), чтобы найти и заменить атрибуты 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
   }
}
2 голосов
/ 08 ноября 2011

Поскольку я получал только ответы, не учитывающие мои требования по использованию Hudson, я подумал, что опубликую ссылку на хорошее решение.

Посмотрите на ответ "nos" здесь - Как я могу автоматически увеличивать версию сборки C # через нашу CI-платформу (Hudson)?

Это не принятый ответ, но он должен быть, как он работает отлично.

...