1 前提条件
1、需要安装gitlab、jenkins、sonarqube;
2、gitlab需要能访问jenkins地址,网络是通的,因为需要通过gitlab推送事件到jenkins机器;
3、gitlab项目,需要有主程序员及以上权限。
2 整体思路
1、当有代码push到代码仓库的时候,gitlab是知道的,gitlab检测到有代码push的时候,执行一个钩子(gitlab上叫hook),可以理解为触发一个推送时间,推送到jenkins;
2、jenkins 检测到这个事件之后,自动构建(不用手动了);
3、jenkins可以配置构建后动作,配置构建后自动执行sonarqube检测。至此,完成自动构建+自动检测的全过程。
3 第一步:配置密钥对
使用jenkins账号邮箱,生成密钥对。
ssh-keygen -t rsa -C "邮箱地址" -b 4096
1、私钥,配置在jenkins 的项目配置中,下面会说配置在哪。
2、公钥,配置在gitlab的个人设置中,菜单:“SSH密钥“,如下图所示。
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
gitlab配置SSH密钥
4 配置jenkins和sonarqube
1、在jenkins中创建一个项目;
2、打开“源码管理”,配置gitlab项目ssh地址,配置分支名,如下图2所示。
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
jenkins源码配置
3、添加账号,类型选择“SSH username with private key“,下面增加上面生成的jenkins私钥。
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
配置jenkins私钥
3、设置触发器,选中“Build when a change is pushed to GitLab. GitLab webhook”,记住项目地址(记住1)
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
记住地址
4、选择下面的高级,点击生成,生成secret token,记住这个token(记住2)。
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
记住token
5、配置构建后动作——sonarqube扫描
一个例子
sonar.projectKey=project-demo
sonar.projectName=project-demo
sonar.projectVersion=1.0
sonar.language=java
sonar.java.binaries=target/classes
sonar.sources=src/main/java
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
配置sonarqube
5 配置gitlab webhook
如下图所示,在项目中,选择设置——》集成——》添加钩子。
填入url和secret token(jenkins配置中的两个记住),取消选中“SSL证书验证“
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
取消选中SSL验证
测试,点击 test——》push event
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
。
说明:如果执行测试,出错:Hook executin fail: execution expired,那么有可能是gitlab、和jenkins网络不通。
如果测试通过,会返回:Hook executed successfully: HTTP 200。
说明配置成功。
这会 jenkins 会自动构建,构建好之后,会生成sonarqube检测结果,直接通过jenkins界面访问sonarqube界面即可。
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
自动开始构建
![「CICD」gitlab+jenkins+sonarqube实现自动构建、代码自动检测](http://www.yixao.com/wp-content/themes/exou/themer/assets/images/lazy.png)
点击即可跳转sonarqube界面
PS:jenkins 配置 sonarqube 的详细过程,各位看官可以自行查找。
参考文章:
1、Create a Continuous Integration Pipeline with GitLab and Jenkins:https://docs.bitnami.com/tutorials/create-ci-pipeline/
2、jenkins+gitlab实现springboot的自动化部署:https://blog.csdn.net/songguopeng/article/details/97634829
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/28079.html