الملفات
GHyamah-Test/README.md

5.4 KiB

Ghaymah Cloud Technical Assessment

Complete implementation of the five Ghaymah cloud assessment tasks: deployment, monitoring, incident analysis, CI/CD, scalability, and the mithal.space monitoring dashboard.

Deliverables

Question Deliverable Status
Q1 — Deploy and monitor an API Application, monitor, dashboard, and deployment guide HTTP 200 verified 2026-07-26 20:46:07 UTC
Q2 — OOMKilled postmortem Professional blameless postmortem Complete
Q3 — CI/CD pipeline Workflow and documentation Complete
Q4 — Scalability Architecture, capacity calculation, cold starts, and storage Complete
Q5 — mithal.space monitoring Collector and dashboard HTTP 200 verified 2026-07-26 20:46:07 UTC

Service endpoints

Both application endpoints returned HTTP 200 in a fresh check at 2026-07-26 20:46:07 UTC:

Deployment evidence

The curated evidence set is documented in docs/evidence/README.md.

Evidence Screenshot
Ghaymah project and applications Project
Q1 API service Q1 service
Q1 health response recorded 2026-07-26 18:48:19 UTC Q1 health
Q1 monitoring dashboard Q1 dashboard
Q5 Ghaymah service Q5 service
Q5 monitoring dashboard Q5 dashboard
GitHub production protection Approval protection
Successful CI/CD run Pipeline

CI/CD behavior

The workflow:

  1. Builds q1-deploy-monitor/app.
  2. Embeds the Git commit as RELEASE_SHA.
  3. Pushes immutable SHA and latest tags to Docker Hub.
  4. Starts the immutable image in an ephemeral staging container.
  5. Requires status=ok and the expected SHA from /health.
  6. Pauses for the required reviewer on the GitHub production Environment.
  7. Verifies that the deployed Ghaymah application serves the approved SHA.

Ghaymah CLI 0.0.24 documents interactive email/password login but does not publish API-token authentication or the external-image field for gy resource app update. Production image promotion therefore uses the authenticated dashboard and is followed by automated release verification. The workflow does not report a stale or unverified deployment as successful.

The account's five-resource free-plan limit prevents a third persistent Ghaymah application, so staging runs as an isolated ephemeral container on the Actions runner. Production and the Q5 dashboard both returned HTTP 200 at 2026-07-26 20:46:07 UTC.

Free-tier hibernation policy

Both applications run on the Ghaymah free tier. They may be put into Hibernate in the Ghaymah dashboard when the assessment is not being reviewed to conserve container credits; hibernated public URLs return HTTP 503. Before submission or review, open each application and select Wake Up, then verify both public endpoints and record the UTC check time. Hibernation preserves the deployment configuration but stops the Q5 in-container collector.

Verified platform information

  • The authenticated deployment form accepts a Git repository or container image, registry pull secret, instance size, application name, port, public access, custom domain, environment variables, and storage volumes.
  • Docker Hub is available through External Integrations.
  • The authenticated volume form displays a range from 50 MiB to 10 GiB.
  • The official CLI installs with curl -sSL https://cli.ghaymah.systems/install.sh | bash.
  • CLI 0.0.24 exposes gy version, gy auth login, gy resource app init, gy resource app launch, logs, and a generic gy resource app update.

Official references:

Local checks

docker build --build-arg RELEASE_SHA=local \
  -t ghaymah-api:local q1-deploy-monitor/app
docker run --rm -p 8080:8080 ghaymah-api:local
curl -f http://localhost:8080/health
APP_URL=https://ghaymah-api-615e99f13665.hosted.ghaymah.systems \
  python q1-deploy-monitor/monitor/monitor.py --once
python q5-mithal-dashboard/collector/collect.py --once

No credentials are stored in the repository. Docker Hub credentials remain in GitHub Secrets and Ghaymah registry authentication remains in the platform integration.