Jenkins部署流程

Jenkins简介

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

官网: http://jenkins-ci.org/。

Jenkins的特征:
● 开源的 Java语言开发持续集成工具,支持持续集成,持续部署。
● 易于安装部署配置:可通过 yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
● 消息通知及测试报告:集成 RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
● 分布式构建:支持 Jenkins能够让多台计算机一起构建/测试。
● 文件识别: Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
● 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如 git,svn,maven,docker等。

Jenkins部署项目流程:

● 首先,开发人员每天进行代码提交,提交到Git仓库
● 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
● 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

安装Jenkins

采用Docker方式部署Jenkins的部署脚本:

docker run -d \
-p 8090:8080 \
-p 50000:50000 \
-v /usr/local/src/jenkins:/var/jenkins_home \
-v  /maven:/maven \
-v /etc/localtime:/etc/localtime \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged \
--name jenkins \
-e TZ=Asia/Shanghai \
--restart=always \
--add-host=git.sl-express.com:192.168.150.101 \
--add-host=maven.sl-express.com:192.168.150.101 \
jenkins/jenkins:lts-jdk11

部署脚本中指定了时区、hosts并且将宿主机的docker服务映射到容器内部。

配置

Jenkins安装完成后,需要进行一些配置才能正常使用。

配置Maven

Jenkins部署流程_第1张图片
Jenkins部署流程_第2张图片
在【系统管理】中的【全局工具配置】中进行配置,指定Maven配置文件:
Jenkins部署流程_第3张图片
配置文件内容如下:


<settings
    xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
   <localRepository>/maven/repositorylocalRepository>

    <pluginGroups>pluginGroups>
	<mirrors>
        <mirror>
            <id>mirrorid>
            <name>mirrorname>
            <url>https://maven.aliyun.com/nexus/content/groups/publicurl>
        mirror>
    mirrors>
   

settings>

配置Git

Jenkins部署流程_第4张图片

安装Gogs插件

我们使用的Git管理工具是Gogs,需要在用户提交代码之后触发自动构建,需要安装Gogs插件。
Jenkins部署流程_第5张图片
搜索Gogs安装即可。在Gogs中的仓库设置钩子即可。

构建任务

在虚拟机环境中虽然已经创建好了构建任务,如果不满足需求,可以执行创建任务,可以通过复制的方式完成。

首先点击【新建任务】:
Jenkins部署流程_第6张图片
输入任务的名称,建议名称就是微服务的名字。
Jenkins部署流程_第7张图片
选择已有的构建任务,输入任务的名称:
Jenkins部署流程_第8张图片
设置Gogs钩子,设置构建参数,主要用于构建时的脚本使用:
Jenkins部署流程_第9张图片
设置git地址,每个项目都不一样,一定要修改!设置构建开始前将workspace删除,确保没有之前编译产物的干扰:Jenkins部署流程_第10张图片
设置ssh执行命令,主要是宿主机安装的docker服务具备权限,可以在容器内执行。设置maven打包命令。Jenkins部署流程_第11张图片
设置部署的ssh脚本,主要是完成微服务打包成docker镜像进行部署。执行命令如下:

#!/bin/bash
# 微服务名称
SERVER_NAME=${serverName}

# 服务版本
SERVER_VERSION=${version}

# 服务版本
SERVER_PORT=${port}

# 源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME=$SERVER_NAME-$SERVER_VERSION

# jenkins下的目录
JENKINS_HOME=/var/jenkins_home/workspace/$SERVER_NAME

cd $JENKINS_HOME

# 修改文件权限
chmod 755 target/$JAR_NAME.jar

docker -v

echo "---------停止容器($SERVER_NAME)---------"
docker stop $SERVER_NAME

echo "---------删除容器($SERVER_NAME)---------"
docker rm $SERVER_NAME

echo "---------删除镜像($SERVER_NAME:$SERVER_VERSION)---------"
docker rmi $SERVER_NAME:$SERVER_VERSION

echo "---------打包镜像($SERVER_NAME:$SERVER_VERSION)---------"
docker build -t $SERVER_NAME:$SERVER_VERSION .

echo "---------运行服务---------"
docker run -d -p $SERVER_PORT:8080 --name $SERVER_NAME -e SERVER_PORT=8080 -e SPRING_CLOUD_NACOS_DISCOVERY_IP=${SPRING_CLOUD_NACOS_DISCOVERY_IP} -e  SPRING_CLOUD_NACOS_DISCOVERY_PORT=${port} -e SPRING_PROFILES_ACTIVE=stu $SERVER_NAME:$SERVER_VERSION

最后,保存即可成功。

你可能感兴趣的:(jenkins,运维)