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

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 构建过程中需要注意的一些小问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云计算-Security

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

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

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

打赏作者

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

抵扣说明:

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

余额充值