Пропустить шаг в личных сборках в TeamCity

на моем сервере CI под управлением TeamCity 8.0 у меня есть конфигурация сборки, последними шагами которой являются создание и нажатие новой версии пакета NuGet.

интересно, есть ли способ заблокировать эти два шага, если текущая сборка является личной.

любой ключ?

4 ответов


в teamcity есть переменная среды, которая может сказать вам, является ли это личной сборкой BUILD_IS_PERSONAL:

см.http://confluence.jetbrains.com/display/TCD7/Predefined + Build + параметры

например. использование MSBuild runner (вам просто нужно указать путь nuget)

<Project DefaultTargets="Pack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Pack" Condition="$(BUILD_IS_PERSONAL)!='True'">
    <Message Text="Personal: $(BUILD_IS_PERSONAL)"/>
    <Exec Command="$(NUGETPATH)\nuget pack $(NugetProject)"/>
  </Target>
</Project>

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

добавьте дополнительный шаг сборки, который использует powershell -

if (([environment]::GetEnvironmentVariable("BUILD_IS_PERSONAL","Process")) -eq "True")
{ 
  throw
}

на каждом шаге сборки есть опция: выполнить шаг Если вы выберете опцию "если все предыдущие сборки успешно", то шаг будет пройден Если вы выберете: "даже если некоторые из предыдущих шагов сборки завершились неудачно", он будет выполнен.


вы можете создать новую конфигурацию сборки, оставив эти 2 шага. Затем установите плагин TeamCity Visual Studio (Если вы используете VS), а затем запустите личную сборку, выбрав конфигурацию сборки, которую вы хотите использовать.


подобно ответу Иордании, я думаю, что лучший подход-отделить компиляцию от конфигураций сборки упаковки / развертывания. Фактически, если вы используете Octopus для развертывания, вам нужно сохранить шаги развертывания TeamCity Octopus в отдельной конфигурации сборки из компиляции, поскольку канал NuGet не заполняется до тех пор, пока конфигурация сборки не будет успешно завершена.

Если сделать конфигурацию сборки упаковки / развертывания зависимостью конфигурация сборки компиляции и установить триггер сборки только триггер после успешной сборки конфигурации сборки компиляции, то он не будет срабатывать после личной сборки, даже если это успешно : -

TeamCity packaging / deployment build trigger

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

надеюсь, что это помогает


У нас есть аналогичная проблема, когда мы только хотели построить и развернуть наш локальный репозиторий Apache Maven, когда он изменился.

одно возможное решение: если ваш шаг сборки Командная Строка (или может быть), создайте крошечный скрипт оболочки, чтобы решить, следует ли запускать этот шаг или нет.