name: CI/CD - Build & Deploy to Ghaymah Cloud on: push: branches: - main jobs: # --------------------------------------------------------- # 1) BUILD & TEST # --------------------------------------------------------- build-and-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Build Docker image run: | docker build -t exam-api:${{ github.sha }} . - name: Smoke Test run: | docker run -d -p 5000:5000 --name smoke-test exam-api:${{ github.sha }} sleep 8 curl -f http://localhost:5000/health docker stop smoke-test docker rm smoke-test # --------------------------------------------------------- # 2) DEPLOY TO PRODUCTION # --------------------------------------------------------- deploy-production: needs: build-and-test runs-on: ubuntu-latest environment: name: production steps: - name: Checkout code uses: actions/checkout@v5 - name: Install Ghaymah CLI run: | curl -sSL https://cli.ghaymah.systems/install.sh | bash - name: Verify Secrets shell: bash env: EMAIL: ${{ secrets.GHAYMAH_EMAIL }} PASSWORD: ${{ secrets.GHAYMAH_PW }} run: | echo "Email Length: ${#EMAIL}" echo "Password Length: ${#PASSWORD}" - name: Login to Ghaymah run: | $HOME/ghaymah/bin/gy auth login \ --email "${{ secrets.GHAYMAH_EMAIL }}" \ --password "${{ secrets.GHAYMAH_PW }}" - name: Use Production Config run: | cp .ghaymah.production.json .ghaymah.json - name: Deploy to Ghaymah run: | $HOME/ghaymah/bin/gy resource app launch