Gitlab хранит подавляющее большинство своих функциональности в своих платных пакетах. Group Webhooks — один из них, и если вы используете группового бегуна, Group WebHook становится востребованным. Это легко достижимо без использования платного плана, создавая повторно используемые шаблоны. Gitlab предлагает отличную функциональность для настройки вашего CI с функциями включения и исключения. Их можно использовать повторно, чтобы создать базовый шаблон для всех ваших рабочих мест CI.
Настройка шаблона CI по умолчанию
Сначала мы создадим шаблон по умолчанию, который мы расширим при создании этапа развертывания.
gitlab-ci-defaults.yml
image: docker:stable services: - docker:dind # Default Stages stages: - deploy # Default runner tag .default_vars: tags: - shared_aws_spot_runner
Вы можете сохранить свой веб -крюк в шаблоне по умолчанию, но я создам отдельный файл YAML.
Во -первых, создайте Slack Bot и добавьте входящий веб -крючок. Мы можем использовать URL -адрес webhook, чтобы отправить запрос на скручивание в Slack API. Мы будем использовать Gitlab CI’s After_script
который работает оба, если CI не удается или добивается успеха, что отправит запрос на сгибание.
gitlab-ci-webhooks.yml
.default_webhooks: after_script: - > curl -X POST -H 'Content-type: application/json' --data '{"text":"*'"$GITLAB_USER_NAME $(cat .job_status) $CI_COMMIT_SHORT_SHA to $CI_COMMIT_REF_NAME"'*\n``` {% endraw %} '"Docker Image deployed: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA\nPrevious Docker Image: $CI_REGISTRY_IMAGE:${CI_COMMIT_BEFORE_SHA:0:8}\nCommit Title: $CI_COMMIT_TITLE\nCommit Description: $CI_COMMIT_DESCRIPTION\nMerge Request: ${CI_MERGE_REQUEST_PROJECT_URL:-No Merge Request}\nPipeline Details:$CI_PIPELINE_URL\nJob Detail:$CI_JOB_URL\n"' {% raw %} ```\n>'"$CI_PROJECT_URL"'"}' https://hooks.slack.com/services/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
Включите WebHooks в шаблон по умолчанию.
gitlab-ci-defaults.yml
image: docker:stable services: - docker:dind # Add webhooks include: - project: 'honeylogic/gitlab-ci-templates' ref: master file: 'gitlab-ci-webhooks.yml' # Default Stages stages: - deploy # Default runner tag .default_vars: tags: - shared_aws_spot_runner
Теперь вы можете включить шаблон по умолчанию и расширить переменные по умолчанию. У меня есть отдельный проект для шаблонов Gitlab-Ci, но Gitlab также поддерживает локальные шаблоны. Мы используем До_SCRICT
Чтобы по умолчанию добавить неудачное сообщение, которое используется в сообщении Slack. В сценарии мы развернули и заменяем неудачное сообщение как последний шаг, который указывает на то, что CI прошел с тех пор, как мы достигли последнего шага (в настоящее время Gitlab не имеет более чистого способа сделать это, где статус CI доступен). Расширяя default_webhooks
переменная Мы добавим все веб -крючки по умолчанию, которые существуют как After_script
(s).
.gitlab-ci.yml
include: - project: 'honeylogic/gitlab-ci-templates' ref: master file: 'gitlab-ci-defaults.yml' deploy: extends: - .default_vars - .default_webhooks before_script: - echo "failed to deploy" > .job_status script: - ansible-playbook ansible/deploy_xyz_app.yml -i -i environments/prod -e app_image=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA - echo "deployed" > .job_status
Резюме
Шаблон Slack выведет сообщение, которое полностью использует предварительно определенные переменные среды Gitlab:
Решение по -прежнему не так чисто, как иметь пользовательского интерфейса Gitlab, где вы можете добавить групповой веб -крючок через пользовательский интерфейс. Но я нахожу этот метод отличным для небольших команд, которые не платят за функции предприятия Гитлаба. Кроме того, большим потенциалом является то, что код является инфраструктурой/CI в качестве кода, который я предпочитаю гораздо больше, чем любой пользовательский интерфейс. Использование базовых шаблонов может охватить очень много, и вы можете обобщать языковые трубопроводы.
Я написал сообщение в блоге, в котором подробно рассказывается о Создание шаблонов для ваших заданий Gitlab CI Анкет
Оригинал: «https://dev.to/adinhodovic/creating-group-webhooks-with-templates-for-gitlab-ci-5e5a»