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]
release/vX.Y.Züzerinde stabilize edin.mainile birleştirin.- Hedef commit’e
vX.Y.Zetiketini koyun. .github/workflows/release.ymlderler, doğrular ve GitHub Release yayınlar.- 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.jsonversionetiketle aynı olmalıdır.commito etiketin tam Git SHA değeridir.- Artifact dosya adları aynı sürüm dizesini içermelidir.
- Kararlı
vX.Y.Zkirli worktree’de fail closed çalışır. Kararlı sürümde-AllowDirtyreddedilir.
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¶
- Depo Releases sayfasından etiketi seçin (örnek
v1.0.0). - Platform arşivini ve
SHA256SUMS+release-manifest.jsonindirin. - 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/*.taryükler). Linux Docker.
GitHub Actions¶
.github/workflows/release.yml:
- Tetik:
v*.*.*etiket push veya mevcut etiketi yeniden üretenworkflow_dispatch. - Tam o etiketi checkout eder,
build-release.ps1vevalidate-release.ps1çalıştırır. - GitHub Release oluşturur veya günceller; yeniden çalışmada
--clobberile aynı adları değiştirir. v1.0.0kararlıdır.v1.0.0-rc.1prerelease 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.