name: CI/CD - Vijaya hexafitness web on: pull_request: branches: - production - test types: - closed jobs: build-and-deploy: name: Build & Deploy runs-on: linux if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'production' steps: - name: Checkout code run: | git clone \ --depth 1 \ --branch production \ https://oauth2:${{ secrets.VIJAYA }}@gitea.hexdive.com/Vijaya_Gym/Client_Fe.git \ . - name: Build Docker image run: | docker build \ --build-arg NEXT_PUBLIC_CORE_API_URL="${{ secrets.NEXT_PUBLIC_CORE_API_URL }}" \ -t hexafit-web:latest \ . - name: Stop & remove existing container run: | docker stop hexafit-web 2>/dev/null || true docker rm hexafit-web 2>/dev/null || true - name: Start container run: | docker run -d \ --name hexafit-web \ -p 127.0.0.1:5633:3000 \ --env-file /home/vijaya/web/.env \ --restart unless-stopped \ hexafit-web:latest - name: Remove old images run: docker image prune -f - name: Verify run: | sleep 5 docker ps --filter name=hexafit-web --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" \ | grep -q hexafit-web \ && echo "✅ Container running" \ || (docker logs hexafit-web --tail 50 && exit 1) curl -fsS http://127.0.0.1:5633/ > /dev/null \ && echo "✅ HTTP OK" \ || (docker logs hexafit-web --tail 50 && exit 1) build-and-deploy-test: name: Build & Deploy (Test) runs-on: linux if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'test' steps: - name: Checkout code run: | git clone \ --depth 1 \ --branch test \ https://oauth2:${{ secrets.VIJAYA }}@gitea.hexdive.com/Vijaya_Gym/Client_Fe.git \ . - name: Build Docker image run: | docker build \ --build-arg NEXT_PUBLIC_CORE_API_URL="${{ secrets.NEXT_PUBLIC_CORE_API_URL }}" \ -t hexafit-web-test:latest \ . - name: Stop & remove existing container run: | docker stop hexafit-web-test 2>/dev/null || true docker rm hexafit-web-test 2>/dev/null || true - name: Start container run: | docker run -d \ --name hexafit-web-test \ -p 127.0.0.1:3002:3000 \ --env-file /home/vijaya/web/.env \ --restart unless-stopped \ hexafit-web-test:latest - name: Remove old images run: docker image prune -f - name: Verify run: | sleep 5 docker ps --filter name=hexafit-web-test --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" \ | grep -q hexafit-web-test \ && echo "✅ Container running" \ || (docker logs hexafit-web-test --tail 50 && exit 1) curl -fsS http://127.0.0.1:3002/ > /dev/null \ && echo "✅ HTTP OK" \ || (docker logs hexafit-web-test --tail 50 && exit 1)