我希望能够在Asp.Net MVC Core网站中显示发布号(图片中的* 1)和内部版本号(图片中的* 2)-对于该特定网站,该网站是由Azure构建和发布的DevOps。
因此,如果我签入MVC网站的代码,则构建和发布过程将启动并部署该网站-现在,我希望同一网站在页脚中显示“发布xxxxx”。
它可以存在于JSON文件,环境变量之类的东西中-只要我能从Asp.Net Core访问它,我就很高兴。
那怎么实现?
答案 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