Q3: Answer
هذا الالتزام موجود في:
47
q3-cicd/README.md
Normal file
47
q3-cicd/README.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# CI/CD Pipeline Documentation
|
||||||
|
|
||||||
|
## 1. Staging vs. Production Environments
|
||||||
|
|
||||||
|
In the Software Development Life Cycle (SDLC) and DevOps practices, environments are strictly separated to ensure software quality and stability before reaching the end-user:
|
||||||
|
|
||||||
|
* **Staging Environment:**
|
||||||
|
* This is an exact replica (clone) of the production environment, sharing the same configurations, database schemas, and network topology.
|
||||||
|
* **Purpose:** It acts as the final testing ground for Quality Assurance (QA), Integration Testing, and User Acceptance Testing (UAT) to catch bugs under real-world conditions.
|
||||||
|
* **Access & Impact:** Restricted to the development team, QA engineers, and stakeholders. If the system crashes here, real users are not affected.
|
||||||
|
|
||||||
|
* **Production Environment:**
|
||||||
|
* This is the live, public-facing environment serving actual end-users and handling real data.
|
||||||
|
* **Purpose:** To deliver the application with maximum stability, security, and High Availability (HA).
|
||||||
|
* **Access & Impact:** Strictly controlled. Deploying to production is a highly sensitive operation that requires passing all automated tests in Staging and mandates a **Manual Approval** step in our CI/CD pipeline to prevent catastrophic failures.
|
||||||
|
|
||||||
|
---
|
||||||
|
# Ghaymah CLI Integration Guide
|
||||||
|
|
||||||
|
To control deployments and monitor environments directly from the terminal (or integrate them programmatically into CI/CD pipelines), developers and SREs use the `ghaymah CLI`.
|
||||||
|
|
||||||
|
## Step 1: Installation
|
||||||
|
Install the CLI tool on the local machine or CI build runners:
|
||||||
|
```bash
|
||||||
|
curl -sL [https://cli.ghaymah.systems/install](https://cli.ghaymah.systems/install) | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Authentication
|
||||||
|
To link the CLI with your Ghaymah account, you must authenticate either interactively or via an API token:
|
||||||
|
# Interactive login (for developers)
|
||||||
|
ghaymah login
|
||||||
|
|
||||||
|
# Automated login using a Token (for GitHub Actions/Pipelines)
|
||||||
|
ghaymah login --token <YOUR_GHAYMAH_API_TOKEN>
|
||||||
|
|
||||||
|
## Step 3: Project Configuration
|
||||||
|
Link your local workspace to the remote project hosted on the Ghaymah platform:
|
||||||
|
# Link the project using its unique Project ID
|
||||||
|
ghaymah project link --id <PROJECT_ID>
|
||||||
|
|
||||||
|
## Step 4: Execution & Monitoring
|
||||||
|
Once configured, engineers can trigger deployments and monitor container health directly from the terminal:
|
||||||
|
# Trigger a new deployment
|
||||||
|
ghaymah app deploy
|
||||||
|
|
||||||
|
# Stream live container logs for troubleshooting
|
||||||
|
ghaymah logs tail --app q1-sre-api
|
||||||
44
q3-cicd/workflow.yml
Normal file
44
q3-cicd/workflow.yml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Ghaymah CI/CD Pipeline
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: registry.ghaymah.systems
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Source Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Log in to Ghaymah Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ secrets.GHAYMAH_USERNAME }}
|
||||||
|
password: ${{ secrets.GHAYMAH_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and Push Docker Image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: ./q1-deploy-monitor
|
||||||
|
push: true
|
||||||
|
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
||||||
|
|
||||||
|
deploy-to-production:
|
||||||
|
needs: build-and-push
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment:
|
||||||
|
name: production
|
||||||
|
url: https://prod.ghaymah.systems
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Deploy to Ghaymah Production
|
||||||
|
run: |
|
||||||
|
echo "Deploying image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} to production..."
|
||||||
|
echo "Deployment Successful!"
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم