name: CD on: push: branches: [master] workflow_dispatch: env: REGISTRY: gitea.rmevs.vip BACKEND_IMAGE: gitea.rmevs.vip/rm/torgi2-backend FRONTEND_IMAGE: gitea.rmevs.vip/rm/torgi2-frontend jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Login to Gitea registry run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin - name: Build and push backend run: docker build -t "$BACKEND_IMAGE:latest" -f Dockerfile . && docker push "$BACKEND_IMAGE:latest" - name: Build and push frontend run: docker build -t "$FRONTEND_IMAGE:latest" ./frontend && docker push "$FRONTEND_IMAGE:latest" deploy: needs: build-and-push runs-on: ubuntu-latest steps: - name: Deploy to prod over SSH env: SSH_KEY: ${{ secrets.SSH_KEY }} SSH_HOST: ${{ secrets.SSH_HOST }} SSH_PORT: ${{ secrets.SSH_PORT }} SSH_USER: ${{ secrets.SSH_USER }} DEPLOY_DIR: ${{ secrets.SSH_DEPLOY_DIR }} COMPOSE_FILE: ${{ secrets.COMPOSE_FILE }} run: | mkdir -p ~/.ssh echo "$SSH_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key PORT="${SSH_PORT:-22}" FILE="${COMPOSE_FILE:-docker-compose.yml}" ssh -i ~/.ssh/deploy_key -p "$PORT" -o StrictHostKeyChecking=no -o BatchMode=yes "$SSH_USER@$SSH_HOST" \ "cd $DEPLOY_DIR && git pull --ff-only && docker compose -f \"$FILE\" pull && sudo -n systemctl stop torgi && sudo -n systemctl start torgi && sudo -n systemctl is-active torgi"