Рубрики
Uncategorized

Себя Хостинг экземпляра Drone CI

Это часть 1 серии с несколькими частями, которые приводят к использованию беспилотника в качестве платформы CI! Вот грубый … Tagged с беспилотником, самоуверенными, DevOps, тестированием.

Droneci (2 серии деталей)

Это часть 1 серии с несколькими частями, которые приводят к использованию беспилотника в качестве платформы CI! Вот грубый план того, как может выглядеть эти серии. Это может измениться, пока каждый пост не будет выпущен!

  • Часть 1: Self Хостинг экземпляра Drone CI (этот пост)
  • Часть 2: Запуск тестов на беспилотнике CI и написание основного .drone.yml файл
  • Часть 3: продвинутый .drone.yml методы
  • Часть 4: кэширование зависимостей от S3

Я люблю непрерывную интеграцию и настраиваю CI на большинстве моих личных проектов, даже если она просто работает.

Я ранее использовал Circleci почти исключительно. Они предоставляют отличный сервис, который бесплатно для приличного личного использования. В этом случае «приличный бит» личного использования составляет 1000 минут в месяц бесплатно. Это чуть менее 17 часов, в 16.666.

Однако было несколько месяцев, когда я ударил по этому свободному лимиту, и это привело к тому, что мои сборки попадают в очередь и замедлились. Поэтому я начал смотреть на свои варианты. Circleci предлагает платные планы, так что сначала я посмотрел там, но, к сожалению, их первое платное предложение началось за \ 50 долларов в месяц. [1] Это предложение, похоже, больше ориентировано на предприятия, а не личных разработчиков, поэтому я продолжал изучать свои варианты.

[1] На момент написания написания сейчас это на самом деле 90 долларов, но скоро у них будет план 23 доллара https://circleci.com/pricing/usage/

Я также был на самостоятельном ходу, и недавно я арендовал относительно большой сервер в облаке, который был в основном неиспользованным, так что это был идеальный шторм, чтобы искать самостоятельные варианты CI!

Вариант, с которым я оказался, — это Беспилотник Анкет Я управлял своим экземпляром в течение нескольких месяцев, и недавно был мигрировал большинство (но не все) из своих проектов из Circleci.

Установка беспилотника

У меня уже есть Докку Запуск на моем сервере (см. Мой предыдущий пост о мигрирование в Докку здесь ), поэтому я хотел использовать его для установки и управления дроном, если это возможно. К счастью, оба они построены на вершине Docker, и до сих пор хорошо работали вместе. Уже сработав сервер Dokku, и работа, определенно дал мне старт в запуске беспилотников!

Я создал это довольно скучное репо, чтобы помочь управлять развертыванием с Dokku ( https://github.com/coreyja/drone-dokku ). По сути, это просто простой репо, который содержит один Dockerfile. Это наследует от официального изображения беспилотников и выявляет правильный порт. Теперь я могу подтолкнуть это репо в Докку, чтобы он управлял моей установкой и сетью для меня.

Drone действительно полагается на несколько монтированных объемов в Docker, которые мне также пришлось настроить в Докку, которая была выполнена с помощью следующих команд

dokku storage:mount drone /var/run/docker.sock:/var/run/docker.sock
dokku storage:mount drone /var/lib/exampledrone:/data

Я собираюсь потенциально перенести эту инсталляцию на Kubernetes в ближайшее время, и если я это сделаю, я сделаю следующий пост, описывающий это.

Настройка беспилотника

Настройка беспилотника также была относительно безболезненной благодаря их документации ( https://docs.drone.io/installation/github/single-machine/ ). Это документы для машины для одного экземпляра, как я работаю с Dokku, и используя GitHub в качестве источника репо. Drone также поддерживает Gitlab, Gitea, Gogs и Bitbucket.

После того, как я создал правильные учетные данные GitHub, я взял два, которые мне нужны, и добавил их в качестве следующих Env Vars, доступных для Drone: Drone_github_client_id , Drone_github_client_secret Анкет

Тогда есть только 2 других вариб, которые требуются: Drone_server_host и Drone_server_proto Куда имени хоста и протокол идут. Например, вот моя конфигурация для этих двух переменных:

DRONER_SERVER_HOST=drone.dokku.coreyja.com
DRONE_SERVER_PROTO=https

У меня тоже есть Drone_runner_capacity = 4 , что означает, что у меня может быть 4 контейнера, работающие параллельно.

Что касается конфигурации, это все, что вам нужно для запуска приложения 🎉

Загрузка приложения и вход в систему

Теперь мы должны быть в состоянии загрузиться и войти в наш экземпляр беспилотников!

Дрон не имеет собственной аутентификации и полностью полагается на OAuth от GitHub. Мне нравится эта модель, потому что это на один аккаунт меньше, чтобы управлять.

Это означает, что первое, что вам придется сделать, — это войти в беседьму через github и дать ему доступ к вашим репозиториям. После этого вы можете использовать веб -пользовательский интерфейс, чтобы добавить конкретные проекты в беспилотник!

После того, как у вас есть проект, добавленный Drone, зарегистрируется для веб-крючков с GitHub и начинает сборки, когда есть толчок в вашем репо GitHub.

Это, конечно, если у вас есть .drone.yml Настройка файла в вашем репо. Что, к счастью, это будет следующий пост в этой серии! 😉

** dev.to Banner, сгенерированный с Awesome Dev Banner Generator по @christopherkade , проверьте его пост об этом! https://dev.to/christopherkade/introducing-a-banner-generator-for-your-articles-on-dev-353a

Droneci (2 серии деталей)

Оригинал: «https://dev.to/coreyja/self-hosting-a-drone-ci-instance-cj7»