Удаление косых черт из названий веток в TeamCity

Я пытаюсь передать имена веток из TeamCity в OctopusDeploy, чтобы мы могли легко отслеживать, из какой ветки произошло развертывание.

Для этого я хочу добавить имя ветви к номеру версии (или пакет nuget, созданный с помощью octopack), чтобы я мог отобразить это в пользовательском интерфейсе OctopusDeploy.

Это работает нормально, за исключением того, что мы используем git-flow, поэтому некоторые из наших веток содержат косые черты, что приводит к сбою octopack (поскольку имена файлов не могут содержать косые черты):

+:refs/heads/(feature/*)
+:refs/heads/(release/*)
+:refs/heads/(hotfix/*)

Есть ли способ заменить косую черту чем-то другим в TeamCity, не изменяя способ, которым мы называем наши ветви?

1 ответ

Решение

Используя скрипт сборки, вы можете взаимодействовать с процессом сборки и указывать собственный номер сборки, где вы можете заменить косую черту. Для получения более подробной информации вы можете проверить документы TeamCity.

Здесь вы можете найти пример C# о том, как изменить номер сборки.

Например, чтобы изменить номер сборки, вы можете добавить CommonAssemblyInfo.cs с содержанием вроде (извлечено из ссылки выше):

$ww = ([Math]::Floor([DateTime]::Now.DayOfYear/7)+1)

Write-Host "##teamcity[buildNumber '%major.minor%.$ww.%build.counter%']"
$fileLocation = Join-Path -Path "%teamcity.build.checkoutDir%" -ChildPath "\SourceDir\AssemblyInfo.cs" 

$oldValue = "AssemblyFileVersion\(""(\d+)\.\d+\.\d+\.\d+""\)"
$newValue = [string]::Concat("AssemblyFileVersion(""%major.minor%.", $ww, ".%build.counter%", """)")

(get-content $fileLocation) | foreach-object {$_ -replace $oldValue, $newValue} | set-content $fileLocation
Другие вопросы по тегам