TeamCity: при успешном построении нажмите Git Repo
Может ли TeamCity успешно выполнять сборки в хранилище git?
Я не вижу конкретного шага сборки в TeamCity, чтобы сделать это.
Я использую версию 7.1.1 TeamCity
Спасибо, Хенрик
UPDATE:
Хорошо спасибо за ваш ответ,
Я нахожу это немного сложнее.
Я узнал, что могу просто отбросить теги на успешные сборки в мой глобальный репозиторий, из которого TeamCity извлекает данные для сборки. Я могу извлечь из него изменения и посмотреть, были ли успешны последние коммиты.
Я был бы рад, если TeamCity предоставил простой вариант для такого рода рабочих процессов!
Было бы замечательно, если бы каждый разработчик мог просто извлечь из репо, который обновляется только тогда, когда сборка будет успешной, или я здесь не прав?
Ответы
Ответ 1
Вы можете заставить TeamCity выполнить оболочку script, которая впоследствии вызывает git push
(с соответствующими аргументами, например git push <repository>
, чтобы нажать в другой репозиторий). Убедитесь, что git
не требует интерактивной аутентификации для операции push.
Связанный пример (развернуть в Heroku с помощью git push
) можно найти здесь: http://blog.carbonfive.com/2010/08/06/deploying-to-heroku-from-teamcity/.
Ответ 2
Если вы обновляетесь до 8 или новее, вы можете просто создать одну или несколько функций сборки "Автоматическое объединение". Это приведет к удаленному репо. Сначала я не нашел его из-за запутанного наименования, но имеет смысл, что они должны поддерживать различные VCS с разными именами.
Ответ 3
Я наконец сделал это!
Вам нужно добавить параметр сборки в проект teamcity:
name= env.PATH
value= C:\Program Files (x86)\Git\cmd
а затем добавьте новый шаг сборки командной строки с помощью пользовательского script:
call git push "C:\Gruene Git Repos\TeamCityApp" master
слово "вызов" важно!
Спасибо за помощь!
Хенрик
Ответ 4
Простой ответ
Некоторое время TeamCity поддерживала маркировку VCS, это позволяет вашему пользователю VCS Root (если у него есть права на запись), чтобы пометить хеш-коммит, который был только что построен с версией, или что-то еще, о чем знает TeamCity (см. полный список ссылок параметров в вики TeamCity).
В стороне
Как указано в другом ответе, функция автоматического слияния, доступная в TeamCity, автоматически выполнит слияние в запрошенную ветку из указанного списка ветвей (с включенным подстановочным знаком), и она будет отслеживать и строить и только объединять их, если это удастся.
Функциональность автоматического слияния может быть хорошей, но если у вас нет хорошего покрытия теста, это также может быть опасно, поскольку разработчик может сломать что-то, что не имеет теста, и это вызовет проблемы в коде долгое время Дорога. Один из способов предотвратить это - потребовать, чтобы +2 тесты создавались/запускались каждый раз, когда проект строится (настраивается в TeamCity). Эти оговорки упоминаются в ранее связанной статье, объявляющей функцию автоматического слияния.
Соответствующее разрешение
Мы столкнулись с аналогичной проблемой, не связанной непосредственно с слиянием, но имеющей требование вытолкнуть некоторые изменения из задания за "легкие теги" (по крайней мере, для Git), которые добавляет TeamCity, если вы используете маркировку VCS (ужасное имя).
В результате мы закончили:
- Используя параметр типа "Переменная среды" (видимый агенту сборки, другие типы нет) и установка "Spec" для создания поля типа "Пароль", которое предотвратит отображение введенного текста в либо конфигурационный интерфейс, либо выход журнала задания.
- Введенные имя пользователя и пароль в качестве параметров в конфигурации задания
- Создал script, который просмотрел удаленный URL-адрес Git в репозитории "agent side" и добавил новый пульт с именем пользователя и паролем inline в url (http://gituser:[email protected]/path/to/repo.git), чтобы внести изменения в новую ветку.
- Затем мы удалим удаленный компьютер в конце script, чтобы любой пользователь, обращающийся к системе, не мог вывести учетные данные. Разумеется, учетные данные также достаточно жестко привязаны к доступу только к некоторым репозиториям, но правило наименьших привилегий всегда хорошо следовать.
Ответ 5
Мое решение может быть глупо, но просто.
Шаги следующие:
-
Клонирование вашей героики из репозитория heroku git
он создаст вашу папку приложения heroku.
heroku git:clone -a {app-name}
-
Скопируйте файлы, которые необходимо обновить, до героя
xcopy client "{app-name}/client" /e/i/h/y
xcopy server "{app-name}/server" /e/i/h/y
xcopy imports "{app-name}/imports" /e/i/h/y
-
git добавить.
cd {app-name} && git add .
-
git commit
cd {app-name} && git commit --message 'ok'
-
нажмите на герою
cd {app-name} && git push heroku master