Tâche de publication Azure DevOps SQL Dacpac - extraction des variables de build
J'ai un pipeline CI/CD en cours d'exécution qui libère une base de données (Visual Studio 2017 + SSDT) dans les pipelines Azure DevOps. Le processus fonctionne bien, mais j'essaie d'enregistrer des informations de construction dans la base de données.
J'ai créé une table de journalisation pour enregistrer les informations de construction et je l'ai utilisée comme référence pour les informations que je veux enregistrer. J'ai configuré les variables dans la section "Variables SQLCMD" des propriétés du projet pour qu'elles correspondent à celles que je veux (BuildID, Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceBranch, Build.SourceVersion, Build.SourceMessage).

J'ai mis dans les "Arguments SQLPackage.ext supplémentaires" pour la version Azure DevOps le sqlcmd pour extraire ces paramètres :
/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)
J'ai créé un script de post-déploiement qui enregistrera ces valeurs dans une table de journalisation. Théoriquement, chaque fois qu'une version est réussie, les informations de build doivent être enregistrées :
INSERT INTO dbo.ReleaseLog ([BuildID],[TriggeredBy],[Reason],[SourceBranch],[SourceVersion],[SourceVersionMessage])
VALUES ('$(BuildID)','$(BuildTriggeredBy)','$(BuildReason)','$(BuildSourceBranch)','$(BuildSourceVersion)','$(BuildSourceMessage)')
Certains d'entre eux fonctionnent bien, mais d'autres ne fonctionnent pas du tout. Ceux qui fonctionnent sont : BuildID, SourceBranch, SourceVersion
Ceux qui ne le font pas (et renvoient "$(VariableName)") sont : Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceVersion

Quelqu'un sait pourquoi? J'ai vérifié toutes les variables et elles semblent être OK. Je pense que toutes les variables que j'inclus devraient être disponibles à la fin de la version. Il semble étrange que certaines variables fonctionnent alors que d'autres ne fonctionnent pas. J'ai vérifié trois fois (copié et collé les noms de variables entre VS et le pipeline de publication, plus copié les noms exacts du site MS), donc cela ne semble pas être un problème de code. Bogue Azure DevOps ?
Réponses
Tâche de publication Azure DevOps SQL Dacpac - extraction des variables de build
Cela parce que vous avez créé un script de post-déploiement dans le pipeline de publication , qui n'a pas pu obtenir toutes ces variables prédéfinies dans le pipeline de construction .
Vous pouvez vérifier ces variables dans les variables de la version classique et des artefacts . Les variables Build.TriggeredBy.DefinitionName , Build.Reason , Build.SourceVersionMessage ne sont pas dans les variables Classic release et artefacts, mais dans Use predefined variables . C'est la raison pour laquelle vous ne pouviez pas obtenir ces variables spécifiées dans votre pipeline de publication.
( Vous avez dit Build.SourceVersion
dans votre question, mais selon l'image que vous avez fournie, il semble que vous ayez écrit la mauvaise variable, ce devrait être le casBuild.SourceVersionMessage
).
Pour résoudre ce problème, vous pouvez essayer de créer un script de post-déploiement dans le pipeline de build .