diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 241501d..4c9765e 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -1,19 +1,21 @@ -name: Build and Push Docker Image +name: Build and Deploy Backend on: push: tags: - '*' + workflow_dispatch: jobs: - build-and-push: + build-and-deploy: runs-on: ubuntu-latest + steps: - # 1. Клонируем ваш репозиторий + # 1. Клонируем код - name: Checkout code uses: actions/checkout@v4 - # 2. Настраиваем Docker Buildx для сборки + # 2. Настраиваем Docker Buildx - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -23,7 +25,7 @@ jobs: with: registry: git.uvpn.shop username: ${{ gitea.repository_owner }} - password: ${{ secrets.ACCESS_TOKEN }} # Используем ваш секрет + password: ${{ secrets.ACCESS_TOKEN }} # 4. Собираем и пушим образ - name: Build and push Docker image @@ -33,4 +35,31 @@ jobs: push: true tags: | git.uvpn.shop/uvpn/backend:latest - git.uvpn.shop/uvpn/backend:${{ gitea.sha }} \ No newline at end of file + git.uvpn.shop/uvpn/backend:${{ gitea.sha }} + + # 5. Устанавливаем SSH-ключ для деплоя + - name: Install SSH key + uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }} + + # 6. Деплой на сервер + - name: Deploy on server + run: | + ssh -o StrictHostKeyChecking=no ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'EOF' + # Переходим в папку с проектом (где лежит docker-compose.yml) + cd /opt/uvpn.shop/backend + + # Логинимся в реестр Gitea (чтобы docker pull мог скачать образ) + echo "${{ secrets.ACCESS_TOKEN }}" | docker login git.uvpn.shop -u ${{ gitea.repository_owner }} --password-stdin + + # Скачиваем свежий образ + docker pull git.uvpn.shop/uvpn/backend:latest + + # Перезапускаем контейнер с новым образом + docker-compose down || true # Если контейнер не запущен — игнорируем ошибку + docker-compose up -d + + # Очищаем неиспользуемые образы + docker image prune -f + EOF \ No newline at end of file