我今天想学习一下Jenkins的CICD实操,我想做到一个场景,就是两个github上面的项目,项目A和项目B,项目A就是假设为一个项目的代码,项目B是自动化代码脚本,我想实现一个效果,每次项目A上面的代码发生变动时,自动触发项目B的自动化脚本执行。
 
中间遇到的问题:
1 . GitHub端-setting-developer-settings,配置一个Personal access tokens
2 . GitHub端-setting-ssh and GPG keys,new 一个 ssh key,用作到时候连接代码库,拉取到Jenkins工作空间等操作
 
任务里面的配置项问题,填写了git地址后,一直报错连接不上,后面倒腾了一次那个凭据,总算是正常了
 
![]()
![]()
![]()
 这几个图是单任务的一个配置
 ⭐GitHub经常访问不上的问题,Jenkins执行任务的时候,控制台输出,连接不上GitHub?
 
 ⭐Jenkinsfie这个文件的使用
Jenkinsfile 是用 Groovy 语言编写的文本文件,用于以代码形式定义 Jenkins 持续集成和持续交付(CI/CD)流程,支持版本控制、灵活配置及复用,能提升 CI/CD 管理效率与扩展性。
项目代码中一般没有这个文件,需要我们自己新增上去,一开始我直接文本新增改后缀为.groovy,导致最后Jenkins在执行的时候报错找不到Jenkinsfile,原因是目录下面只有Jenkinsfile.groovy
所以不要乱加后缀,改过来后再去执行,就执行成功
![]()
 这里还有一个问题,就是执行起来会报错提示“cmd不是内部或外部命令”,原因是因为Jenkins无法找到系统的cmd命令,可能是Jenkins的环境变量配置不正确导致
所以还要在Jenkins-manage Jenkins-System下面配置全局环境变量,还要加上对应的python环境啥的,不然接着执行还会报错找不到对应的库pytest,requests等等,我这里填了一个项目的虚拟环境,也只是为了尽快看到执行效果罢了,实际运行还是要填规范全局生效的路径
![]()
 ⭐最终效果,当projectA执行后,会顺带触发执行projectB
![]()
![]()
 图上代码step里面就是指定了关键触发环节
![]()
 如果项目A的代码发生更新,例如有人提交了代码,这在工作中很常见,一个项目各个开发提交了代码后,自动触发自动化脚本的场景(例如可以自动触发跑冒烟用例)
⭐GitHub上面配置webhook
因为我的Jenkins是本地部署的,所以一开始我直接查了下本机的ipv4地址丢上去,新增了一个webhook,但是发现一直是连接不上的状态
所以要想实现GitHub提交了代码后自动触发Jenkins任务,还需要做个内网穿透操作。
下载工具ngrok,使用免费版就可以达成效果了,因为Jenkins是部署在本地的8090端口
所以下载后直接命令行,执行:ngrok http 8090,就可以了
![]()
![]()
 
 Jenkins里面项目A要把这个配置勾上,然后就可以去看效果
![]()
直接在项目A的代码上面,随意进行一些commit---push,然后就会自动触发执行Jenkins的任务啦~~~~~踩坑完毕
![]()
 
![]()