CI/CD пайплайн
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
RELEASE_COOKIE=FuNHSU3SIiW8ICu2XIbl0pvpxAhpBvO2Wki7CT6q2bpHDSlQ8p7gtUgjnyXpPJU5
|
||||
GRAFANA_ADMIN_PASSWORD=admin
|
||||
JWT_SECRET=IDhKNFRLZFDYgPvVXwg4T7hAviQ2I1VGeEn5vXufQXK3AAErZuhMWy8J1uxJ0kGF
|
||||
TRAEFIK_LOG_PATH=/app/traefik/logs/access.log
|
||||
ADMIN_SUPER_EMAIL=superadmin@eventhub.local
|
||||
ADMIN_SUPER_PASSWORD=123456
|
||||
ADMIN_EMAIL=admin@eventhub.local
|
||||
ADMIN_PASSWORD=123456
|
||||
ADMIN_MODER_EMAIL=moderator@eventhub.local
|
||||
ADMIN_MODER_PASSWORD=123456
|
||||
ADMIN_SUPPORT_EMAIL=support@eventhub.local
|
||||
ADMIN_SUPPORT_PASSWORD=123456
|
||||
@@ -1,26 +1,18 @@
|
||||
# ============================================================
|
||||
# Одноэтапный Dockerfile (сборка и рантайм в одном образе)
|
||||
# Одноэтапный Dockerfile
|
||||
# ============================================================
|
||||
FROM erlang:28-alpine
|
||||
|
||||
# Устанавливаем инструменты для сборки и runtime-зависимости
|
||||
RUN apk add \
|
||||
# для сборки
|
||||
#git curl gcc
|
||||
make musl-dev \
|
||||
rust cargo openssl-dev libsodium-dev
|
||||
#\
|
||||
# для рантайма
|
||||
#openssl libstdc++ libgcc ncurses-libs
|
||||
|
||||
# Рабочая директория
|
||||
#RUN mkdir -p log/test/ct
|
||||
|
||||
# Копируем конфигурацию и исходники
|
||||
COPY rebar.config ./
|
||||
COPY include/ include/
|
||||
COPY src/ src/
|
||||
COPY test/api_SUITE.erl test/
|
||||
COPY test/api_*_SUITE.erl test/
|
||||
COPY test/api/ test/api/
|
||||
|
||||
# Компилируем и запускаем тесты
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
# ================== Балансировщик ==================
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
command:
|
||||
- "--log.level=DEBUG"
|
||||
- "--api.insecure=true"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--entrypoints.web.address=:80"
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
networks:
|
||||
- eventhub-net
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
# ================== Кластер EventHub ==================
|
||||
eventhub:
|
||||
image: git.sabilin.com/eventhub/eventhub:stage
|
||||
hostname: "eventhub-node{{.Task.Slot}}"
|
||||
environment:
|
||||
- NODE_NAME=eventhub-node{{.Task.Slot}}
|
||||
- RELEASE_COOKIE=${RELEASE_COOKIE}
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
- ADMIN_SUPER_EMAIL=${ADMIN_SUPER_EMAIL}
|
||||
- ADMIN_SUPER_PASSWORD=${ADMIN_SUPER_PASSWORD}
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- CLUSTER_MODE=true
|
||||
- DNS_NAME=eventhub-node
|
||||
networks:
|
||||
eventhub-net:
|
||||
aliases:
|
||||
- eventhub-node
|
||||
volumes:
|
||||
- eventhub-data:/app/data
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
deploy:
|
||||
replicas: 1
|
||||
endpoint_mode: dnsrr
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
# ================== Эмулятор ботов ==================
|
||||
bot-emulator-users:
|
||||
image: git.sabilin.com/eventhub/bot-emulator-users:stage
|
||||
environment:
|
||||
- ADMIN_API_HOST=http://eventhub-node:8445
|
||||
- CLIENT_API_HOST=http://eventhub-node:8080
|
||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
|
||||
- BOT_PASSWORD=${BOT_PASSWORD}
|
||||
- STARTUP_DELAY=30
|
||||
- DEBUG=true
|
||||
networks:
|
||||
- eventhub-net
|
||||
depends_on:
|
||||
- eventhub
|
||||
deploy:
|
||||
replicas: 0
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
networks:
|
||||
eventhub-net:
|
||||
driver: overlay
|
||||
|
||||
volumes:
|
||||
eventhub-data:
|
||||
Reference in New Issue
Block a user