jenkins实现自动部署(CD/CI)
执行流程图

一 环境服务器配置
1、需要在服务器上安装以下环境:
1) 安装jdk-1.8
2) 安装maven-3.6.1
3) 安装git-2.34
4) 安装node-16.13.1(也可以不用,根据部署方式选择)
5)sonarQube-6.7.4
2、安装完成后将环境变量配置好

3、进入maven的setting.xml文件将存储区改

4、将镜像地址改为阿里云镜像地址,如下添加了两个镜像,防止有的镜像找不到包
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
5、通过命令
mvn install:install-file -Dfile=/usr/local/jars/formal/Algorithm_assessment.jar -DgroupId=com.xjgd -DartifactId=algorithm_sd -Dversion=2.0 -Dpackaging=jar
将算法包添加进maven仓库
6、添加到maven仓库后可以在 resposity/com/xjgd目录下看到算法包

7、配置过程可能会由于缺少 maven-metadata-local.xml 文件导致一直编译失败,该文件是坐标引导,会引导我们去哪里找包路径,如果没有这个文件maven就找不到包就会去云镜像里面找相应的包,自定义的包在云镜像肯定找不到,找不到就会报错。

8、这种情况我们就直接从原来正常的包下面把包拷过来,我就是在windows下直接把整个resposity拷过来,免得差东差西的
二 安装插件
相关插件
1 jdk
2 maven
3 git
4 Gedentials Binding (和凭证相关的)
5 Gitlab Hook (构建触发器,为了构建时使用实时构建,提交代码就构建)
6 gitlab
7 SonarQube Scaner(代码检查插件)
其他还有插件根据自己的需要安装,上面是最主要的插件
由于jenkins是在服务器安装好的就不需要我们去安装,我们登录jenkins后点击Mannge Jenkins进入管理页面—>点击Mannage Plugins,如下



三 配置
1、安装完成之后返回点击Mannge Jenkins进入管理页面—>点击Global Tool Configuration 进入全局配置可以查看到安装的插件

2、然后配置插件对应的信息

3、配置凭据/凭证

4、配置凭据,与gitlab关联

四 新建项目
1、准备工作配置完成后新建一个项目,这里主要介绍freestyle类型的项目

2、设置构建后保留时间
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lz35Utdr-1640593469116)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/530043c69211798254ef70a97be49adf)]](https://i-blog.csdnimg.cn/blog_migrate/9a229b9829816101e04bc924ff3e31b7.png)
3、配置gitlab

4、构建触发器配置



5、配置脚本
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3MC6Lju-1640593469121)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/fcd8453959ed7c1ff2b5d2e6d4ff2bb9)]track.sh的具体脚本[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb4vvmZU-1640593469122)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/8440e945840e3be2d1b18c5294d57d36)]](https://i-blog.csdnimg.cn/blog_migrate/b92d221b7ee17429d51af5f61381999e.png)
track.sh的具体脚本
#!/bin/sh
#.etc/profil
mvn clean package
#该目录为jenkins工作区的target目录
app_dir=/var/lib/jenkins/workspace/freestyleTrack/track-admin/target
#jenkins工作目录下的jar包
app_file_path=$app_dir/track-admin.jar
#jenkins工作目录下的jar包
app_path=$app_dir/track-admin.jar
if [ -f $app_file_path ] ;then
echo -- stop app
pidlist=`ps -ef | grep track-admin.jar | grep -v grep | awk '{print $2}'`
if [ "$pidlist" = "" ] ;then
echo "进程pid不存在!"
else
echo "进程pid :$pidlist"
kill -9 $pidlist
echo "KILL $ pidlist:"
fi
# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
echo -- 开始启动 $app_path
nohup java -jar $app_path &
echo -- 启动完成
fi
同理,部署前端项目的时候脚本
#!/bin/sh
echo $PATH
node -v
npm -v
#第一次安装需要npm install,后面就不需要
echo '开始安装npm'
# npm install
echo '开始打包'
npm run build:prod
echo '打包成功'
#移除原来的路径
rm -R /opt/track/track-ui/
#将新打包的文件放到原来路径下
cp -r /var/lib/jenkins/workspace/freestyleTrack-ui/dist/. /opt/track/track-ui
echo '配置track-ui成功'
五 配置SonarQube代码走查
官网:https://www.sonarqube.org
本次下载版本为6.7.4,如果下载版本过高会不支持mysql5.7版本和jdk1.8版本
1 在mysql5.7数据库中创建sonar数据库
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zeuDqAmh-1640593469123)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/ae377c00681b2485e55091c15105dc77)]](https://i-blog.csdnimg.cn/blog_migrate/01bcd46dd12c0977c36867e4473e85e0.png)
2 下载sonar压缩包 https://www.sonarqube.org/downloads/
下载后解压到 /opt 目录下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Edwozco-1640593469124)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/612e304561cd4803ef0a7cc89d83482d)]](https://i-blog.csdnimg.cn/blog_migrate/4d6558314c5717676e0ed762df2f0ae0.png)
3 通过命令 useradd sonar 创建sonar用户,必须用sonar启动,否则报错
通过命令chown -R sonar. /opt/sonar更改sonar目录及文件权限
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oo3Uy6rR-1640593469124)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/6bd36dacae355b1ecffa81f0d95960d3)]](https://i-blog.csdnimg.cn/blog_migrate/c36d8740b3a6f50be604a2a49b9b765f.png)
4 修改sonar配置文件
通过命令vim /opt/sonar/conf/sonar.properties进入sonar.properties文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TBNBCaVP-1640593469125)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/997e11b86b3f022b32fe3fc23d9ed188)]](https://i-blog.csdnimg.cn/blog_migrate/5b38c60da4ac1f3ffac4b1df568ae3a1.png)
5、配置以下地方
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63uHGoi0-1640593469126)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/caf42b8aa2d8e5820693768f92be575f)]](https://i-blog.csdnimg.cn/blog_migrate/2f849309d1b043a668b22a1ab9acfc85.png)
sonar.jdbc.username=root
sonar.jdbc.password=root
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
RUN_AS_USER=sonar
注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。
6、启动sonar,启动过程中有一些坑都可以通过百度解决
cd /opt/sonar
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs 查看日志
7、访问sonar http://xxxx:9000

默认账户:admin/admin
创建token
第一次登陆时会要求创建token,此时该token应该保存,后面jenkins整合时要用到。由于已经设置过token值,这里就没有设置token的截图效果
8、在jenkins中安装SonarQube Scanner插件

9、添加SonarQube凭据
1)在用户列表->root->凭据里面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bbg29hcW-1640593469128)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/4639d145b3657aa47f0e9bda1fd6f999)]然后点击“添加凭据”[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgoQAyI4-1640593469128)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/41d46f5fed1c0406c606889a80c980b9)]](https://i-blog.csdnimg.cn/blog_migrate/4c84e5303d4057928884ef39cb848750.png)
然后点击“添加凭据”

10、Jenkins进行SonarQube配置,Manage Jenkins->Configure System->SonarQube servers

11、在Manage Jenkins->Global Tool Configuration配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ljv0RA5g-1640593469129)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/beab644e334a03410157f95638a4e1eb)]](https://i-blog.csdnimg.cn/blog_migrate/686523405bac614b9a83701007d95888.png)
12、SonaQube关闭审查结果上传到SCM功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oz4LPYMR-1640593469130)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/06493caf1a4ea90ca86fb56e36da83af)]](https://i-blog.csdnimg.cn/blog_migrate/984393f4c25dd39575f94ef5fcbd3595.png)
13、在项目添加SonaQube代码审查(非流水线项目)
添加构建步骤:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcrMCxzw-1640593469131)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/b751d9bfba10a498671e418e4139bca6)]](https://i-blog.csdnimg.cn/blog_migrate/19c520d93c2aeb60c9bc2dd585c58f94.png)
# 项目唯一标识
sonar.projectKey=freestyleImportExport
# SonarQube UI中显示的名称和版本。
sonar.projectName=freestyleImportExport
sonar.projectVersion=1.0
#该配置为加载项目下的编译好的文件,此版本的sonar没有该配置会报错
sonar.java.binaries =/var/lib/jenkins/workspace/freestyleImportExport/target/classes
#扫描元素 .代表目录下所有文件
sonar.sources=.
#sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
# 设置编码
sonar.sourceEncoding=UTF-8
总结:
其实CI/CD持续集成持续部署就是通过勾子(webhook)触发器监测gitlab上面的代码提交,如果提交了新代码就将代码同步到genkins的工作区,然后对工作区的项目重新编译打包并通过脚本部署后启动。
本文详细指导如何在服务器上配置Jenkins环境,安装插件,包括Git、Maven和SonarQube,演示了自动部署流程,涉及脚本编写、代码审查与持续集成。
2298

被折叠的 条评论
为什么被折叠?



