Как «отложенная фиксация» работает с репозиториями контроля версий и CI-серверами? - PullRequest
7 голосов
/ 15 января 2010

Я хотел бы знать, как функционал «отложенной фиксации» работает на CI-серверах, которые не интегрированы с репозиториями контроля версий. Концептуально процесс работает следующим образом:

  1. Проверка изменений кода
  2. CI сервер создает изменения
  3. Если сборка прошла, код передается в репозиторий управления исходным кодом
  4. Если сборка не удалась, код не передается в репозиторий управления исходным кодом

Большинство серверов CI работают, опрашивая репозитории системы контроля версий на предмет изменений и затем вытаскивая код. Таким образом, в сценарии отложенного принятия разработчики проверяют свой код на сервере CI, а не в реальных хранилищах управления исходным кодом, и затем сервер CI передает код в хранилище? Или же серверы CI просто откатывают изменения, если сборка не удалась?

Я имею в виду две системы непрерывной интеграции, в частности. Team Foundation Server собирается предложить эту функциональность в следующей версии, но это имеет смысл, поскольку Team Build (система CI) в TFS интегрирована с репозиторием контроля версий. Однако в случае Team City TC может подключаться к любой системе контроля версий и не обязательно интегрируется с тем же сервером или даже на том же сервере, что и репозиторий контроля версий. Как это работает?

Редактировать: Открытие щедрости на этот вопрос в надежде, что я смогу получить еще несколько возможных ответов.

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Как правило, вы должны использовать инструмент командной строки или плагин IDE, который позволяет вам отправить свой код на сервер CI. Инструмент связывает ваши изменения вместе со всеми соответствующими метаданными проекта / хранилища / пользователя, запускает сборку и затем фиксирует ее, если все идет хорошо.

В случае TeamCity, похоже, что сервер фактически отправляет сообщение о подтверждении обратно на ваш компьютер ( из того, что я могу сказать из диаграммы ), затем он получает оттуда & mdash; по-видимому, так что вам не нужно иметь учетные данные SCM каждого пользователя & mdash; что может быть сложно, если вы используете закрытые ключи SSH и т. д. & mdash; на вашем сервере TC.

Но CI-серверы могут интегрироваться практически с любой системой SCM, независимо от того, где расположен сервер & mdash; вам просто нужно дать ему правильные учетные данные, чтобы получить (как правило, только для чтения) доступ.

1 голос
/ 24 января 2010

Делает что-то подобное:

TeamCity Pre-test commit
(источник: kawalerowicz.net )

так что именно клиентский компьютер выполняет фиксацию. Не сервер. СКМ не имеет значения в этом случае.

...