是否可以在从属节点/工作节点上创建Jenkins工件?

时间:2020-10-10 07:28:38

标签: jenkins jenkins-pipeline

在管道样式脚本中,如果我想将文件存储为Jenkins工件,则使用:

archiveArtifacts artifacts: 'path/goes/here'

当文件与Jenkins本身在同一节点上运行时,此方法工作正常(我们将其称为master节点)。如果我有一个在工作节点上生成的文件,并且想将其存储为Jenkins工件,那么我想我可以做同样的事情。这是一个示例管道:

timeout(time: 4, unit: 'HOURS') {

    node('master') {
        archiveArtifacts artifacts: '1.txt'
    }
        
    node("worker") {
        archiveArtifacts artifacts: '2.txt'
    }

}   

此脚本成功完成了人工制品1.txt的工作,但是在我尝试人工制造物2.txt时挂起了。这是预期的行为吗?如果不是,那么人们处理不在master Jenkins节点上的工件文件的最常见方式是什么?

1 个答案:

答案 0 :(得分:1)

根据设计,archiveArtifats会将工件连同主数据库上的日志一起归档。期望工作空间是短暂的,作业可以针对任何可用节点和其他可扩展事物运行。节点上的作业不应访问工作空间外部的项目。本地存储不能确保可用性。

您想要的是将归档的工件检索到活动节点。您可以使用Copy Artifact来做到这一点。大型对象可能要花费网络时间。

当然,您可以使用该Shell,并且您可以自由地做它允许做的任何事情。

或者,ArtifactDeployer也可以让您以受控方式在工作区之外进行写操作,但是我想您需要外壳cmd来进行检索,因为我不知道必然会产生人工制品。

相关问题