Ana içeriğe geç

Sürüm Süreci

flowchart LR
  tag[Git etiket vX.Y.Z] --> ci[CI testleri]
  ci --> build[build-release.ps1]
  build --> art[4 platform artifact]
  art --> sha[SHA256SUMS]
  sha --> man[release-manifest.json]
  man --> val[validate-release.ps1]
  val --> gh[GitHub Release]
  gh --> dep[Manuel müşteri kurulumu]
  1. release/vX.Y.Z üzerinde stabilize edin.
  2. main ile birleştirin.
  3. Hedef commit’e vX.Y.Z etiketini koyun.
  4. .github/workflows/release.yml derler, doğrular ve GitHub Release yayınlar.
  5. Müşteri kurulumu indirilen arşivden manuel bir operasyon adımıdır.

Bir uygulama sürümü = bir GitHub Release. Dört platform arşivi aynı sürüm ve commit’i taşır.

Sürüm varlıkları (v1.0.0 örneği)

text iqv-integration-api-v1.0.0-windows-native-amd64.zip iqv-integration-api-v1.0.0-windows-docker-amd64.zip iqv-integration-api-v1.0.0-linux-native-amd64.tar.gz iqv-integration-api-v1.0.0-linux-docker-amd64.tar.gz SHA256SUMS release-manifest.json

Varlık Platform Gerçek içerik
*-windows-native-amd64.zip Windows Native Kaynak ağacı + mevcut scripts/windows/service. Host’ta Go ve Git gerekir. Prebuilt exe değildir.
*-windows-docker-amd64.zip Windows Docker Kaynak + Dockerfile/compose + mevcut kurucu. Host docker build çalıştırır. Docker Desktop Linux containers. Açılmış zip release-package mode (manifest; .git/clone yok). Offline image tar değildir.
*-linux-native-amd64.tar.gz Linux Native Offline prebuilt binary + scripts/install.sh. Müşteri host’ta Go/Git yok.
*-linux-docker-amd64.tar.gz Linux Docker Offline prebuilt OCI image/*.tar + compose + kurulum. Müşteri host’ta docker build yok.

İç Linux paketleyici adları (iqv-integration-api-<sürüm>-linux-amd64.tar.gz) mevcut builder çıktısıdır. Orchestrator bunları yukarıdaki GitHub Release adlarına kopyalar.

Sürüm ve commit

  • Üretim kaynağı etikettir (v1.0.0, v1.0.0-rc.1).
  • release-manifest.json version etiketle aynı olmalıdır.
  • commit o etiketin tam Git SHA değeridir.
  • Artifact dosya adları aynı sürüm dizesini içermelidir.
  • Kararlı vX.Y.Z kirli worktree’de fail closed çalışır. Kararlı sürümde -AllowDirty reddedilir.

Yerel üretim adayı (temiz ağaç)

powershell .\scripts\release\build-release.ps1 -Version v1.0.0 .\scripts\release\validate-release.ps1 -Version v1.0.0 -RequireClean

Lab / kirli ağaç (v1.0.0 için değil):

powershell .\scripts\release\build-release.ps1 -Version v0.0.0-testdev -AllowDirty -SkipGitChecks -Commit <full-sha> -SkipQuality -SkipDocs

GitHub Releases’ten indirme

  1. Depo Releases sayfasından etiketi seçin (örnek v1.0.0).
  2. Platform arşivini ve SHA256SUMS + release-manifest.json indirin.
  3. Açmadan / kurmadan önce checksum doğrulayın.

SHA256 doğrulama

Linux:

bash sha256sum -c SHA256SUMS

Windows (PowerShell):

powershell Get-Content .\SHA256SUMS | ForEach-Object { if ($_ -match '^([0-9a-fA-F]{64}) (.+)$') { $actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $Matches[2]).Hash.ToLower() if ($actual -ne $Matches[1].ToLower()) { throw "Mismatch $($Matches[2])" } } }

Manifest doğrulama

release-manifest.json dört artifact’ı platform, deployment, arch, file, sha256 ile listeler. scripts/release/validate-release.ps1 checksum, arşiv içeriği ve secret taramasını yapar.

İndirdikten sonra kurulum

  • Windows Native: zip’i açın, .env.example → .env, scripts\windows\service\install.ps1. Windows Native.
  • Windows Docker: zip’i açın, .env.example → env dosyası, Docker Desktop Linux containers + harici MongoDB ile .\scripts\install.ps1. .git / clone zorunlu değildir (release-package mode). Windows Docker.
  • Linux Native: tar.gz açın, sudo ./scripts/install.sh. Linux Native.
  • Linux Docker: tar.gz açın, sudo ./scripts/install.sh (image/*.tar yükler). Linux Docker.

GitHub Actions

.github/workflows/release.yml:

  • Tetik: v*.*.* etiket push veya mevcut etiketi yeniden üreten workflow_dispatch.
  • Tam o etiketi checkout eder, build-release.ps1 ve validate-release.ps1 çalıştırır.
  • GitHub Release oluşturur veya günceller; yeniden çalışmada --clobber ile aynı adları değiştirir.
  • v1.0.0 kararlıdır. v1.0.0-rc.1 prerelease olarak yayınlanır.

İş akışı etiket oluşturmaz. Operatör etiketi yerelde koyup push eder.

Kabul listesi

Etiketlemeden önce Sürüm Kabul Kontrol Listesi.

Sürüm meta verisi: docs/site-meta.yml (gerçek yayın olana kadar unreleased).

Etiketle uyum (körlemesine yayın iddiası yok):

powershell python scripts/docs/apply_docs_version.py --version v1.0.0 --check python scripts/docs/apply_docs_version.py --version v1.0.0 --write

Release CI paketlemeden sonra ephemeral workspace için IQV_RELEASE_ALIGN_DOCS=1 kullanabilir. Landing IQV_DOCS_VERSION kabul eder.