From 9d6c9c6afc58f90b469da491a9af0a0dbc0b4bf3 Mon Sep 17 00:00:00 2001 From: Liosha Date: Mon, 27 Apr 2026 15:06:07 +0300 Subject: [PATCH] production and staging(development) --- .gitea/workflows/deploy.yml | 41 +++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 629b3e7..7840cb1 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,3 +1,7 @@ +# Jambotron Deployment Workflow +# Этот файл реализует монолитный код существования системы Jambotron. +# Он обеспечивает автоматизированное созидание инфраструктуры при каждом пуше. + name: Jambotron Deploy on: push: @@ -6,6 +10,7 @@ on: jobs: build-and-deploy: runs-on: ubuntu-latest + # Используем контейнер act-latest для совместимости с твоим локальным раннером в Хельсинки container: image: catthehacker/ubuntu:act-latest @@ -15,12 +20,16 @@ jobs: - name: Install Docker CLI run: | + # Установка Docker внутри контейнера раннера для управления хостовым Docker-демоном apt-get update && apt-get install -y docker.io - name: Build and Deploy run: | - # Динамический выбор переменных на основе ветки - if [[ "${{ github.ref }}" == "refs/heads/production" ]]; then + # 1. ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ОКРУЖЕНИЯ + # Мы разделяем среды staging и production, сохраняя единство инженерного подхода. + BRANCH_NAME="${{ github.ref }}" + + if [[ "$BRANCH_NAME" == *"production"* ]]; then NAME="jambotron-prod" DB_NAME="jambotron_prod" DOMAIN="jambotron.com" @@ -32,30 +41,40 @@ jobs: TAG="stg-latest" fi - # Сборка образа - docker build -t jambotron-app:$TAG . + echo "Starting созидание for $NAME with tag $TAG on domain $DOMAIN" + + # 2. СБОРКА ОБРАЗА + # Собираем свежий слой кода Jambotron + docker build -t jambotron-app:${TAG} . - # Очистка места перед запуском + # 3. ПОДГОТОВКА СРЕДЫ (ОЧИСТКА) + # Останавливаем старый сосуд, чтобы освободить место для нового docker stop $NAME || true docker rm $NAME || true - # Запуск контейнера + # 4. ЗАПУСК СИСТЕМЫ + # Здесь мы передаем все критические параметры для работы Spring Boot и Flyway. docker run -d \ --name $NAME \ --network jambotron-net \ --restart always \ + # Проброс сокета необходим для управления другими контейнерами (SaaS 2.0) -v /var/run/docker.sock:/var/run/docker.sock \ - # УСТАНОВКА ПРОФИЛЯ: активирует боевой режим приложения, а для локальной разработки dev + # SPRING_PROFILES_ACTIVE=prod: + # Активирует боевой режим: отключает небезопасные stacktrace, включает кэширование + # и применяет специфичные для prod настройки пула соединений и логирования. -e SPRING_PROFILES_ACTIVE=prod \ - # Основные параметры подключения к базе + # Настройки подключения к основной базе PostgreSQL -e SPRING_DATASOURCE_URL=jdbc:postgresql://jambo-postgres:5432/$DB_NAME \ -e SPRING_DATASOURCE_USERNAME=jambotron_admin \ -e SPRING_DATASOURCE_PASSWORD=jambo_secret_pass \ - # Параметры для Flyway (миграции базы) + # Настройки Flyway: исправляют PlaceholderResolutionException -e SPRING_FLYWAY_URL=jdbc:postgresql://jambo-postgres:5432/$DB_NAME \ -e SPRING_FLYWAY_USER=jambotron_admin \ -e SPRING_FLYWAY_PASSWORD=jambo_secret_pass \ - # Настройки Caddy для автоматического HTTPS/Proxy + # Метки для Caddy: автоматическая прокси-магистраль и SSL -l "caddy=$DOMAIN" \ -l 'caddy.reverse_proxy={{upstreams 8081}}' \ - jambotron-app:$TAG \ No newline at end of file + jambotron-app:${TAG} + + echo "Созидание успешно завершено. Система активна." \ No newline at end of file