Ana içeriğe geç

CI/CD: pipeline ve kanıt paketleri

Adres: /cicd · Sayfa yetkisi: settings.manage. Pipeline dosyası üretimi de bu izni ister. Otomatik PR/MR için etkin bir SCM bağlantısı, depo keşfi için scans.write ve yazma yetkili sağlayıcı bağlantısı gerekir. Kanıt paketi için erişilebilir, tamamlanmış bir tarama gerekir.

Bu ekran üç sekmeden oluşur: Pipeline dosya üretir, Setup guide seçili CI sağlayıcısı için kurulum adımlarını gösterir, Evidence packages bir taramayı kaynak/commit ve ek kanıtlarla bağlar. Dosya üretmek CI sağlayıcısında otomatik kurulum yapmaz; otomatik PR yolu seçilmedikçe dosyayı deponuza siz eklersiniz.

Desteklenen sağlayıcılar ve dosya konumu

Sağlayıcı Üretilen varsayılan dosya Kimlik bilgisinin saklanacağı yer
GitHub Actions .github/workflows/tracemint.yml Repository/organization Secrets
GitLab CI .gitlab-ci.yml Settings → CI/CD → Variables
Bitbucket Pipelines bitbucket-pipelines.yml Repository settings → Repository variables
Jenkins Jenkinsfile ve uygun olduğunda shared library Manage Jenkins → Credentials
Azure DevOps azure-pipelines.yml Pipelines → Library veya pipeline variables
CircleCI .circleci/config.yml Project Settings → Environment Variables veya Contexts
Buildkite .buildkite/pipeline.yml Pipeline environment hooks / secrets

İlk pipeline dosyasını hazırlama

  1. Pipeline sekmesinde soldan CI sağlayıcısını seçin. Sağlayıcı değişince önceki üretilmiş dosya temizlenir; yeni sağlayıcı için yeniden üretin.
  2. Project & scan mode altında TraceMint projesini seçin. Fast tek geçiş, Balanced LLM + judge, Deep kapsamlı denetimdir. Ekran ilk açıldığında Fast seçilidir; iş yükünüze göre değiştirin.
  3. Triggers & quality gate altında en az bir tetikleyici açın: pull/merge request, branch push, tag/release, manuel veya zamanlanmış çalıştırma. PR/MR hedef dallarını virgülle ayırabilirsiniz; boş bırakmak tüm hedefleri kapsar. Skip draft PRs taslakları atlar; GitHub'da Merge queue support da açılabilir. Push için dal, tag için desen belirtin. Zamanlama için cron ifadesi ve Scheduled depth seçin; Same, ana tarama modunu kullanır.
  4. Fail the pipeline at or above eşiğini seçin: Off bulguları raporlar ama severity nedeniyle hattı kırmaz; Critical, High+, Medium+ ilgili seviyeden başlayarak başarısız yapar. Block new findings, seçilen Baseline branch ile karşılaştırmada yeni bulgu varsa ayrıca hattı kırar. Bu ayarları teslim politikası sahibiyle kararlaştırın.
  5. Outputs'ta sağlayıcının desteklediği SARIF/SAST raporu, evidence artifact ve PR/MR özeti seçeneklerini belirleyin. Görünen seçenekler sağlayıcıya göre değişir; her sağlayıcıya aynı yorum veya kod tarama yüklemesi yapılacağını varsaymayın.
  6. Advanced settings altında baseline branch, monorepo Path filters, 5–120 dakika arasında timeout, özel TraceMint API URL, kategori filtresi ve Buildkite agent queue gibi alanları yalnız ihtiyaç varsa doldurun. GitHub Reusable workflow seçeneği merkezi bir repodan çağırma senaryosudur.
  7. Generate configuration'a basın. Sağdaki önizlemede dosya adını ve tam içeriği kontrol edin. Copy veya Download ile dosyayı deponuzdaki tabloda belirtilen yola koyun. Jenkins için shared library dosyası da üretildiyse onu ayrıca indirin.
  8. Setup guide sekmesinde aynı sağlayıcının kimlik yolu, token adı ve çalıştırma gereksinimlerini izleyin. CI gizli değişkenlerini sağlayıcı tarafında tanımlayın; üretilen dosyaya gerçek API anahtarı yapıştırmayın.
  9. Pipeline'ı gerçekten çalıştırın. CI sonucu, kalite kapısı, SARIF/özet artifact'ı ve hata halinde başarısız iş durumunu kontrol edin. Üretilen yapılandırma TraceMint API'si ulaşılamazsa veya tarama/çıktı eksikse başarısız olmayı hedefler; sağlayıcınızdaki ilk çalıştırmayı ayrıca doğrulayın.

Kimlik bilgisi: Pipeline yönergesi TRACEMINT_URL, TRACEMINT_PROJECT_ID, TRACEMINT_API_KEY (Jenkins'te ayrı credential adları) kullanır. Tarama anahtarının en az scans.write, scans.read, findings.read izinlerini taşıması gerekir. Anahtar oluşturma settings.manage ister; ham anahtar yalnız oluşturulduğu anda gösterilir. SCM otomasyon kimliği ile tarama anahtarını ayrı tutun.

API anahtarı kapsamı

Mevcut Settings → API Keys formunda scan.run ve export.create gibi eski seçenekler de görünebilir; backend bu adları kabul etmez. Geçerli RBAC adları scans.write, scans.read, findings.read, export.read biçimindedir. Formda proje seçimi yoktur. Projeye sınırlı anahtar gerektiğinde POST /api/v1/api-keys çağrısında project_ids ve geçerli izinleri kullanın; * veya organizasyon geneli izinler project_ids ile birleştirilemez.

Otomatik pipeline PR/MR

Bu yol yalnız GitHub, GitLab ve Bitbucket Cloud SCM bağlantıları için görünür. Azure DevOps, CircleCI, Buildkite ve Jenkins dosyalarını önizleyip elle repoya ekleyin.

  1. Pipeline sekmesinde yapılandırmayı tamamlayın ve Automated pipeline PR bölümünü açın.
  2. SCM connection seçin; Discover repositories'e basın. Depo listesi yalnız bu işlemle sağlayıcıdan çekilir. Target repository seçin. Seçilen TraceMint projesinin Git URL'siyle eşleşen depo varsa arayüz onu önerebilir; hedefi yine kontrol edin.
  3. Oluşturulacak dosyayı ve tracemint/add-<sağlayıcı>-pipeline-* dal bilgisini inceleyin. Create pull request / merge request ile incelenebilir değişikliği açın.
  4. Sonuç bağlantısından PR/MR'ı ve evidence manifest özetini kontrol edin. Bu adım merge işlemi yapmaz. Daha önce dosya varsa otomatik PR akışı mevcut içeriğin üzerine yazılmasını talep eder; diff'i dikkatle inceleyin.

Depo listesi boşsa SCM bağlantısının erişim kapsamını ve sağlayıcı izinlerini Integrations → Source Control altında doğrulayın. GitHub/GitLab/Bitbucket dışındaki sağlayıcılar için önizleme ve indirme yolunu kullanın.

Evidence packages: tamamlanmış taramadan kanıt

  1. Evidence packages sekmesini açın ve Completed scan seçin. Liste en son 50 taramadan tamamlananları gösterir; tarama yoksa önce tarama çalıştırın.
  2. Repository (owner/repo), gerçek Commit SHA ve Ref (refs/heads/main gibi) girin. Bunlar zorunludur. Müşteri etiketi ve dağıtım biçimini (CI/SARIF only, on-prem bundle, AWS SaaS, customer VPC) ihtiyaca göre seçin.
  3. CI run links altında workflow run, artifact, check run, code scanning, SARIF upload kimliği/URL'si ve GitHub issue URL'lerini ekleyebilirsiniz. Issue URL'lerini satır başına bir tane girin. Bu alanlar isteğe bağlıdır; mevcutsa kanıt zincirini güçlendirir.
  4. Preview evidence gate'e basın. Sonuçta Complete/Incomplete kalite kontrolünü, eksik maddeleri, paket SHA-256 özetini, bulgu/bilet/audit sayılarını ve beklenen ZIP dosyalarını okuyun.
  5. Download JSON önizlenen paketi indirir. Download signed ZIP yalnız kalite kapısı geçtiğinde etkinleşir. İndirilen ZIP'in bütünlüğünü sonuçta gösterilen çevrimdışı doğrulama komutu ve onaylanmış public key ile kontrol edin.

Önizleme kanıtı bir araya getirir; eksik gereksinimleri gizleyip sahte başarılı paket üretmez. Tarama/commit/ref yanlışsa hatayı düzeltip yeniden önizleyin.

Sorun giderme

Belirti İlk kontrol
Generate configuration pasif Bir proje seçin; sayfaya erişim için settings.manage gerekir.
CI hattı beklenmedik biçimde geçiyor Eşiğin Off olup olmadığını ve üretilen dosyada gerçek kalite kapısı durumunun okunduğunu kontrol edin.
PR/MR düğmesi pasif Proje, etkin SCM bağlantısı ve hedef repo seçimini; scans.write ile depo keşfini kontrol edin.
Repo listesi boş Discover repositories'e basın; sonra SCM sağlayıcısında depo erişimini inceleyin.
Evidence ZIP pasif Önizlemedeki başarısız kalite kontrollerini tamamlayıp yeniden deneyin.

Kaynak dayanağı: frontend/src/pages/CICDPage.tsx, frontend/src/components/cicd/SetupGuide.tsx, frontend/src/components/cicd/EvidencePanel.tsx, api/routers/cicd.py, api/routers/api_keys.py, api/middleware/auth.py.