diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2f1c84b..9662dc4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -135,9 +135,9 @@ jobs: - name: Create Project Tag Env Files run: | # Создаем файлы, которые будут содержать только одну переменную с тегом - echo "WEB_IMAGE_TAG=${{ needs.build-and-push.outputs.web_tag }}" > .web.env - echo "BOT_IMAGE_TAG=${{ needs.build-and-push.outputs.bot_tag }}" > .bot.env - echo "CACHE_PROXY_IMAGE_TAG=${{ needs.build-and-push.outputs.cache_proxy_tag }}" > .cache-proxy.env + echo "WEB_IMAGE_TAG=${{ needs.build-and-push.outputs.web_tag }}" > .env.web + echo "BOT_IMAGE_TAG=${{ needs.build-and-push.outputs.bot_tag }}" > .env.bot + echo "CACHE_PROXY_IMAGE_TAG=${{ needs.build-and-push.outputs.cache_proxy_tag }}" > .env.cache-proxy # --- Шаг 4: Копирование .env и УСЛОВНОЕ копирование тегов --- @@ -152,8 +152,8 @@ jobs: source: '.env' target: '/home/${{ secrets.VPS_USER }}/zapishis/' - # Копируем .web.env ТОЛЬКО, если web был собран (обновляем тег на VPS) - - name: Copy .web.env to VPS + # Копируем .env.web ТОЛЬКО, если web был собран (обновляем тег на VPS) + - name: Copy .env.web to VPS if: ${{ needs.build-and-push.outputs.web_built == 'true' }} uses: appleboy/scp-action@master with: @@ -161,11 +161,11 @@ jobs: username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} - source: '.web.env' + source: '.env.web' target: '/home/${{ secrets.VPS_USER }}/zapishis/' - # Копируем .bot.env ТОЛЬКО, если bot был собран - - name: Copy .bot.env to VPS + # Копируем .env.bot ТОЛЬКО, если bot был собран + - name: Copy .env.bot to VPS if: ${{ needs.build-and-push.outputs.bot_built == 'true' }} uses: appleboy/scp-action@master with: @@ -173,11 +173,11 @@ jobs: username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} - source: '.bot.env' + source: '.env.bot' target: '/home/${{ secrets.VPS_USER }}/zapishis/' - # Копируем .cache-proxy.env ТОЛЬКО, если cache-proxy был собран - - name: Copy .cache-proxy.env to VPS + # Копируем .env.cache-proxy ТОЛЬКО, если cache-proxy был собран + - name: Copy .env.cache-proxy to VPS if: ${{ needs.build-and-push.outputs.cache_proxy_built == 'true' }} uses: appleboy/scp-action@master with: @@ -185,7 +185,7 @@ jobs: username: ${{ secrets.VPS_USER }} key: ${{ secrets.VPS_SSH_KEY }} port: ${{ secrets.VPS_PORT }} - source: '.cache-proxy.env' + source: '.env.cache-proxy' target: '/home/${{ secrets.VPS_USER }}/zapishis/' - name: Copy docker-compose.yml to VPS via SCP @@ -198,12 +198,21 @@ jobs: source: 'docker-compose.yml' target: '/home/${{ secrets.VPS_USER }}/zapishis/' + # --- ФИНАЛЬНЫЙ ДЕПЛОЙ (БЕЗ УСЛОВНОГО PULL) --- - name: Login and deploy on VPS run: | + # Список env-файлов, которые docker compose объединит + ENV_FILES="-e .env -e .env.web -e .env.bot -e .env.cache-proxy" + ssh -i ~/.ssh/id_rsa -p ${{ secrets.VPS_PORT }} -o StrictHostKeyChecking=no ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} " cd /home/${{ secrets.VPS_USER }}/zapishis && \ - docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} && \ - docker compose pull && \ - docker compose down && \ - docker compose up -d + docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} + + # 1. Pull ВСЕХ сервисов (Docker Hub сам пропустит неизменные) + echo \"Pulling all services...\" && \ + docker compose \$ENV_FILES pull + + # 2. Перезапуск + docker compose \$ENV_FILES down && \ + docker compose \$ENV_FILES up -d " diff --git a/docker-compose.yml b/docker-compose.yml index f2819f5..8de2cb2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ services: image: ${DOCKERHUB_USERNAME}/zapishis-cache-proxy:${CACHE_PROXY_IMAGE_TAG} env_file: - .env - - .cache-proxy.env + - .env.cache-proxy restart: always depends_on: - redis @@ -19,7 +19,7 @@ services: image: ${DOCKERHUB_USERNAME}/zapishis-web:${WEB_IMAGE_TAG} env_file: - .env - - .web.env + - .env.web restart: always # healthcheck: # test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/health'] @@ -37,7 +37,7 @@ services: restart: always env_file: - .env - - .bot.env + - .env.bot depends_on: - redis - cache-proxy