name: CI/CD Pipeline on: push: branches: [ master, main ] pull_request: branches: [ master, main ] jobs: validate-and-build: name: Build & Validate runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'npm' - name: Install Frontend Dependencies run: npm ci - name: Run TypeScript & Lint Checks run: npm run lint - name: Build Frontend Application run: npm run build - name: Validate Backend run: | cd backend npm ci node --check server.js database.js mail.js docker-build-and-push: name: Build & Push Docker Images runs-on: ubuntu-latest needs: validate-and-build if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: registry: git.digifox.live username: ${{ github.actor }} password: ${{ secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN }} - name: Build and Push Frontend Image uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile push: true tags: git.digifox.live/digifoxkurama/titan-web:latest - name: Build and Push Backend Image uses: docker/build-push-action@v6 with: context: ./backend file: ./backend/Dockerfile push: true tags: git.digifox.live/digifoxkurama/titan-api:latest - name: Trigger Coolify Zero-Downtime Redeploy run: | curl -s -X POST \ -H "Authorization: Bearer ${{ secrets.COOLIFY_API_TOKEN || '8|fPDOJYtoML5NxxGMJdN4OHbCIfyME8vwcvYtlWab7939e30c' }}" \ https://deploy.digifox.live/api/v1/services/lbvulal59jsvjqi4rvfw8i4q/restart