Рубрики
Uncategorized

Gitlab в качестве вашего непрерывного развертывания One-Stop Shop

На этой неделе я хочу сделать перерыв от моей серии Start Rust и сосредоточиться на другой теме. Я … Теги с DEVOPS, GitLab, AndervileDeyment, Docker.

На этой неделе я хочу сделать перерыв от моей серии 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; с Обновление комплекта это обновляет их.

До сих пор так выглядел мой процесс обновления:

  1. Обновите драгоценные камни до своей последней версии
  2. Создайте изображение докера на моем ноутбуке
  3. Загрузите изображение в реестр Gitlab моего проекта
  4. Сделайте изменение файла блокировки
  5. Толкать
  6. В свою очередь, что запускает сборку на GitLab и развертывает мой сайт на страницах GitLab.

У него есть несколько недостатков:

  • Это требует докера на моем ноутбуке. Предоставлено, у меня уже есть, но не все довольны этим
  • Сборка требует времени, а также время процессора
  • Изображение занимает хранение. Я могу очистить его, но это дополнительная трата моего времени.
  • Это забивает мою сеть. Поскольку моя скорость загрузки очень ограничена, я не могу сделать все, что включает в себя Интернет, когда я загружусь.

Обновление, умный путь

Я недавно наткнулся на отлично Серия HitLab Cheatshiles Отказ В 6-я часть Автор упоминает Канико :

Kaniko — это инструмент для создания изображений контейнера из докера, внутри контейнера или кластера Kubernetes.

Kaniko не зависит от демона Docker и полностью выполняет каждую команду в DockerFile полностью в пользовательском пространстве. Это позволяет строить контейнерные изображения в средах, которые не могут легко или надежно запускать Docker Docemon, такие как стандартный кластер Kubernetes.

Канико предназначен для проведения изображения: gcr.io/kaniko-project/executor Отказ

Это означает, что вы можете переместить деталь сборки Docker Image к самому процессу сборки. Новый процесс становится:

До сих пор так выглядел мой процесс обновления:

  1. Обновите драгоценные камни до своей последней версии
  2. Сделайте изменение файла блокировки
  3. Толкать
  4. Наслаждаться!

Чтобы достичь этого, мне пришлось просмотреть документацию довольно интенсивно. Я также переместил файл сборки на синтаксис «Новый». Вот новая версия:

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
# ...
  1. Определите Этапы Отказ Стадии упорядочены: здесь, изображение бежит до Развертывание Отказ
  2. Определите рабочие места
  3. Работа связана со сценой. Для записи задания, связанные с одинаковым этапом, выполняемым параллельно.
  4. Используйте Отладка аромат канико докер образа. Хотя это не нужно, это изображение регистрирует то, что он делает для улучшения отладки, если что-то пойдет не так.
  5. Сброс . входная точка
  6. Создайте файл учетных данных, используемые Kaniko, чтобы нажать в реестр Docker в следующей строке
  7. Создайте изображение с помощью предоставленного Dockerfile и протолкните его в реестр Docker Project. Обратите внимание, что Gitlab проходит все переменные среды, используемые здесь
  8. Запустите эту работу только если Gemfile.lock Файл был изменен
  9. Создайте статический сайт, используя ранее сгенерированное изображение

Заключение

Этот пост показывает, как можно разгрузить докеровскую часть вашего построенного конвейера с локальной машины в GitLab, используя изображение Kaniko. Это экономит вовремя и ресурсы. Единственное сожаление, которое у меня есть, это то, что я должен был сделать это намного раньше, поскольку я огромный сторонник автоматизации.

Я пропустил последний шаг: Расписание работы, которая обновляет зависимости и создает Запрос слияния à la Зависимый.

Идти дальше:

Первоначально опубликовано Java Geek. 1 августа ул , 2021

Оригинал: «https://dev.to/nfrankel/gitlab-as-your-continuous-deployment-one-stop-shop-58bd»