Введение
CI/CD — реагирование на определенные запросы или триггеры при работе с контейнерами, или любым другом проектом, т.е. выполняет роль уведомления об изменениях в проекте.
Упрощение работы с нотификацией, хранением результатов, а так же публикацией различных проектов.
Так же у Drone CI есть бесплатный план SaaS (Software as a Service), который доступен для проектов с открытым исходным кодом.
Интегрируется с Github, Bitbucket, Gitea. Конфигурация настраивается благодаря yaml (+ starlark и jsconnet).
Он не требует много ресурсов для его работоспособности, что позволяет сэкономить на оборудовании и начать работать с Dorne даже на слабых устройствах.
Для его работы необходимо предварительно установить Docker, в нашем случае мы будем использовать предустановленную версию Docker.
Чтобы установить Docker, воспользуйтесь нашей инструкцией или создайте сервер в Serverspace с уже установленным приложением.
Необходимые зависимости для Drone
- Аккаунт на сервисе GitHub;
- Для работоспособности Drone вам нужен собственный домен или открытый ip адрес;
- Так же на сервере должно быть 11 гигабайтов свободного места и 2 гигабайта оперативной памяти для работоспособности контейнеров.
Предварительная настройка сервера
Переходим в настройки аккаунта GitHub и создаем в нем доступ для делегирования нашего сервера к GitHub.
Используя этот пример, создайте своё OAuth приложение, предварительно измените домен на ваш собственный поддомен “drone.****”.
Если у вас нету собственного домена, тогда вы можете использовать ip адрес вашего сервера заменив домен «http://yourip» во вкладке homepage URL, а так же заменив «Authorization callback URL» на «http://yourip/login».
Зайдите в созданное приложение, скопируйте свой client id, а так же создайте ключ авторизации, эти данные потребуются при настройке сервера.
Настройка сервера
Создайте RPC ключ сервера.
openssl rand -hex 16
Создайте и настройте конфиг Drone.
nano /etc/drone
DRONE_SERVER_HOST=drone.steammmmm.space
#Host of your subdomain
DRONE_SERVER_PROTO=http
#what type of connection you will use
DRONE_GITHUB_CLIENT_ID=id_from_git_OAuth
#Client id from github
DRONE_GITHUB_CLIENT_SECRET=secret_from_github
#Secret from github
DRONE_RPC_SECRET=secret_from_server
#rpc password that we created on server
DRONE_USER_CREATE=username:barikasss,admin:true
#Username of your profile github
Это не весь список доступных настроек файла конфигурации, если у вас возникли вопросы то вы можете обратиться напрямую на страницу разработчика где размещена документация для файла конфигурации.
Установка и запуск Drone
Используя команду ниже, вы получаете образ последней версии Drone.
docker pull drone/drone:1
Создайте базу данных для Drone.
docker volume create drone-base
Запустите Drone.
docker run --name=dronegit --detach --restart=always --env-file=/etc/drone --volume=drone-base --publish=80:80 --publish=443:443 drone/drone:1
Проверка
Перейдите по адресу drone.yourdomain.***, вы увидите окно авторизации github.
После авторизации у вас откроется интерфейс drone.
Вывод
На рынке CI и CD очень много продуктов которые позволяют использовать их на бесплатной основе, но у каждого есть свои ограничения для использования их в коммерческих целях.
Подводя итоги, в этой публикации мы разобрали установку Drone CI на операционную систему Linux Ubuntu 20.04
Drone CI это:
- бесплатный план SaaS, который доступен только для opensource проектов;
- цена SaaS доступна только enterprise;
- интеграция возможна с Github, Bitbucket, Gitea;
- конфигурация Yaml (+starlark, jsconnect);
- минималистичен;
- не требует много ресурсов для работы.