#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 … для этого у нас есть одно репозиторий … все файлы продукта будут присутствовать в этом репозитории. следовательно, мне нужно ключевое слово от пользователя, который фиксирует, в каком каталоге должен быть опубликован этот продукт … иногда какой-то продукт также должен быть опубликован в нескольких каталогах…