jenkins实现自动部署

本文详细指导如何在服务器上配置Jenkins环境,安装插件,包括Git、Maven和SonarQube,演示了自动部署流程,涉及脚本编写、代码审查与持续集成。

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)]

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)]

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)]

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)]

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)]

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)]

5、配置以下地方
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63uHGoi0-1640593469126)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/caf42b8aa2d8e5820693768f92be575f)]

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)]
然后点击“添加凭据”
在这里插入图片描述

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)]

12、SonaQube关闭审查结果上传到SCM功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oz4LPYMR-1640593469130)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/06493caf1a4ea90ca86fb56e36da83af)]

13、在项目添加SonaQube代码审查(非流水线项目)
添加构建步骤:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcrMCxzw-1640593469131)(http://124.161.64.106:9999/server/index.php?s=/api/attachment/visitFile/sign/b751d9bfba10a498671e418e4139bca6)]

# 项目唯一标识
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的工作区,然后对工作区的项目重新编译打包并通过脚本部署后启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值