在Jenkins pipline中使用CopyArtifact

时间:2017-03-20 15:53:54

标签: jenkins groovy jenkins-pipeline

我想在Jenkins groovy管道中使用CopyArtfact进行循环。像这样:

for (n in branches_numbers)
{
    def buildNum = n.value.toString()
    print '------------------------' + n.value + 'n' + ' ' + buildNum
    step([$class: 'CopyArtifact', filter: 'Tests_Outputs/*.log', fingerprintArtifacts: true, flatten: true, projectName: 'ola_temp', selector: [$class: 'SpecificBuildSelector', buildNumber: '222']])
}   
  1. 该步骤未运行。只有第一次迭代的打印工作,然后脚本结束循环。当我把步骤放在循环外面时,它就可以了。

  2. 我在将变量放入buildNumber字符串时也遇到了问题。我想做这样的事情:

    def buildNum = n.value.toString()
    step([$class: 'CopyArtifact', filter: 'Tests_Outputs/*.log', fingerprintArtifacts: true, flatten: true, projectName: 'ola_temp', selector: [$class: 'SpecificBuildSelector', buildNumber: buildNum]])
    
  3. 这个问题的背景是,我在jenkins工作,运行许多构建(有时10个,但有时更多)。我想将所有构建中的工件复制到一个地方。

2 个答案:

答案 0 :(得分:0)

我已经知道如何使用步骤迭代for循环。我的'branches_numbers'是一个地图,因此解决方案是迭代值:

for (n in branches_numbers.values)
{
    buildNum = n.toString()
    step([$class: 'CopyArtifact', filter: 'Tests_Outputs/*.log', fingerprintArtifacts: true, flatten: true, projectName: childJobName, selector: [$class: 'SpecificBuildSelector', buildNumber: buildNum], target: '.']) 

或将值放入某个列表然后遍历它。它还使用变量'buildNum'。 这两个问题都解决了。

答案 1 :(得分:0)

您可以遍历Map值列表。

BottomSheetBehavior.BottomSheetCallback