Удаление косых черт из названий веток в 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