Azure DevOps SQLDacpacリリースジョブ-ビルド変数の抽出

Aug 19 2020

Azure DevOpsパイプラインでデータベース(Visual Studio 2017 + SSDT)をリリースするCI / CDパイプラインを実行しています。プロセスは正常に機能しますが、ビルド情報をデータベースに記録しようとしています。

ビルド情報をログに記録するためのログテーブルを作成し、これをログに記録する情報の参照として使用しました。プロジェクトプロパティの[SQLCMD変数]セクションで、必要な変数(BuildID、Build.TriggeredBy.DefinitionName、Build.Reason、Build.SourceBranch、Build.SourceVersion、Build.SourceMessage)と一致するように変数を設定しました。

Azure DevOpsの「追加のSQLPackage.ext引数」に、これらのパラメーターを抽出するためのsqlcmdをリリースします。

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

これらの値をログテーブルに記録する展開後のスクリプトを作成しました。理論的には、リリースが成功するたびに、ビルド情報をログに記録する必要があります。

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

これらの中には正常に機能するものもありますが、まったく機能しないものもあります。動作するものは次のとおりですBuildID、SourceBranch、SourceVersion

しない(そして「$(VariableName)」を返す)ものは次のとおりです:Build.TriggeredBy.DefinitionName、Build.Reason、Build.SourceVersion

誰もが理由を知っていますか?すべての変数を確認しましたが、問題ないようです。私が含めているすべての変数は、リリースの終わりに利用可能になるはずだと思います。一部の変数が機能しないのに機能するのは奇妙に思えます。トリプルチェック(VSとリリースパイプライン間で変数名をコピーして貼り付け、さらにMSサイトから正確な名前をコピー)したので、コードの問題ではないようです。Azure DevOpsのバグ?

回答

1 LeoLiu-MSFT Aug 20 2020 at 15:55

Azure DevOps SQLDacpacリリースジョブ-ビルド変数の抽出

これは、リリースパイプラインで展開後のスクリプトを作成したため、ビルドパイプラインでこれらの事前定義された変数をすべて取得できなかったためです。

これらの変数は、クラシックリリースおよびアーティファクト変数で確認できます。変数Build.TriggeredBy.DefinitionNameBuild.ReasonBuild.SourceVersionMessageは、クラシックリリースおよびアーティファクト変数には含まれていません。事前定義された変数を使用します。そのため、リリースパイプラインでこれらの指定変数を取得できませんでした。

あなたBuild.SourceVersionはあなたの質問で言いました、しかしあなたが提供した画像によれば、あなたは間違った変数を書いたようです、それはそうあるべきですBuild.SourceVersionMessage)。

この問題を解決するには、ビルドパイプラインでデプロイ後のスクリプトを作成してみてください。