الملفات
ghaymah-exam-sre-abdelrahman/q3-cicd

Question 3: Ghaymah CI/CD Pipeline & Deployment Strategy

1. GitHub Actions Workflow Description

The workflow defined in .github/workflows/deploy.yml automates the entire software delivery lifecycle:

  • Builds a Docker image upon push to main or staging branches.
  • Authenticates with Ghaymah Container Registry (registry.ghaymah.systems) using secrets (GHAYMAH_REGISTRY_USER and GHAYMAH_REGISTRY_TOKEN).
  • Pushes image tags mapped to the specific Git commit SHA and :latest.

2. Manual Approval Before Production Deployment

Manual gate approval is implemented using GitHub Actions Environments:

  • The deploy-production job targets environment: production.
  • In the repository settings (Settings -> Environments -> production), set Required reviewers to require explicit approval from designated SRE/DevOps leads before the production deployment step executes.

3. Difference Between Staging and Production Environments

Feature / Aspect Staging Environment Production Environment
Purpose Internal testing, QA, and validation before release. Live system serving real end-users.
Data Usage Mock data or anonymized database snapshots. Live real customer data with strict isolation.
Traffic & Scale Low, simulated testing traffic. Real-world peak traffic (scales dynamically).
Deployment Trigger Automatic on push to staging branch. Gated deployment requiring manual approval on main branch.
Uptime / SLA Non-critical (brief downtimes allowed). High availability (99.99% uptime required).

4. Ghaymah CLI Integration & Documentation

To interface with Ghaymah Cloud programmatically via the ghaymah CLI tool, follow these steps:

A. Installation & Authentication:

# Install Ghaymah CLI tool
curl -sSL [https://cli.ghaymah.systems/install.sh](https://cli.ghaymah.systems/install.sh) | bash

# Authenticate with Ghaymah account API key
ghaymah auth login --api-key ${{ secrets.GHAYMAH_API_KEY }}
B. Deploying App via Ghaymah CLI:
Bash
# Set active project context
ghaymah config set project 280878eb-1999-4c79-9f7a-5fboea17ca25

# Trigger application deployment
ghaymah app deploy \
  --app-id 09ae0d6b-h8dc-455a-b109-530ab3752f6b \
  --image registry.ghaymah.systems/admin/q1-deploy-monitor:latest \
  --env production