Azure DevOps SQL Dacpac yayın işi - derleme değişkenlerini ayıklama

Aug 19 2020

Azure DevOps işlem hatlarında bir veritabanı (Visual Studio 2017 + SSDT) ​​yayınlayan bir CI / CD işlem hattım var. İşlem iyi çalışıyor, ancak bazı Yapı bilgilerini veritabanına kaydetmeye çalışıyorum.

Ben yapı Günlük bilgisi için bir günlük tablo oluşturulan ve kullanılan bu ben günlüğe istiyorum bilgisi için bir referans olarak. Proje Özellikleri "SQLCMD Değişkenleri" bölümündeki değişkenleri istediklerimle eşleşecek şekilde ayarladım (BuildID, Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceBranch, Build.SourceVersion, Build.SourceMessage).

Azure DevOps için "Ek SQLPackage.ext Bağımsız Değişkenleri" içine şu parametreleri ayıklamak için sqlcmd'yi yayınladım:

/v:BuildID=$(Build.BuildId) /v:BuildTriggeredBy=$(Build.TriggeredBy.DefinitionName) /v:BuildReason=$(Build.Reason) /v:BuildSourceBranch=$(Build.SourceBranch) /v:BuildSourceVersion=$(Build.SourceVersion) /v:BuildSourceMessage=$(Build.SourceVersionMessage)

Bu değerleri bir günlük tablosuna kaydedecek bir dağıtım sonrası komut dosyası oluşturdum. Teorik olarak bir sürüm başarılı olduğunda, yapı bilgileri günlüğe kaydedilmelidir:

INSERT INTO dbo.ReleaseLog ([BuildID],[TriggeredBy],[Reason],[SourceBranch],[SourceVersion],[SourceVersionMessage]) 
VALUES ('$(BuildID)','$(BuildTriggeredBy)','$(BuildReason)','$(BuildSourceBranch)','$(BuildSourceVersion)','$(BuildSourceMessage)')

Bunlardan bazıları iyi çalışıyor, ancak diğerleri hiç çalışmıyor. Çalışanlar şunlardır: BuildID, SourceBranch, SourceVersion

Yapmayanlar (ve "$ (VariableName)" döndürmeyenler) şunlardır: Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceVersion

Nedenini bilen var mı? Tüm değişkenleri kontrol ettim ve iyi görünüyorlar. Dahil ettiğim tüm değişkenlerin sürümün sonunda mevcut olması gerektiğine inanıyorum. Bazı değişkenlerin diğerleri işe yaramadığında işe yaraması garip görünüyor. Üç kez kontrol ettim (değişken isimlerini VS ile yayın hattı arasına kopyalayıp yapıştırdım, ayrıca MS sitesinden tam isimleri kopyaladım), bu yüzden bir kod problemi gibi görünmüyor. Azure DevOps hatası mı?

Yanıtlar

1 LeoLiu-MSFT Aug 20 2020 at 15:55

Azure DevOps SQL Dacpac yayın işi - derleme değişkenlerini ayıklama

Bunun nedeni, sürüm ardışık düzeninde, derleme ardışık düzenindeki tüm bu önceden tanımlanmış değişkenleri alamayan bir dağıtım sonrası komut dosyası oluşturduğunuz içindir .

Bu değişkenleri Klasik sürümde ve yapı değişkenlerinde kontrol edebilirsiniz . Değişkenler Build.TriggeredBy.DefinitionName , Build.Reason , Build.SourceVersionMessage o, Klasik bırakma ve eserler değişkenleri olmayan Kullanım değişkenleri önceden tanımlanmış . Yayın hattınızda bu değişkenleri belirleyememenizin nedeni budur.

( Sorunuzda söylediniz Build.SourceVersion, ancak sağladığınız resme göre yanlış değişkeni yazmışsınız gibi görünüyor, olmalıBuild.SourceVersionMessage ).

Bu sorunu çözmek için, derleme ardışık düzeninde dağıtım sonrası komut dosyası oluşturmayı deneyebilirsiniz .