production and staging(development)

This commit is contained in:
2026-04-27 10:59:02 +03:00
parent 2ddbf409b5
commit 3f1da2e2a1
+33 -27
View File
@@ -1,36 +1,42 @@
name: Jambotron Deploy
name: Jambotron Multi-Env Deploy
on:
push:
branches: [ development ]
branches:
- production
- development
jobs:
build-and-deploy:
runs-on: ubuntu-latest
container:
image: catthehacker/ubuntu:act-latest
runs-on: self-hosted # Используем твой runner на Hetzner Helsinki
steps:
- name: Checkout code
- name: Checkout Code
uses: actions/checkout@v3
- name: Build Docker Image
run: docker build -t jambotron-prod:latest .
- name: Deploy Monolith
- name: Define Environment
run: |
docker stop jambotron-app || true
docker rm jambotron-app || true
docker run -d \
--name jambotron-app \
--network jambotron-net \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-e SPRING_PROFILES_ACTIVE=prod \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://jambotron-db-server:5432/jambotron_prod \
-e SPRING_DATASOURCE_USERNAME=jambotron_admin \
-e SPRING_DATASOURCE_PASSWORD=jambo_secret_pass \
-e SPRING_FLYWAY_URL=jdbc:postgresql://jambotron-db-server:5432/jambotron_prod \
-e SPRING_FLYWAY_USER=jambotron_admin \
-e SPRING_FLYWAY_PASSWORD=jambo_secret_pass \
-l "caddy=jambotron.com" \
-l 'caddy.reverse_proxy={{upstreams 8081}}' \
jambotron-prod:latest
# ПРИМЕЧАНИЕ ДЛЯ ИНЖЕНЕРА:
# Секреты (пароли БД, ключи Auth0) берем из Settings -> Actions -> Secrets
if [[ "${{ github.ref }}" == "refs/heads/production" ]]; then
echo "ENV_NAME=prod" >> $GITHUB_ENV
echo "COMPOSE_FILE=docker-compose.yml" >> $GITHUB_ENV
echo "DOCKER_TAG=prod-latest" >> $GITHUB_ENV
echo "SPRING_PROFILE=prod" >> $GITHUB_ENV
else
echo "ENV_NAME=staging" >> $GITHUB_ENV
echo "COMPOSE_FILE=docker-compose.staging.yml" >> $GITHUB_ENV
echo "DOCKER_TAG=stg-latest" >> $GITHUB_ENV
echo "SPRING_PROFILE=staging" >> $GITHUB_ENV
fi
- name: Build Docker Image
run: |
# Сборка образа с тегом в зависимости от ветки
docker build -t jambotron-app:${{ env.DOCKER_TAG }} .
- name: Deploy to Server
run: |
# Запуск через соответствующий compose-файл в папке /root/jambotron-infra/
# Используем переменные из .env или .env.staging на сервере
docker compose -f ${{ env.COMPOSE_FILE }} up -d --remove-orphans