Jenkins状态文件的存储与复用及相关技术疑问
Jenkins Pipeline状态文件保存与复用相关问题解答
问题1:如何保存状态文件以便下次Pipeline复用?
有几种常用的实现方式:
- 用
archiveArtifacts步骤(依赖Copy Artifact插件):直接将状态文件归档到Jenkins存储系统,后续Pipeline可通过copyArtifacts拉取历史构建的归档文件复用。 - 存到Jenkins工作区外的持久化目录:如果节点有固定的共享存储路径,可将状态文件复制到该路径,下次构建直接从这里读取(注意跨节点执行时需保证存储可共享)。
- 简单状态用参数/全局变量存储:如果状态是字符串、数值这类简单内容,可将其存入构建参数或Jenkins全局变量,下次构建直接调用。
- 同构建内阶段复用可用
stash/unstash:但该方式仅在当前构建生命周期内有效,无法跨构建复用。
问题2:执行以下代码后,状态文件是否还存在?
post { always { cleanWs() } }
- 状态文件不会保留在当前构建的工作区。
cleanWs()会在构建结束后(无论成功失败)清空整个工作区,包括生成的状态文件。但如果在cleanWs()执行前已经完成归档(比如用archiveArtifacts),那么归档后的文件会保存在Jenkins的专用存储目录,不会被清理。
问题3:archiveArtifacts会将状态文件保存到Jenkins目录的哪个位置?
默认存储路径为Jenkins主目录下的jobs/<你的Job名称>/builds/<构建编号>/archive/:
- 举例:若Job名为
deploy-demo,构建编号是15,完整路径就是$JENKINS_HOME/jobs/deploy-demo/builds/15/archive/,其中$JENKINS_HOME是Jenkins根目录(通常Linux下为/var/lib/jenkins,Windows下为C:\Program Files\Jenkins\.jenkins)。 - 归档文件会保留原工作区的相对目录结构,比如你归档
config/status.json,在archive目录下也会对应生成config/status.json的层级。
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

