jenkins实现自动部署

jenkins实现自动部署,第1张

jenkins实现自动部署 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、将镜像地址改为阿里云镜像地址,如下添加了两个镜像,防止有的镜像找不到包

	
		alimaven
		aliyun maven
		http://maven.aliyun.com/nexus/content/groups/public/
		central
	
	
		alimaven
		central
		aliyun maven
		http://maven.aliyun.com/nexus/content/repositories/central/
	

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、设置构建后保留时间

3、配置gitlab

4、构建触发器配置

5、配置脚本

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 }'`
 
       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数据库

2 下载sonar压缩包 https://www.sonarqube.org/downloads/
下载后解压到 /opt 目录下

3 通过命令 useradd sonar 创建sonar用户,必须用sonar启动,否则报错
通过命令chown -R sonar. /opt/sonar更改sonar目录及文件权限

4 修改sonar配置文件
通过命令vim /opt/sonar/conf/sonar.properties进入sonar.properties文件

5、配置以下地方

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->凭据里面

然后点击“添加凭据”

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

11、在Manage Jenkins->Global Tool Configuration配置

12、SonaQube关闭审查结果上传到SCM功能

13、在项目添加SonaQube代码审查(非流水线项目)
添加构建步骤:

# 项目唯一标识
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=**/testtarget/**
sonar.java.source=1.8 
sonar.java.target=1.8 
# 设置编码
sonar.sourceEncoding=UTF-8

总结:
其实CI/CD持续集成持续部署就是通过勾子(webhook)触发器监测gitlab上面的代码提交,如果提交了新代码就将代码同步到genkins的工作区,然后对工作区的项目重新编译打包并通过脚本部署后启动。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5681776.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存