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
- GitHub'ın "Job Summary" ekranında
IQV Platform CI Quality Resultbaşlığıyla özet bir rapor gösterilir. iqv-platform-ci-quality-reportadı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.ymlvedocs/*.mddosyaları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 Auditjob'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 Coveragejob'unun ürettiğiiqv-platform-ci-metricsartifact'ine bağımlıdır. Bu artifact bir nedenle oluşmazsa (örn.npm ciadımı job daha coverage adımına ulaşmadan başarısız olursa), rapor çökmez; ilgili alanlar "Unavailable" olarak işaretlenir.