Ana içeriğe geç

Windows Native Service — Canlı E2E

Durum özeti

Kanıt Değer
IMPLEMENTED YES
AUTOMATED TESTED YES
LIVE E2E VALIDATED YES

Kanıt notu: Windows lab, Ağustos 2026. Bu sayfadaki PASS sonuçları o lab ortamında gerçekten çalıştırılmış ve başarılı kabul edilmiştir. Unit/script AUTOMATED PASS sonuçları canlı E2E yerine geçmez; burada listelenen maddeler canlıdır.

Operasyon referansı: Windows servis kurulumu, Güncelleme ve geri alma, Yükleyici doğrulama matrisi.

Canlı E2E sonuçları (45 PASS)

# Senaryo Status Notlar
1 Clean install PASS
2 Administrator validation PASS
3 Windows AMD64 validation PASS
4 Repository root detection PASS
5 .env detection/validation PASS
6 Git prerequisite PASS
7 Go prerequisite PASS
8 MongoDB Windows service Running PASS MongoDB yükleyici tarafından kurulmaz
9 MongoDB TCP 27017 PASS
10 HTTP port availability PASS
11 go mod download / verify PASS
12 go vet PASS
13 go test ./... -count=1 PASS
14 Windows binary build PASS
15 Application check PASS
16 Runtime backup PASS
17 Runtime binary deployment PASS
18 Runtime config deployment PASS
19 MongoDB migrations PASS Migration geri alınmaz
20 Native Windows Service registration PASS
21 Correct exe/argv ImagePath registration PASS
22 LocalService account PASS
23 Automatic Delayed Start PASS
24 MongoDB service dependency PASS
25 Recovery: 5s / 10s / 30s; reset 86400 PASS
26 Windows Firewall Domain/Private PASS
27 Service start PASS
28 health/live PASS
29 health/ready PASS
30 Deployment metadata PASS
31 Build metadata: version, commit, build UTC, Go version, OS, arch PASS
32 Windows reboot PASS Yeniden başlatma sonrası manuel Start-Service olmadan: MongoDB=Running, IQVIntegrationAPI=Running, Port=Listening, health/live=alive, health/ready=ready
33 NO-OP update PASS Aynı deployed/target commit: backup yok, build yok, migration yok, restart yok. Ölçüm: Before backups=2, After backups=2
34 ForceRedeploy PASS Gerçek deployment; backup +1; servis yeniden başladı; health geçti
35 Runtime config preservation during update PASS SHA256 unchanged
36 Automatic update rollback PASS LAB-only TestFailAt=AfterBinarySwap: Service stopped → Binary swap → Injected failure → Automatic rollback → Binary restored → Config restored → Service automatically restarted → health/live OK → health/ready OK
37 Rollback process exit code PASS Failed deployment + successful rollback → Process ExitCode = 11 (EXIT_SERVICE_UPDATE). Rollback başarılı olsa bile update başarı çıkış kodu 0 dönmedi
38 Failed deployment metadata preservation PASS Başarısız deployment başarılı metadata olarak yazılmadı
39 status.ps1 PASS Service Running, Delayed Auto Start, LocalService, PID, Version, Commit, Port, MongoDB, health/live, health/ready, Firewall, recent error log; ExitCode = 0
40 Safe uninstall PASS Service removed, Firewall removed, Port closed; Runtime/Binary/Config/Logs/Backups/Metadata preserved; MongoDB untouched
41 Preserved Runtime Reinstall PASS Scenario=PreservedRuntimeReinstall; Config Preserved=True, Copied=False; SHA256 before/after unchanged; Service yeniden kuruldu; Health geçti
42 ServiceRepair / install idempotency PASS Servis Running iken install.ps1 tekrar; Scenario=ServiceRepair; Port ownership: OwningProcess == Win32_Service.ProcessId; Own listener false conflict değil; Service stopped → Port released → Binary deployed → Config preserved → Existing service detected → Duplicate service yok → Firewall duplicate yok → Service yeniden başladı → Health geçti
43 Firewall idempotency PASS Before rules=1, After rules=1
44 Config hash preservation ServiceRepair PASS Before SHA256 == After SHA256
45 Step counter PASS Installer [1/29] … [29/29] tutarlı

Issues Found During Validation

Windows lab E2E sırasında tespit edilip düzeltilen gerçek hatalar.

ID Problem Detected Fixed Automated regression Live E2E retest
A Git tag olmayan repository: git describe fatal → PowerShell NativeCommandError. Çözüm: tag optional; dev-<sha> fallback Yes Yes Yes (GitMetadata.Tests.ps1) PASS
B Windows ImagePath whole-command quoting: exe+args tek quote. Çözüm: exe ve argv ayrı CreateService parametreleri Yes Yes Yes (imagepath_test.go / related) PASS
C Runtime config self-copy: config\.env kendi üzerine Copy-Item. Çözüm: update config preserve + path equality protection Yes Yes Yes (Install/Update script tests) PASS
D Update failure sonrası service Stopped; transactional rollback yoktu. Çözüm: automatic rollback Yes Yes Yes (UpdateRollback.Tests.ps1) PASS (TestFailAt)
E Duplicate dirty warning. Çözüm: tek merkezi warning Yes Yes Partial / script coverage PASS
F status.ps1 $PID: PowerShell built-in PID read-only. Çözüm: ServiceProcessId Yes Yes Yes (Status.Tests.ps1) PASS
G Preserved-runtime reinstall ImagePath ERROR_INVALID_PARAMETER: CreateService sonrası redundant UpdateConfig. Çözüm: duplicate ImagePath mutation kaldırıldı Yes Yes Yes (Install.Tests.ps1) PASS
H Reinstall config overwrite. Çözüm: preserve by default; -ReplaceRuntimeConfig explicit Yes Yes Yes (Install.Tests.ps1) PASS
I ServiceRepair own-port false conflict: yalnız “port occupied”. Çözüm: SCM ProcessId == TCP OwningProcess Yes Yes Yes (PortOwnership.Tests.ps1) PASS
J Step counter mismatch. Çözüm: 29 Write-Step / 29 denominator Yes Yes Install script review PASS

Çıkış kodları (Windows service betikleri)

Kaynak: scripts/windows/service/Common.ps1

Kod Sabit Anlam
0 EXIT_SUCCESS Başarılı
1 EXIT_ADMIN_REQUIRED Yönetici gerekli
2 EXIT_ENV_INVALID Ortam geçersiz
3 EXIT_PREREQUISITE Ön gereksinim
4 EXIT_REPO_DIRTY Depo kirli / git hatası
5 EXIT_DEP_DOWNLOAD Bağımlılık indirme
6 EXIT_VET_TEST Vet/test
7 EXIT_BUILD Derleme
8 EXIT_CHECK_FAILED Application check
9 EXIT_BACKUP Yedek
10 EXIT_MIGRATION Migrasyon
11 EXIT_SERVICE_UPDATE Servis güncelleme / status unhealthy install state
12 EXIT_FIREWALL Firewall
13 EXIT_HEALTH Health
14 EXIT_ROLLBACK Rollback başarısız
15 EXIT_PORT_CONFLICT Port çakışması
16 EXIT_DOCKER_NA Docker N/A
17 EXIT_SYSTEMD_NA systemd N/A

İlgili