Jenkins-CICD踩坑记

学习目标:

我今天想学习一下Jenkins的CICD实操,我想做到一个场景,就是两个github上面的项目,项目A和项目B,项目A就是假设为一个项目的代码,项目B是自动化代码脚本,我想实现一个效果,每次项目A上面的代码发生变动时,自动触发项目B的自动化脚本执行。
 
中间遇到的问题:
 ⭐Jenkins上面配置访问GitHub,凭据问题(Credentials
1 . GitHub端-setting-developer-settings,配置一个Personal access tokens
2 . GitHub端-setting-ssh and GPG keys,new 一个 ssh key,用作到时候连接代码库,拉取到Jenkins工作空间等操作

 

 
任务里面的配置项问题,填写了git地址后,一直报错连接不上,后面倒腾了一次那个凭据,总算是正常了
关于凭据Credentials,密钥填写.ssh文件夹下面的id_rsa里面的内容

 这几个图是单任务的一个配置

 ⭐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的任务啦~~~~~踩坑完毕

 

 

 

 

posted @   xyttt06  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2019-02-17 接口自动化学习--mock
点击右上角即可分享
微信分享提示