相同 Jenkinsfile,两个 JOB 中一个构建成功一个构建失败

本文介绍了在Jenkins中遇到的一个问题,即在同一个JOB中先后使用了不同环境的Jenkinsfile,导致构建失败。错误的根本原因是Jenkins在构建过程中缓存了之前的git密钥,而新的Jenkinsfile配置了不同的git密钥。解决方法包括删除工作空间以清除旧的git密钥缓存或者直接新建JOB。此外,文章还提及了Jenkinsfile中配置的Git分支在首次构建时可能不会立即更新,并给出了相应解决建议。

original

Jenkins 版本:2.341



背景

有这样一个现象,我在 Jenkins 上创建了一个 JOB —> A,由于懒得创建更多 JOB,于是很多 Jenkinsfile 都用在了该 JOB 上进行测试了(包括生产环境、测试环境),于是今天复制粘贴一段测试环境的 Jenkinsfile 脚本到 A 工程,然后构建后就报错了,具体看下图。

image-20220711161229003

提示可能是 git 密钥配置有误,但是我是复制的我们公司测试环境的 Jenkinsfile 脚本,而且改脚本是能正常构建,所以排除证书配置问题(至少对于该测试项目的配置是没有错的)。然而改了 N 多次,也构建了 N 多次,结果还是一样。

于是,我再次新建一个 JOB,再把同样的 Jenkinsfile 脚本复制粘贴上去,再次构建,结果构建成功。

一、错误原因

经过实际测试及查阅相关官方文档,最后发现,导致这个问题的原因是:之前我就在 A 工程上测试了一段生产环境的 Jenkinsfile(构建成功),而本次我使用的是测试环境的 Jenkinsfile。因为生产环境和测试环境使用的 git 密钥是不同的,而每次 Jenkins 构建都会把对应的密钥文件缓存在本地,如果替换为其他 git 密钥的话,就会导致 git 不到代码,因为此时你 Jenkins 本地缓存的是生产环境的 git 密钥,而你使用的 Jenkinsfile 却是配置的测试环境的 git 密钥,所以构建过程中,无法拉取代码,结果也就如上图所示。

二、解决方案

有两种解决方案:

1、删除 Jenkins 服务器上工作空间(workspace)对应的工程文件夹及临时文件夹

删除后就会清除对应的 Git 密钥

rm -rf /var/lib/docker/volumes/jenkins-data/_data/workspace/A

2、新建工程(JOB)

这就是一个新的工程环境,也就不会报上图错误了。

注意:

这里还需注意一个问题,如果你是在 Jenkinsfile 中配置的 Git 分支,那在首次构建的时候,是不会刷新出来的,而且默认返回 master 分支,且有一段标红文字提示,如果你的 Jenkins 中途构建失败,Git 分支也是刷不出来的。下图我已经解决了,这里只是粘贴出来说明一下。

image-20220711164430716

如何解决刚刚提到的问题,两种情况:

  • 首次构建,构建报错:此时就会更新 Git 分支,然后再次构建即可。
  • 二次构建,构建报错:如果此时构建报错,需解决报错问题,让 Jenkinsfile 先正常运行,方法就是 stage 写简单的 shell 命令即可。

,让 Jenkinsfile 先正常运行,方法就是 stage 写简单的 shell 命令即可。

这就是 Jenkinsfile 构建过程中需要注意的一些小问题。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值