Повторная пометка образа докера - PullRequest
0 голосов
/ 15 мая 2018

Представьте себе трубопровод, который подготовлен следующим образом: Изменение Гиса:


| Пакет | -> | Test |


Когда это изменение окажется достойным, его следует объединить с главной веткой, которая имеет несколько другой конвейер из-за использования ключевых слов only и except:

  only:
- master

или

  except:
- master

Трубопровод мастер-ветки будет выглядеть так:


| & нажать повторно задать | -> | релиз |


Повторная пометка здесь очень важна, так как мы не хотим перестраивать изображение (пакет), которое мы проверяли во время нашего MR, поскольку оно может не совпадать с тем же изображением, которое мы так тщательно проверяли.

Проблема в том, что в gitlab нет четкого способа узнать, какое изображение нужно пометить повторно. В |Package| -job мы используем git-commit и git-branch как теги для пакета, но когда конвейер работает для master, кажется, что не существует надлежащего способа надежно определить тег изображения, который должен быть помечены, например: latest

1 Ответ

0 голосов
/ 15 мая 2018

Если я правильно понимаю, изменение было протестировано в другой ветке, а не master. Таким образом, если у вас есть образ, созданный на основе ветви, отличной от главной, то вы выпускаете материал из ветви, не являющейся основной. Идеальный сценарий - тестирование сборок только из главной ветки.

Позвольте мне поделиться стратегией, используемой в нашей компании. Разработчики разворачивают репо, вносят изменения, фиксируют свои частные репозитории и делают Pull Requests (PR) для основного репо. Изменения в PR подтверждаются автоматически дроном. Как только тесты пройдены, мы объединяем изменения в основную ветвь основного репо. Затем мы создаем тег кандидата на выпуск (скажем, v2.0.0-rc1) в основной ветви основного репо. Наша команда QA установила сборки jenkins по тегу для этого репо / ветки. После прохождения автоматических тестов тег v2.0.0-rc1 используется для повторной привязки к latest. В настоящее время этот шаг выполняется вручную в нашем случае, так как мы хотим иметь ручное вмешательство, но его можно полностью автоматизировать.

...