Trabajo de lanzamiento de Azure DevOps SQL Dacpac: extracción de variables de compilación
Tengo una canalización de CI/CD en ejecución que libera una base de datos (Visual Studio 2017 + SSDT) en canalizaciones de Azure DevOps. El proceso funciona bien, sin embargo, estoy tratando de registrar información de compilación en la base de datos.
Creé una tabla de registro para registrar información de compilación y la usé como referencia para la información que quiero registrar. Configuré las variables en la sección "Variables SQLCMD" de Propiedades del proyecto para que coincidan con las que quiero (BuildID, Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceBranch, Build.SourceVersion, Build.SourceMessage).

Puse en "Argumentos SQLPackage.ext adicionales" para la versión de Azure DevOps el sqlcmd para extraer estos parámetros:
/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)
Creé un script posterior a la implementación que registrará estos valores en una tabla de registro. Teóricamente, cada vez que un lanzamiento tiene éxito, la información de compilación debe registrarse:
INSERT INTO dbo.ReleaseLog ([BuildID],[TriggeredBy],[Reason],[SourceBranch],[SourceVersion],[SourceVersionMessage])
VALUES ('$(BuildID)','$(BuildTriggeredBy)','$(BuildReason)','$(BuildSourceBranch)','$(BuildSourceVersion)','$(BuildSourceMessage)')
Algunos de estos funcionan bien, pero otros no funcionan en absoluto. Los que funcionan son: BuildID, SourceBranch, SourceVersion
Los que no lo hacen (y devuelven "$(VariableName)") son: Build.TriggeredBy.DefinitionName, Build.Reason, Build.SourceVersion

¿Alguien sabe por qué? He comprobado todas las variables y parecen estar bien. Creo que todas las variables que incluyo deberían estar disponibles al final del lanzamiento. Parece extraño que algunas de las variables funcionen cuando otras no. He verificado tres veces (copié y pegué los nombres de las variables entre VS y la tubería de lanzamiento, además copié los nombres exactos del sitio de MS), por lo que no parece un problema de código. ¿Error de Azure DevOps?
Respuestas
Trabajo de lanzamiento de Azure DevOps SQL Dacpac: extracción de variables de compilación
Eso porque creó un script posterior a la implementación en la canalización de lanzamiento , que no pudo obtener todas esas variables predefinidas en la canalización de compilación .
Puede verificar esas variables en la versión clásica y las variables de artefactos . Las variables Build.TriggeredBy.DefinitionName , Build.Reason , Build.SourceVersionMessage no están en las variables de versión clásica y artefactos, sino en Usar variables predefinidas . Esa es la razón por la que no pudo obtener esas variables específicas en su tubería de lanzamiento.
( Dijiste Build.SourceVersion
en tu pregunta, pero de acuerdo con la imagen que proporcionaste, parece que escribiste la variable incorrecta, debería serBuild.SourceVersionMessage
).
Para resolver este problema, puede intentar crear una secuencia de comandos posterior a la implementación en la canalización de compilación .