В продолжение заметки “У нас есть 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.