Git Clone и оформить заказ теги - PullRequest
2 голосов
/ 07 марта 2019

Я работаю над проектом gitlab с собственным репозиторием git с ролями Ansible.

Дело в том, что у нас также есть некоторые общие роли, которые поддерживаются другой командой. Эти роли находятся в отдельном проекте, и каждая роль похожа на подпроект с собственным репозиторием. Прямо сейчас в нашем конвейере мы делаем git-клон этих ролей из раннера, выполняем код и снова удаляем клон.

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

Так что я подумал о введении git-тегов. Каждый коммит на общих ролях помечается номером версии. Затем мы можем сделать git clone и проверить номер версии.

Однако я изо всех сил пытаюсь понять, как реализовать это в конвейере. Есть ли способ сделать это без необходимости жестко кодировать номера версий в конвейере?

1 Ответ

0 голосов
/ 07 марта 2019

У нас есть такой же сценарий, в котором playbooks делятся ролями.

Мы рассмотрели:

  • теги
  • подмодули (yikes)
  • subrepos

В конце концов, мы не выбрали ни одного: каждая из ваших пьес включает в качестве папки roles/ символическую ссылку на родительскую папку all наши роли.
Таким образом, книга воспроизведения всегда ссылается на последнюю версию (в настоящее время проверенную) роли.

ansible продолжает ссылаться на определенный SHA1 книги воспроизведения, но консенсус остается: всегда используйте самую последнюю версиюиз ролей.Без управления какими-либо конкретными ссылками на Git (когда речь идет о репозиториях Git для каждой роли)

...