name: Ghaymah CI/CD Pipeline on: push: branches: - main env: IMAGE_NAME: mohamedsaleh33/ghaymah-sre-api:v2 jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Login to Docker Hub run: | echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login \ -u "${{ secrets.DOCKERHUB_USERNAME }}" \ --password-stdin - name: Build Docker Image run: | docker build \ -f q1-deploy-monitor/Dockerfile \ -t $IMAGE_NAME . - name: Push Docker Image run: | docker push $IMAGE_NAME deploy-staging: needs: build runs-on: ubuntu-latest environment: name: staging steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Install Ghaymah CLI run: | curl -sSl https://cli.ghaymah.systems/install.sh | bash - name: Login to Ghaymah env: GHAYMAH_EMAIL: ${{ secrets.GHAYMAH_EMAIL }} GHAYMAH_PASSWORD: ${{ secrets.GHAYMAH_PASSWORD }} run: | printf "%s\n%s\n" "$GHAYMAH_EMAIL" "$GHAYMAH_PASSWORD" | /root/ghaymah/bin/gy auth login - name: Deploy to Staging run: | /root/ghaymah/bin/gy resource app launch deploy-production: needs: deploy-staging runs-on: ubuntu-latest environment: name: production steps: - name: Manual Approval run: echo "Waiting for production approval..." - name: Checkout Repository uses: actions/checkout@v4 - name: Install Ghaymah CLI run: | curl -sSl https://cli.ghaymah.systems/install.sh | bash - name: Login to Ghaymah env: GHAYMAH_EMAIL: ${{ secrets.GHAYMAH_EMAIL }} GHAYMAH_PASSWORD: ${{ secrets.GHAYMAH_PASSWORD }} run: | printf "%s\n%s\n" "$GHAYMAH_EMAIL" "$GHAYMAH_PASSWORD" | /root/ghaymah/bin/gy auth login - name: Deploy to Production run: | /root/ghaymah/bin/gy resource app launch