Подготовка инфраструктуры
Требования
-
GitLab;
-
Linux-хост для установки GitLab Runner, имеющий:
-
Bash;
-
Git версии 2.18.0 или выше;
-
GPG;
-
Установка GitLab Runner
Установите GitLab Runner на выделенный для него хост, следуя официальным инструкциям.
Установка werf
Для установки werf на хосте для GitLab Runner выполните:
curl -sSL https://werf.io/install.sh | bash -s -- --ci
Регистрация GitLab Runner
Для регистрации GitLab Runner в GitLab следуйте официальным инструкциям, указав Shell в качестве executor’а. При желании после регистрации произведите дополнительную конфигурацию GitLab Runner’а.
Конфигурация container registry
Включите сборщик мусора вашего container registry.
Подготовка системы к кроссплатформенной сборке (опционально)
Данный шаг требуется только для сборки образов для платформ, отличных от платформы системы, где запущен werf.
Регистрируем в системе эмуляторы с помощью образа qemu-user-static:
docker run --restart=always --name=qemu-user-static -d --privileged --entrypoint=/bin/sh multiarch/qemu-user-static -c "/register --reset -p yes && tail -f /dev/null"
Настройка проекта
Настройка проекта GitLab
-
Включите требование удачно выполненного pipeline для merge requests.
-
Включите возможность автоматически отменять лишние pipelines.
-
Создайте и сохраните access token для очистки ненужных образов из container registry со следующей конфигурацией:
-
Token name:
werf-images-cleanup
; -
Role:
developer
; -
Scopes:
api
.
-
-
В переменных проекта добавьте следующие переменные:
-
Версия werf:
-
Key:
WERF_VERSION
; -
Value:
2 stable
;
-
-
Access token для очистки ненужных образов:
-
Key:
WERF_IMAGES_CLEANUP_PASSWORD
; -
Value:
<сохранённый "werf-images-cleanup" access token>
; -
Protect variable:
yes
; -
Mask variable:
yes
.
-
-
-
Добавьте плановое задание на каждую ночь для очистки ненужных образов в container registry, указав ветку
main
/master
в качестве Target branch.
Конфигурация CI/CD проекта
Так может выглядеть репозиторий, использующий werf для сборки и развертывания:
Дополнительно:
- Добавьте для
werf cleanup
опции авторизации в container registry, следуя инструкциям.