Я пытаюсь понять, как настроить шаги сборки TeamCity для выполнения следующих задач:
- Вызовите консольное приложение, которое объединяет ветвь разработки с ветвью тестирования (в TFS) и вручную изменяет некоторые файлы в ветке теста, которые используются для конфигураций проектов. Этот процесс работает отлично и был протестирован. Также обратите внимание, что на этом шаге не возвращаются объединенные или измененные файлы в тестовую ветвь.
- Этот шаг сборки запустит фактическую сборку решения для тестовой ветки. (Это C # .NET, но я не думаю, что это важно)
- На этом этапе сборки выполняется перенос базы данных для любых добавленных сценариев SQL. (Этот шаг также был протестирован и работает)
- Этот шаг вызывает другое консольное приложение. Этот шаг будет выполняться, даже если предыдущие шаги завершились неудачно. Если сборка прошла успешно, он проверит ожидающие изменения с шага 1 и выполнит развертывание сборки. Если сборка завершилась неудачно на предыдущем шаге, отложенные изменения с шага 1 будут отменены.
Это кажется достаточно простым, но я не знаю, как сделать взаимодействие между шагами 1 и 2. Если я использую проверку на стороне сервера для шага 2, он будет извлекать источник с сервера и не использовать мои изменения на шаге 1. Если я выполняю проверку на стороне агента пользователя, я понимаю, что он создаст новое рабочее пространство и извлечет источник из сервер, снова не использующий мои изменения на шаге 1.
Есть ли способ сделать шаг 2 сборки с отложенными изменениями, созданными на шаге 1? Единственный другой вариант, который я могу придумать, - это проверить изменения после шага 1 и откатить набор изменений на шаге 4, если сборка не удалась. Но в таком случае, как шаг 4 узнает об откате набора изменений?
Также у меня есть один вопрос поменьше: как передать успех сборки в качестве параметра на шаг 4? Я просмотрел встроенные параметры, но не нашел ни одного для сбоя / успеха сборки?
Спасибо!