将数据填充到 VSTS 发布摘要选项卡

2023-12-10

我正在尝试创建一个版本,而不映射 TFS/VSTS 中的现有构建,并在完成后在版本摘要中显示数据。纯文本步骤如下

  • 发布 -> 清空发布定义 -> 添加构建任务 -> 创建发布 -> 部署 -> 在摘要部分查看数据

Release Summary Section

摘要数据可按预期查看,不会出现以下两种情况的任何问题

  1. 构建 -> 创建构建定义 -> 添加任务 -> 保存并排队构建 - 构建成功 -> 查看摘要数据
  2. 发布 -> 空发布定义 -> 链接预定义的构建定义 -> 创建发布 -> 提供成功运行的构建版本 -> 查看摘要数据。

据我们了解,当我们检索给定版本的工件时会出现此问题。我们可以检索构建的结果,但无法对发布执行相同的操作。下面是我们用来读取发布数据的示例代码。如果您能为我们提供有关检索给定版本的工件详细信息的指导,将会非常有帮助。现在,我们在客户端使用以下代码来检索发布工件,但它抱怨release.artifacts 未定义。我们已验证附件文件已保存到给定的文件位置。

var c = VSS.getConfiguration();
c.onReleaseChanged(function (release) {
         release.artifacts.forEach(function (art) {
                var buildid = art.definitionReference.version.id;
// rest of the code is removed here

         });
});

以下是我们寻找解决方案所遵循的参考资料,

  • https://github.com/Microsoft/vsts-tasks/blob/master/docs/authoring/commands.md

  • 如何从 VSTS 发布摘要选项卡检索构建附件

  • https://github.com/Microsoft/vsts-extension-samples/blob/master/release-management/deployment-status-enhancer/scripts/main.js

  • https://github.com/Microsoft/vsts-extension-samples/blob/master/release-management/deployment-status-enhancer/index.html

  • https://www.visualstudio.com/en-us/docs/integrate/extensions/reference/client/core-sdk#method_getConfiguration


我能够找到这个问题的答案。我在此分享同样的内容供其他人参考。

如果我们不链接工件(构建定义),那么发布/发布定义的工件将不会填充数据,因此我们将无法引用作为构建的一部分上传的附件。

因此,根据当前的 API 实现,以下是实现此要求所需遵循的步骤。

  • 当扩展作为构建任务运行时将数据写入日志
  • 构建完成后读取上述数据(在客户端)
  • 在发布选项卡中显示检索到的(如果需要则进行处理)数据。

我发现下面的代码解释了从日志中检索数据(参考 : https://github.com/Dynatrace/Dynatrace-AppMon-TFS-Integration-Plugin/blob/master/src/enhancer/dynatrace-testautomation.ts)

public initialize(): void {
        super.initialize();
        // Get configuration that's shared between extension and the extension host
        var sharedConfig: TFS_Release_Extension_Contracts.IReleaseViewExtensionConfig = VSS.getConfiguration();
        if(sharedConfig) {
            // register your extension with host through callback
            sharedConfig.onReleaseChanged((release: TFS_Release_Contracts.Release) => {
                // get the dynatraceTestRun attachment from the build
                var rmClient = RM_Client.getClient();
                var LOOKFOR_TASK = "Collect Dynatrace Testrun Results";
                var LOOKFOR_TESTRUNDATA = "\"testRunData\":";

                var drcScope = this;

                release.environments.forEach(function (env) {
                    var _env = env;
                    //project: string, releaseId: number, environmentId: number, taskId: number
                    rmClient.getTasks(VSS.getWebContext().project.id, release.id, env.id).then(function(tasks){
                        tasks.forEach(function(task){
                            if (task.name == LOOKFOR_TASK){
                                rmClient.getLog(VSS.getWebContext().project.id, release.id, env.id, task.id).then(function(log){
                                    var iTRD = log.indexOf(LOOKFOR_TESTRUNDATA);
                                    if (iTRD > 0){
                                        var testRunData = JSON.parse(log.substring(iTRD + LOOKFOR_TESTRUNDATA.length, log.indexOf('}',iTRD)+1));

                                        drcScope.displayDynatraceTestRunData.bind(drcScope);
                                        drcScope.displayDynatraceTestRunData(_env.name, testRunData);
                                    }
                                });
                            }
                        });
                    });
                });
            });

            sharedConfig.onViewDisplayed(() => {
                VSS.resize();
            });

        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据填充到 VSTS 发布摘要选项卡 的相关文章