Processo di rilascio di Azure DevOps SQL Dacpac: estrazione delle variabili di compilazione

Aug 19 2020

Ho una pipeline CI/CD in esecuzione che rilascia un database (Visual Studio 2017 + SSDT) ​​nelle pipeline di Azure DevOps. Il processo funziona correttamente, tuttavia sto cercando di registrare alcune informazioni di build nel database.

Ho creato una tabella di registrazione per la registrazione delle informazioni sulla build e l'ho utilizzata come riferimento per le informazioni che desidero registrare. Ho impostato le variabili nella sezione "Variabili SQLCMD" delle proprietà del progetto in modo che corrispondano a quelle che desidero (BuildID, Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceBranch, Build.SourceVersion, Build.SourceMessage).

Ho inserito negli "Argomenti SQLPackage.ext aggiuntivi" per il rilascio di Azure DevOps sqlcmd per l'estrazione di questi parametri:

/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)

Ho creato uno script post distribuzione che registrerà questi valori in una tabella di registrazione. Teoricamente ogni volta che un rilascio ha successo, le informazioni sulla build dovrebbero essere registrate:

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

Alcuni di questi funzionano bene, ma altri non funzionano affatto. Quelli che funzionano sono: BuildID, SourceBranch, SourceVersion

Quelli che non lo fanno (e restituiscono "$(VariableName)") sono: Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceVersion

Qualcuno sa perché? Ho controllato tutte le variabili e sembrano essere OK. Credo che tutte le variabili che sto includendo dovrebbero essere disponibili alla fine del rilascio. Sembra strano che alcune delle variabili funzionino quando altre no. Ho controllato tre volte (nomi delle variabili copiati e incollati tra VS e pipeline di rilascio, oltre a copiare i nomi esatti dal sito MS), quindi non sembra un problema di codice. Bug di Azure DevOps?

Risposte

1 LeoLiu-MSFT Aug 20 2020 at 15:55

Processo di rilascio di Azure DevOps SQL Dacpac: estrazione delle variabili di compilazione

Questo perché hai creato uno script post distribuzione nella pipeline di rilascio , che non è stato in grado di ottenere tutte quelle variabili predefinite nella pipeline di build .

È possibile controllare tali variabili nella versione classica e nelle variabili degli artefatti . Le variabili Build.TriggeredBy.DefinitionName , Build.Reason , Build.SourceVersionMessage non si trovano nella versione classica e nelle variabili artefatti, ma nelle variabili Usa predefinite . Questo è il motivo per cui non è stato possibile ottenere quelle variabili specificate nella pipeline di rilascio.

( Hai detto Build.SourceVersionnella tua domanda, ma secondo l'immagine che hai fornito, sembra che tu abbia scritto la variabile sbagliata, dovrebbe essereBuild.SourceVersionMessage ).

Per risolvere questo problema, puoi provare a creare uno script post distribuzione nella pipeline di compilazione .