jenkins - 是否可以在代理/工作节点上创建 Jenkins 工件?
问题描述
在管道样式脚本中,如果我想将文件存储为 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 节点上的工件文件的最常见方式是什么?
解决方案
根据设计,archiveArtifats 将工件与主服务器上的日志一起归档。期望工作空间是短暂的,作业可以针对任何可用节点和其他可扩展的东西运行。节点上的作业不应访问工作区之外的项目。本地存储并不能确保可用性。
您想要的是将存档的工件检索到您的活动节点。您可以使用Copy Artifact来做到这一点。对于大型对象,这可能需要网络时间。
当然,你可以使用 shell,你也可以自由地做任何 shell 允许你做的事情。
或者,ArtifactDeployer还可以让您以受控的方式在工作区之外编写,但我想您需要 shell cmd 来检索,因为我不知道必然的 Artifact Retriever。
推荐阅读
- java - 如何在 KeyCloak 中获取复合角色
- c# - 查询具有特定属性的深层子对象,但返回级联的根对象
- typescript - 如何将查询参数添加到 useFirestoreConnect
- node.js - 如何在嵌套对象属性上使用 MongoDB $ne
- python - 如何添加涟漪效果?
- php - 如果在数组中,则将选定属性添加到下拉列表项
- java - 如何在不加载到内存的情况下调整图像大小?在java中在windows中
- sass - NUXT JS SassError:未定义的变量“$black”
- node.js - Node JS:如何检查目标机器上是否安装了依赖应用程序?
- docker - docker内的prometheus没有刮取node_exporter