Частные сборки для непрерывной интеграции с использованием ClearCase - PullRequest
2 голосов
/ 25 января 2012

В настоящее время у меня есть настройка среды CI с использованием следующих инструментов:

VCS - ClearCase (UCM включена)
Сервер CI - Jenkins
Модуль сборки - MSBuild

В основном Jenkinsопрашивает поток интеграции моего проекта UCM каждые 2 минуты и выполняет сборку с помощью сценария msbuild, который я написал.

Хотя в ClearCase не рекомендуется использовать отдельный поток для каждого разработчика , хороший CI требует запуска частных сборок перед передачей кода .В дополнение к этому, в идеале у меня должны быть атомарные коммиты, которые ClearCase предоставляет только в форме Deliver для потоковой передачи.

В настоящее время мы работаем непосредственно над интеграционным потоком, и иногда наши сборки терпят неудачу, потому что Дженкинс начинает сборку до того, как разработчик заканчивает свои проверки.

У меня вопрос, как я могу иметь личную работу?область (песочница) и атомарные коммиты на ClearCase без создания потока для каждого разработчика?Я что-то упустил?

1 Ответ

1 голос
/ 25 января 2012

В настоящее время мы работаем непосредственно над интеграционным потоком, и иногда наши сборки терпят неудачу, потому что Дженкинс начинает сборку до того, как разработчик заканчивает свои проверки

Вы можете написать свой сценарий сборки, чтобыопределить, выполняется ли доставка.
Для доставки характерно действие с именем deliver.xxx: вы можете просмотреть его содержимое и посмотреть, находится ли какая-либо версия в нем на стадии оформления заказа.Если да, доставка выполняется.
Если самая последняя доставка имеет только зарегистрированные версии, вы можете безопасно начать сборку.


Или:

Как я могу иметь личную рабочую область (Sandbox) и атомарные коммиты в ClearCase без создания потока для каждого разработчика

Приватной областью, которую будет использовать Jenkins, будет представление снимка каждого потока разработчика.
Как следует из названия, представление моментального снимка будет делать снимок кода, но вам необходимо определить критерии, позволяющие Jenkins создать то, что обновило представление снимка.

То, что я видел, использовалось, это смещенная метка 'BUILD' (метка, которую вы повторно применяете к недавно обновленному коду, и которую Дженкинс использовал в своем снимке с правилом выбора на основе этой метки):
Разработчик перемещает свою метку, когда он / она думает, что текущий код готов к сборке, и задания Jenkins обновляют представление моментального снимка в потоке разработчика на основе версий, на которые ссылается указанная смещающая метка 'BUILD».

...