Ana içeriğe geç

CI Kalite Raporu

Her main branch'ine push, her pull request ve manuel (workflow_dispatch) tetiklemede .github/workflows/ci.yml içindeki quality-report job'u (görünen ad: CI / Quality Report) çalışır ve bir IQV Platform CI Quality Result raporu üretir.

Ne yapar?

quality-report job'u, kendisinden önce çalışan altı zorunlu job'a (needs) bağlıdır ve bu job'lardan herhangi biri başarısız olsa bile if: always() ile çalışır:

  • CI / Lint
  • CI / Production TypeScript
  • CI / Test TypeScript
  • CI / Tests and Coverage
  • CI / Production Build
  • CI / Dependency Audit

Job, needs.<job>.result değerlerini ve (varsa) CI / Tests and Coverage job'unun ürettiği iqv-platform-ci-metrics geçici artifact'indeki coverage/test metriklerini okuyarak scripts/generate-ci-quality-report.mjs script'ini çalıştırır.

Çıktılar

  1. GitHub'ın "Job Summary" ekranında IQV Platform CI Quality Result başlığıyla özet bir rapor gösterilir.
  2. iqv-platform-ci-quality-report adında, 14 gün saklanan indirilebilir bir artifact üretilir. Bu artifact şu yapıya sahiptir:
iqv-platform-ci-quality-report/
├── REPORT.md
├── REPORT.json
├── iqv-platform-ci-report.md
├── iqv-platform-ci-report.json
├── mkdocs.yml
└── docs/
    ├── index.md
    ├── ci-quality-report.md
    └── development.md

Puanlama

Toplam puan 100'dür:

  • A) Zorunlu CI job sonuçları — 50 puan: Lint (8), Production TypeScript (8), Test TypeScript (8), Tests and Coverage (12), Production Build (9), Dependency Audit policy (5).
  • B) Test ve coverage kalitesi — 20 puan: tüm suite'lerin geçmesi (5), tüm testlerin geçmesi (5), statements/branches/functions/lines eşik üzeri (2+2+2+2), rahat marjlı ek kalite bonusu (2).
  • C) Workflow güvenliği ve deterministik yapı — 15 puan: en az yetki, npm ci + package-lock.json, .nvmrc üzerinden Node sürümü, concurrency, timeout'lar, secret loglanmaması, deploy olmaması.
  • D) Repository ve dokümantasyon kalitesi — 15 puan: mkdocs.yml ve docs/*.md dosyalarının varlığı, raporun hem Markdown hem JSON olarak üretilmesi, artifact'in başarıyla hazırlanması.

Sonuç seviyeleri

Puan Sonuç
95–100 PASSED — Excellent
90–94 PASSED WITH WARNINGS — Good
80–89 NEEDS IMPROVEMENT
0–79 FAILED

Önemli: Zorunlu job'lardan biri başarısız olduysa veya kritik bir bağımlılık zafiyeti tespit edildiyse, matematiksel puan yüksek çıksa bile genel sonuç her zaman FAILED olarak raporlanır. Rapor script'i hiçbir değeri uydurmaz; bir veri kaynağı (coverage, test ayrıntıları) mevcut değilse ilgili alan "Unavailable" olarak işaretlenir ve puan verilmez.

Bilinen sınırlamalar

  • CI / Dependency Audit job'u yalnızca kritik seviye bulgularda kırmızı olur (npm audit --audit-level=critical, bloklayıcı); yüksek/orta seviye bulgular ayrı, bloklayıcı olmayan bir adımda raporlanır. Bu nedenle rapor, yüksek/orta bulguların kesin sayısını değil, "Accepted/Documented Risk" durumunu gösterir.
  • Coverage ve test ayrıntıları, CI / Tests and Coverage job'unun ürettiği iqv-platform-ci-metrics artifact'ine bağımlıdır. Bu artifact bir nedenle oluşmazsa (örn. npm ci adımı job daha coverage adımına ulaşmadan başarısız olursa), rapor çökmez; ilgili alanlar "Unavailable" olarak işaretlenir.