Skip to content

CI/CD

В репозитории на GitHub хранится исходный код сервисов.

В директории с каждым сервисом хранятся Dockerfile, на основе которых собираются образы контейнеров.

Также в репозитории хранится Helm Chart с шаблонами.

С помощью механизмов GitHub Actions стоят задачи:

  1. Автоматизировать сборку контейнеров и доставку их до Docker Hub.

  2. Автоматизировать обновление релиза helm на сервере.

1 шаг. Настройка Docker Hub

Создаем токен доступа, который будет использоваться GitHub Actions и во вспомогательных скриптах.

Для каждого сервиса был создан репозиторий на Docker Hub с использованием скрипта create-repo.py.

Ссылки на созданные репозитории (через скрипт get-link.py):

adservice

cartservice

emailservice

currencyservice

loadgenerator

shippingservice

frontend

paymentservice

shoppingassistantservice

checkoutservice

recommendationservice

productcatalogservice

2 шаг. Настройка self-hosted GitHub runner

В GitHub был получен токен репозитория

На сервер 192.168.75.11 были установлены:

Был создан шаблон с ServiceAccount, Role и RoleBinding для github-runner, после чего обновлен релиз:

helm upgrade my-microservices .

Создан токен аккаунта на 1 год:

kubectl -n default create token github-runner --duration=8760h

Этот токен нужно указать в файле конфигурации для kubectl.

3 шаг. Написание Workflow

Текст Workflow

Пайплайн запускается после пуша изменения в репозиторий и влючает в себя стадии:

  • Клонирование репозитория

  • Определение списка папок, в которых произошли изменения

  • Сборка новых образов для сервисов, в папках которых произошли изменения, с тегом, равным хешу коммита

  • Перезапись тегов по необходимости в values.yaml

  • Установка нового релиза helm