В продолжение заметки “У нас есть github дома” добавим к нашему окружению систему автоматического тестирования и доставки ПО Drone CI. Документацию можно почитать тут https://docs.drone.io/.
Из плюсов Drone по сравнению с Jenkins: простота установки, настройки и сопровождения, не надо изучать groovy, всё пишется на yaml.
Drone CI состоит из двух сервисов: собственно Drone и ранеров которые будут выполнять необходимые задачи, в даном случае ранеры используют докер хост системы для запуска задач.
Сам drone не имеет базы пользователей и использует OAuth внешней системы для авторизации пользователей.
Для настройки OAuth перейдите в раздел user/settings/applications
на вашем экземпляре forgejo/gitea и в подразделе Authorized OAuth2 Applications
создайте новое приложение. В поле Redirect URI укажите адрес вашего drone сервера, например https://drone.example.ru/login
. После создания приложения скопируйте client id и secret, они понадобятся ниже.
Добавим в docker-compose.yaml с forgejo ещё два сервиса:
...
services:
forgejo:
...
drone:
image: drone/drone:2.16
restart: always
ports:
- "4080:80"
networks:
- forgejo
volumes:
- drone:/data
environment:
DRONE_GITEA_SERVER: https://git.example.ru
DRONE_GITEA_CLIENT_ID: <OAUTH ID>
DRONE_GITEA_CLIENT_SECRET: <OAUTH SECRET>
DRONE_RPC_SECRET: <DRONE SECRET>
DRONE_SERVER_HOST: drone.example.ru
DRONE_SERVER_PROTO: https
runner:
image: drone/drone-runner-docker:1.8.3
restart: always
depends_on:
- drone
networks:
- forgejo
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
DRONE_RPC_PROTO: https
DRONE_RPC_HOST: drone.example.ru
DRONE_RPC_SECRET: <DRONE SECRET>
DRONE_RUNNER_CAPACITY: 2
DRONE_RUNNER_NAME: "vpc docker runner"
- DRONE_GITEA_SERVER - адрес вашего сервера forgejo/gitea
- DRONE_GITEA_CLIENT_ID: id клиента который вы получили во время создания oauth приложения
- DRONE_GITEA_CLIENT_SECRET - oauth секрет
- DRONE_RPC_SECRET - любой случайный набор символов, позволит связываться drone и drone runner. Можно создать так:
openssl rand -hex 16
Ок, после настройки и запуска можно попробовать зайти на https://drone.example.ru/. Для авторизации вас должно перекинуть на forgejo и затем обратно в drone. После этого вы должны увидеть список репозиториев которые вам доступны.
С установкой всё, в следующей заметке настроим автоматическую сборку и публикацию блога hugo с помощью drone.