На этой неделе я хочу сделать перерыв от моей серии Start Rust и сосредоточиться на другой теме. Я уже написал о Мой блоггинг в деталях.
Однако я не трогал на один грань, и этот ацета — это то, как я создаю статические страницы от Jekyll. Как я опишу в пост в блоге, я включил довольно пару настроек. Некоторые из них требуют внешних зависимостей, таких как:
- А JRE Для генерации диаграмм Plantuml
- график пакет по той же причине
- и т.п.
В целом это означает, что мне требуется полностью настроенная система. Я решил эту проблему, используя контейнеров, а именно докера. В пределах Dockerfile
Я могу установить все необходимые зависимости. Затем в моем файле сборки GitLab я могу ссылаться на это изображение и извлечь выгоду из всех его возможностей.
image: registry.gitlab.com/nfrankel/nfrankel.gitlab.io:latest # ...
Обновление, трудный путь
Jekyll построен на вершине Ruby. Общие библиотеки в Ruby известны как драгоценные камни . Я использую несколько из них вместе с самой Джекиллом Gem. Как давний пользователь Maven, я искал эквивалентную утилиту управления зависимостями в мире рубина и наткнулся на БУНДЛЕР :
Bundler предоставляет последовательную среду для проектов Ruby, отслеживая и установив точные драгоценные камни и необходимые версии.
Bundler опирается на Gemfile
файл. Это похоже на NPM Package.json.
. Когда вы выполняете Установите комплект
это создает Gemfile.lock
с последними версиями Gems; с Обновление комплекта
это обновляет их.
До сих пор так выглядел мой процесс обновления:
- Обновите драгоценные камни до своей последней версии
- Создайте изображение докера на моем ноутбуке
- Загрузите изображение в реестр Gitlab моего проекта
- Сделайте изменение файла блокировки
- Толкать
- В свою очередь, что запускает сборку на GitLab и развертывает мой сайт на страницах GitLab.
У него есть несколько недостатков:
- Это требует докера на моем ноутбуке. Предоставлено, у меня уже есть, но не все довольны этим
- Сборка требует времени, а также время процессора
- Изображение занимает хранение. Я могу очистить его, но это дополнительная трата моего времени.
- Это забивает мою сеть. Поскольку моя скорость загрузки очень ограничена, я не могу сделать все, что включает в себя Интернет, когда я загружусь.
Обновление, умный путь
Я недавно наткнулся на отлично Серия HitLab Cheatshiles Отказ В 6-я часть Автор упоминает Канико :
Kaniko — это инструмент для создания изображений контейнера из докера, внутри контейнера или кластера Kubernetes.
Kaniko не зависит от демона Docker и полностью выполняет каждую команду в DockerFile полностью в пользовательском пространстве. Это позволяет строить контейнерные изображения в средах, которые не могут легко или надежно запускать Docker Docemon, такие как стандартный кластер Kubernetes.
Канико предназначен для проведения изображения: gcr.io/kaniko-project/executor
Отказ
Это означает, что вы можете переместить деталь сборки Docker Image к самому процессу сборки. Новый процесс становится:
До сих пор так выглядел мой процесс обновления:
- Обновите драгоценные камни до своей последней версии
- Сделайте изменение файла блокировки
- Толкать
- Наслаждаться!
Чтобы достичь этого, мне пришлось просмотреть документацию довольно интенсивно. Я также переместил файл сборки на синтаксис «Новый». Вот новая версия:
stages: - image # 1 - deploy # 1 build: # 2 stage: image # 3 image: name: gcr.io/kaniko-project/executor:debug # 4 entrypoint: [""] # 5 script: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json # 6 - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG # 7 only: refs: - master changes: - Gemfile.lock # 8 pages: # 2 stage: deploy # 3 image: name: registry.gitlab.com/nfrankel/nfrankel.gitlab.io:latest # 9 # ...
- Определите Этапы Отказ Стадии упорядочены: здесь,
изображение
бежит доРазвертывание
Отказ - Определите рабочие места
- Работа связана со сценой. Для записи задания, связанные с одинаковым этапом, выполняемым параллельно.
- Используйте
Отладка
аромат канико докер образа. Хотя это не нужно, это изображение регистрирует то, что он делает для улучшения отладки, если что-то пойдет не так. - Сброс
. входная точка
- Создайте файл учетных данных, используемые Kaniko, чтобы нажать в реестр Docker в следующей строке
- Создайте изображение с помощью предоставленного
Dockerfile
и протолкните его в реестр Docker Project. Обратите внимание, что Gitlab проходит все переменные среды, используемые здесь - Запустите эту работу только если
Gemfile.lock
Файл был изменен - Создайте статический сайт, используя ранее сгенерированное изображение
Заключение
Этот пост показывает, как можно разгрузить докеровскую часть вашего построенного конвейера с локальной машины в GitLab, используя изображение Kaniko. Это экономит вовремя и ресурсы. Единственное сожаление, которое у меня есть, это то, что я должен был сделать это намного раньше, поскольку я огромный сторонник автоматизации.
Я пропустил последний шаг: Расписание работы, которая обновляет зависимости и создает Запрос слияния à la Зависимый.
Идти дальше:
- Gitlab Cheatsheet серии
- Используйте Kaniko, чтобы построить документы докера
- Ссылка ключевых слов для файла .gitlab-ci.yml
- Наименее привилегированные контейнеры строятся с канико на GitLab
- Предполагается предопределенные переменные Gitlab
Первоначально опубликовано Java Geek. 1 августа ул , 2021
Оригинал: «https://dev.to/nfrankel/gitlab-as-your-continuous-deployment-one-stop-shop-58bd»