Ana içeriğe geç

Mimari

Bileşenler

.github/workflows/ci-quality.yml   GitHub Actions girişi (ortam + artifact)
        │
        ▼
ci/scripts/run-ci.mjs              16 fazı çalıştırır, çıktıyı ayrıştırır
        │  ├─ ci/reports/raw/<faz>.log      ham loglar
        │  └─ ci/reports/results.json       makine-okunabilir ham sonuç
        ▼
ci/scripts/ci-policy.mjs           puanlama + PASS/FAIL kapıları + bulgular
        ▼
ci/scripts/generate-ci-report.mjs  4 rapor dosyası + $GITHUB_STEP_SUMMARY

Aynı zincir Docker içinde de çalışır:

ci/docker-compose.ci.yml
  ├─ mongo-ci     (test MongoDB,   tmpfs — kalıcı değil)
  ├─ minio-ci     (test MinIO,     tmpfs — kalıcı değil)
  ├─ minio-ci-init(test bucket: iqv-platform-ci)
  ├─ mailpit-ci   (test SMTP — gerçek alıcıya mail gitmez)
  └─ ci-runner    (ci/Dockerfile, Node 22)

Neden bu ayrım?

  • Workflow ince tutulur. Faz tanımları YAML'da değil, run-ci.mjs içindedir; böylece yerelde ve CI'da birebir aynı hat çalışır.
  • Politika tek kaynaktır. Puan ve PASS/FAIL kararı yalnızca ci-policy.mjs içindedir; rapor dosyaları o çıktının biçimlendirilmiş hâlidir.
  • Üretimden izolasyon. CI compose ayrı proje adı (iqv-ci), ayrı servis adları ve ayrı veritabanı/bucket kullanır; kök docker-compose.yml değiştirilmemiştir.

Çıktı sözleşmesi

results.json içindeki her faz kaydı:

Alan Anlam
id, name, group faz kimliği
command, cwd çalıştırılan komut
exitCode, durationMs, timedOut çalışma sonucu
counts {passed, failed, skipped, total} — çıktıdan ayrıştırılır
evidence hata satırlarından son 40 kayıt
rawLog raw/<id>.log yolu