Как передать ключевое слово в Git при фиксации

#git #gitlab #gitlab-ci #gitlab-ci-runner

#git #gitlab #gitlab-ci #gitlab-ci-runner

Вопрос:

Я выполнил задание CICD на Gitlab, где фиксация файлов в репозитории запускает задание, создает файл и публикует файлы на сервере. Это работало нормально, но теперь моя работа также должна идентифицировать сервер во время фиксации, потому что в среде теперь есть 4 сервера, указывающие 4 разных региона. Как разработчик может передать какое-либо ключевое слово (даже слово из 2 букв должно работать) при фиксации, отличное от сообщения о фиксации, которое я могу получить в задании CICD Gitlab.

Я исследовал различные переменные среды, которые есть в Gitlab, но ни одна из них не соответствует моим требованиям. Есть идеи / предложения?

Ответ №1:

  • вы можете использовать теги и запускать задание сборки только для тегов с определенным форматом
  • вы можете создать конвейер, который ожидает переменные, и запустить этот конвейер с помощью прямого http-вызова (например: curl или определенного скрипта)

Дополнительная информация :

  • у OP нет возможности изменять структуру репозитория git
  • репозиторий содержит каталог со списком файлов
    • каждый из этих файлов описывает определенный продукт
    • каждый из этих файлов является файлом yaml
    • в зависимости от продукта, файл при изменении необходимо отправить на один или несколько из 4 потенциальных целевых серверов

Мое предложение таково: добавьте что-нибудь, что описывает, какие файлы нужно отправить на какой сервер.

например: добавьте # @companycicd : publish srv1 srv3 комментарий в файл, если его нужно перенести в srv1 и srv3

и обновите задание CICD, чтобы оно получало список целевых серверов для каждого файла из этой конкретной строки coomment.

Комментарии:

1. Я уже пробовал второй вариант и работает, но я хотел бы, чтобы задание выполнялось при фиксации и, следовательно, не могло ожидать переменных от пользователя. Означает ли первый вариант, что мне нужно помечать каждую фиксацию, и при этом я получаю идентификатор из сообщения тега?

2. Можете ли вы объяснить, что такое 4 региона, и как фиксация может быть связана с регионом и игнорироваться в другом?

3. Извините за беспорядок, который я здесь создал. У меня есть один репозиторий с несколькими файлами продуктов, который мне нужно опубликовать в четырех разных каталогах в IBM API Connect. Несколько коммитов (несколько продуктов) должны перейти в каталог1, тогда как другим может потребоваться публикация в каталог2, или 3, или 4.

4. Как разделены каталоги в вашем репозитории git? по одному файлу на каталог? по одному каталогу на каталог?

5. каталоги не разделены в репозитории git … для этого у нас есть одно репозиторий … все файлы продукта будут присутствовать в этом репозитории. следовательно, мне нужно ключевое слово от пользователя, который фиксирует, в каком каталоге должен быть опубликован этот продукт … иногда какой-то продукт также должен быть опубликован в нескольких каталогах…