如何在Jenkins管道中检索动态命名的存储库?

i86rm4rw  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(138)

我有一个Jenkins pipeline,它使用matrix指令在不同的工作环境中运行一套自动化测试。最后,我想在收集它们之前a将各种测试套件运行的代码覆盖率输出合并到一个文件中,以确保结果是准确的。这听起来应该很简单:
1.对于每个矩阵像元,根据矩阵像元值使用唯一的存储名称存储coverage输出文件。
1.测试运行完成后,将“主”工作线程上的所有文件解压缩并合并。
然而,由于存储库是动态命名的,这使得第二步很困难。这似乎给我留下了三个选择:

  • 在取消隐藏时再次硬编码矩阵轴。不是特别吸引人。
  • 以编程方式检索矩阵轴。看起来 * 应该 * 是可能的,但我不确定如何从表示矩阵阶段的FlowNodeWrapper转到底层的轴字符串。
  • 列出构建的所有存储,并选择我想要的。如果可能的话,这也是一个可行的解决方案,因为存储名称遵循一个模式,但我甚至不知道从哪里开始。在Jenkins问题板上有一个与此相关的open issue,但它似乎不会很快移动。

简而言之:我如何才能做到这一点?我如何才能做到:

  • FlowNodeWrapper到矩阵轴?
  • 用另一种方式找到我的藏货?
4xy9mtcn

4xy9mtcn1#

1.对于每个矩阵像元,根据矩阵像元值使用唯一的存储名称存储coverage输出文件。
我对matrix不熟悉,所以我不知道怎样才能得到一个唯一的名字,但是在很多情况下,你可以使用env.STAGE_NAME
2.测试运行完成后,将“主”工作线程上的所有文件解压缩并合并。
在第一步中,记录你使用过的藏匿姓名,然后第二步就很简单了。
使用脚本化的管道,这很容易:

def stashes = [:]
…
stage(…) {
    …
    String stash_name = env.STAGE_NAME
    stash stash_name, …
    stashes[stash_name] = 1
}
…
stage('Coverage analysis') {
    for (stash_name in stashes) {
        unstash stash_name
    }
    …
}

我不知道这是否适用于声明性管道。

相关问题