从Azure DevOps发布管道获取版本号和内部版本号以显示在网站中

时间:2019-09-01 12:54:30

标签: azure-devops azure-web-sites azure-pipelines

我希望能够在Asp.Net MVC Core网站中显示发布号(图片中的* 1)和内部版本号(图片中的* 2)-对于该特定网站,该网站是由Azure构建和发布的DevOps。

因此,如果我签入MVC网站的代码,则构建和发布过程将启动并部署该网站-现在,我希望同一网站在页脚中显示“发布xxxxx”。

它可以存在于JSON文件,环境变量之类的东西中-只要我能从Asp.Net Core访问它,我就很高兴。

那怎么实现?

2 个答案:

答案 0 :(得分:1)

如果要在构建和部署的当前应用程序中显示数据,则可以获取每个环境变量之类的变量的值:

var releaseName = Environment.GetEnvironmentVariable("Release_ReleaseName", EnvironmentVariableTarget.Process);
var buildNumber= Environment.GetEnvironmentVariable("Build_BuildNumber", EnvironmentVariableTarget.Process);

如果要在外部应用程序中显示数据:

您可以使用Azure DevOps Rest API获取所有发行数据。发布的API为Releases - Get Release

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.1

您获得了包含发布信息的大型JSON,其中包括发布名称:

{
    "id":  205,
    "name":  "Release-93",

在工件数组中,您可以获得构建ID(在definitionReference.version.name下):

"version":  {
              "id":  "1439",
              "name":  "TestVars_20190829.1439..11"

因此,在您的Asp.Net MVC Core应用程序中,只需进行GET rest API调用,您便拥有了所有数据。

此外,您可以使用.NET client libraries for Azure DevOps Services并通过GetRelease()方法获取数据:

string projectName = "TestProject";
VssConnection connection = Context.Connection;
ReleaseHttpClient releaseClient = connection.GetClient<ReleaseHttpClient>();

List<WebApiRelease> releases = releaseClient.GetReleasesAsync(project: projectName).Result;

int releaseId = releases.FirstOrDefault().Id;

// Show a release
WebApiRelease release = releaseClient.GetReleaseAsync(project: projectName, releaseId: releaseId).Result;
// Now get the release name and build nubmer

答案 1 :(得分:0)

解决方案似乎是在构建Replace Tokens期间使用Azure Devops插件,该插件在构建/发布期间替换.config文件中的字符串-然后在运行时从代码中访问这些值。

这里有更详细的描述:.NET Core App - How to get build number at runtime