71 lines
3.1 KiB
YAML
71 lines
3.1 KiB
YAML
|
|
# Drone CI: server (интерфейс, webhook от Gitea) и docker-runner
|
|||
|
|
# (исполняет шаги .drone.yml в контейнерах этого хоста).
|
|||
|
|
#
|
|||
|
|
# Перед запуском — в Gitea: Настройки → Applications → OAuth2-приложение,
|
|||
|
|
# Redirect URI: http://<хост-drone>:8081/authorize
|
|||
|
|
#
|
|||
|
|
# .env рядом с этим файлом (в git не входит):
|
|||
|
|
# GITEA_SERVER=https://gitea.example.com
|
|||
|
|
# DRONE_GITEA_CLIENT_ID=...
|
|||
|
|
# DRONE_GITEA_CLIENT_SECRET=...
|
|||
|
|
# DRONE_GITEA_ADMIN_USERNAME=admin # аккаунт Gitea, станет админом Drone
|
|||
|
|
# DRONE_SERVER_HOST=drone.example.com
|
|||
|
|
# DRONE_SERVER_PROTO=https
|
|||
|
|
# DRONE_RPC_SECRET= # openssl rand -hex 32
|
|||
|
|
#
|
|||
|
|
# Запуск: docker compose -p drone --env-file .env -f compose.yaml up -d
|
|||
|
|
|
|||
|
|
services:
|
|||
|
|
drone:
|
|||
|
|
image: drone/drone:2
|
|||
|
|
restart: unless-stopped
|
|||
|
|
ports:
|
|||
|
|
# Веб-интерфейс и цель webhook от Gitea; за TLS-терминалом.
|
|||
|
|
- "8081:80"
|
|||
|
|
environment:
|
|||
|
|
DRONE_GITEA_SERVER: ${GITEA_SERVER:?GITEA_SERVER is required}
|
|||
|
|
DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID:?DRONE_GITEA_CLIENT_ID is required}
|
|||
|
|
DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET:?DRONE_GITEA_CLIENT_SECRET is required}
|
|||
|
|
# Общий секрет server ↔ runner: openssl rand -hex 32.
|
|||
|
|
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?DRONE_RPC_SECRET is required}
|
|||
|
|
# Первый залогинившийся через Gitea становится админом Drone.
|
|||
|
|
DRONE_USER_CREATE_OAUTH: username=${DRONE_GITEA_ADMIN_USERNAME:?DRONE_GITEA_ADMIN_USERNAME is required},admin=true
|
|||
|
|
# Внешний адрес интерфейса: его видят Gitea (webhook) и браузер.
|
|||
|
|
DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:?DRONE_SERVER_HOST is required}
|
|||
|
|
DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO:-https}
|
|||
|
|
volumes:
|
|||
|
|
- drone:/data
|
|||
|
|
networks:
|
|||
|
|
- drone
|
|||
|
|
|
|||
|
|
runner:
|
|||
|
|
image: drone/drone-runner-docker:1
|
|||
|
|
restart: unless-stopped
|
|||
|
|
depends_on:
|
|||
|
|
- drone
|
|||
|
|
environment:
|
|||
|
|
DRONE_RPC_PROTO: http
|
|||
|
|
DRONE_RPC_HOST: drone
|
|||
|
|
DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?DRONE_RPC_SECRET is required}
|
|||
|
|
# Один конвейер за раз: деплои не должны пересекаться.
|
|||
|
|
DRONE_RUNNER_CAPACITY: "1"
|
|||
|
|
DRONE_RUNNER_NAME: prod-server
|
|||
|
|
# Шаги пайплайнов (и их сервисы — postgres для тестов) поднимаются
|
|||
|
|
# именно в этой сети: имя сети указано явно (name: drone), чтобы
|
|||
|
|
# совпадало со значением DRONE_RUNNER_NETWORKS.
|
|||
|
|
DRONE_RUNNER_NETWORKS: drone
|
|||
|
|
volumes:
|
|||
|
|
# Доступ к docker-демону: сборка образов, compose, деплой.
|
|||
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|||
|
|
networks:
|
|||
|
|
- drone
|
|||
|
|
|
|||
|
|
networks:
|
|||
|
|
# Имя фиксируем: DRONE_RUNNER_NETWORKS ссылается на него буквально,
|
|||
|
|
# а префикс проекта (drone_drone) runner бы не узнал.
|
|||
|
|
drone:
|
|||
|
|
name: drone
|
|||
|
|
|
|||
|
|
volumes:
|
|||
|
|
drone:
|