手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)

Jenkins

    • 持续集成
    • Jenkins 介绍
    • Jenkins 安装和持续集成环境配置
      • Jenkins 安装
      • 在 Docker 容器中更新 Jenkins 版本
      • Jenkins 配置
        • 插件管理
        • 用户权限管理
        • 凭证管理
          • 安装Credentials Binding插件
      • 安装 Git 插件和 Git 工具
        • 使用 Git 用户密码拉取代码
        • 使用 Git SSH 密钥拉取代码
      • Maven配置
      • Tomcat 安装和配置
        • 使用 docker 安装 Tomcat
        • 配置 Tomcat
        • 把war包部署到 tomcat 中

持续集成

持续集成的好处

  1. 降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少;
  2. 对系统健康持续检查,减少发布风险带来的问题;
  3. 减少重复性工作;
  4. 持续部署,提供可部署单元包;
  5. 持续交付可供使用的版本;
  6. 增强团队信心;

Jenkins 介绍

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

Jenkins的特征

  • 开源的Java语言开发持续集成工具,支持持续集成,持续部署。

  • 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。

  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。

  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

  • 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

Jenkins 自动化部署实现原理

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第1张图片

Jenkins 安装和持续集成环境配置

Jenkins 安装

1. 创建 Jenkins 挂载目录并授予权限

//创建目录
mkdir -p /usr/local/docker/jenkins_home
//授权权限
chmod 777 /usr/local/docker/jenkins_home

2. 安装Maven

因为用到的docker镜像中不包含maven,所以要在宿主机中安装,通过文件挂载的方式提供调用
从官网下载maven,并放到宿主机/opt目录下

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第2张图片

# 切换到要安装的文件夹
cd /opt
# 解压
tar -xzvf apache-maven-3.8.5-bin.tar.gz
# 配置 apache-maven-3.8.5/conf/settings.xml,添加阿里云maven镜像仓库
vim apache-maven-3.8.5/conf/settings.xml
# 在标签中添加以下配置

 aliyunmaven
 *
 阿里云公共仓库
 https://maven.aliyun.com/repository/public

# 添加环境变量
vi /etc/profile
# 在文件底部加上
export M2_HOME=/opt/apache-maven-3.8.5
export PATH=$PATH:${M2_HOME}/bin
# 保存并退出编辑,使用下面的命令让修改生效
source /etc/profile
# 验证Maven安装
mvn -version

如果宿主机没有安装Java,则如下图所示:
image-20220404000225359

2. 启动 Jenkins 容器

# 最好先去dockerhub上找到最新版本,拉取指定版本号,否则容易出现插件安装失败的问题
docker run -d -p 8081:8080 -p 50000:50000 --restart=always \
 -v /usr/local/docker/jenkins_home:/var/jenkins_home \
 -v /etc/localtime:/etc/localtime -v /opt/apache-maven-3.8.5:/usr/local/maven \
 -e PHP_TZ="Asia/Shanghai" --name jenkins jenkins/jenkins:2.341-jdk8

3. 打开浏览器访问

http://192.168.159.100:8081

4. 获取并输入admin账户密码

vim /usr/local/docker/jenkins_home/secrets/initialAdminPassword

在 Docker 容器中更新 Jenkins 版本

# 如果jenkins版本太老,可以在不影响jenkins项目的情况下,更新jenkins版本
# 1.以root用户进入jenkins容器
    docker exec -it -u root jenkins /bin/bash
# 2.在容器中下载jenkins的最新war包,],如果嫌下载太慢也可以从官网(https://www.jenkins.io/download/)下载war包然后拷贝到挂载目录中
    wget http://mirrors.jenkins.io/war/latest/jenkins.war
# 3.查看容器中jenkins war包的位置,并备份原来的war包
    whereis jenkins
    cd /usr/share/jenkins
    cp jenkins.war jenkinsBAK.war
# 4.将/var/jenkins_home的包cp到/usr/share/jenkins下覆盖
    cp /var/jenkins_home/jenkins.war /usr/share/jenkins/
# 5.退出容器并重启
    exit
    docker restart jenkins

Jenkins 配置

插件管理

1. 跳过插件安装

​ 因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第3张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第4张图片

2. 创建管理员用户
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第5张图片

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第6张图片

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第7张图片

3. 修改 Jenkins 插件下载源

Jenkins->Manage Jenkins->Manage Plugins,点击Available,这样做是为了把Jenkins官方的插件列表下载到本地。

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第8张图片

修改地址文件,替换为国内插件地址。

# docker 安装,因为做了映射,直接在宿主机挂载的jenkins_home中修改
cd /usr/local/docker/jenkins_home/updates

# 换成清华镜像库
# 使用docker安装的jenkins,如没有“default.json”文件,则访问“http://localhost:8081/restart”后再执行以下步骤
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

重启 Jenkins

访问 http://192.168.159.100:8081/restart,地址为部署的地址后加/restart

修改 Update Site

在Manage Plugins点击Advanced,把Update Site改为国内插件下载地址:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后点击submit
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第9张图片

重启 Jenkins

访问 http://192.168.159.100:8081/restart,地址为部署的地址后加/restart

4. 下载中文汉化插件

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第10张图片

用户权限管理

1. 安装Role-based Authorization Strategy插件
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第11张图片
2. 授权策略切换为"Role-Based Strategy"
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第12张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第13张图片
3. 创建角色

系统管理 -> Manage and Assign Roles -> Manage Roles

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Project roles(项目角色):针对某个或者某些项目的角色,最新版已改名为“Item roles”

Slave roles(奴隶角色):节点相关的权限,最新版已改名为“Node roles”

4. 创建用户

系统管理 -> Manage Users -> 新建用户

5. 给用户分配角色

系统管理 -> Manage and Assign Roles -> Assign Roles

User/group to add中输入需要分配角色的用户,勾选相应角色,保存。

凭证管理

​ 凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互

安装Credentials Binding插件

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第14张图片

​ 安装插件后,在安全菜单会显示凭证管理选项,在这里管理所有凭证。

image-20220326170246949

可以添加的凭证有5种:

  • Username with password:用户名和密码

  • SSH Username with private key: 使用SSH用户和密钥

  • Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。

  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token

  • Certificate:通过上传证书文件的方式

安装 Git 插件和 Git 工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在jenkins服务器上安装Git工具。

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第15张图片

# 使用linux安装jenkins,需要jenkins所在的服务器安装git,docker 版的容器已经安装,所以不需要再安装
yum install git -y

使用 Git 用户密码拉取代码

1.添加凭据

Manage Credentials -> Jenkins -> 全局凭据 -> 添加凭据,填入git仓库的账号和密码即可

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第16张图片

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第17张图片

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第18张图片

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第19张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第20张图片
2. 测试凭证是否可用

回到主页,新建任务 -> 构建一个自由风格的的软件项目(FreeStyle Project)-> 输入任务名称 -> 确定
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第21张图片
在源码管理中选择Git,填入仓库的http连接,并选择刚才添加的凭据,点击保存。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第22张图片
选择立即构建(Build Now)。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第23张图片
点击控制台输出,可以看到项目保存位置。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第24张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第25张图片

使用 Git SSH 密钥拉取代码

1. 生成SSH密钥

# 使用docker部署的需使用“docker exec -it jenkins bin/bash”命令进入容器内生成密钥
# 输入以下命令后,连着按三次回车键,生成秘钥
ssh-keygen -t rsa
# 获取公钥
cat ~/.ssh/id_rsa.pub

2. 将SSH公钥添加到远程仓库中
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第26张图片
3. 在Jenkins中添加凭据,配置私钥
在凭据中选择SSH Username with private key,填写用户名和私钥。

# 获取私钥
cat ~/.ssh/id_rsa

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第27张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第28张图片
4. 测试凭据是否可用

回到主页,新建任务 -> 构建一个自由风格的的软件项目(FreeStyle Project)-> 输入任务名称 -> 确定
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第29张图片
在源码管理中选择Git,填入仓库的ssh连接,并选择刚才添加的凭据,点击保存。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第30张图片
选择立即构建(Build Now)。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第31张图片
点击控制台输出,可以看到项目保存位置。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第32张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第33张图片

Maven配置

1. 全局工具配置关联JDK、Git和Maven

docker版自带jdk和git,可进入容器通过以下命令获取jdk和git路径,使用linux安装需提前安装好git和jdk

# 进入jenkins容器
docker exec -it jenkins /bin/bash
# 查看jdk版本
java -version
# 查看jdk路径
which java
# 查看git版本
git --version
# 查看git路径
which git

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第34张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第35张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第36张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第37张图片
此处不建议直接使用自动安装maven,自动安装的maven会在首次使用maven构建项目时才下载下来,加上使用国外镜像仓库,会导致构建项目时间过长。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第38张图片
2.安装Maven Integration插件
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第39张图片
3. 配置环境变量

​ 配置完全局配置后去配置 jenkins 的环境变量 不然jenkins 运行打包命令会找不到 JAVA_HOME 和mvn 命令(yum安装jenkins需要配置环境变量,war包安装方式不用配置,docker 安装的jenkins属于用war包安装的,所以可以不用配置)

​ Manage Jenkins->Configure System->Global Properties ,添加三个全局变量:JAVA_HOME、M2_HOME、PATH+EXTRA
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第40张图片
4. 修改maven仓库地址,方便查看

​ docker 挂载的maven默认仓库地址为jenkins挂载目录中~/jenkins_home/.m2/repository下,如果不在意的话可以不改

# 创建本地仓库目录,docker安装的需要进入容器内部创建
mkdir /root/repo
# 进入配置文件
vi /opt/maven/conf/settings.xml
# 修改中的内容
/root/repo

5. 测试Maven是否配置成功

​ 构建一个maven项目。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第41张图片
​ 配置源码地址。

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第42张图片
​ 填入clean package,保存后进行构建,如果可以编译打包成功,则说明Maven配置成功。

手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第43张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第44张图片

Tomcat 安装和配置

使用 docker 安装 Tomcat

# 首先启动一个tomcat容器,记得提前打开8080端口或关闭防火前
docker run -d -p 8080:8080 --name=tomcat tomcat:9.0
# 拷贝配置文件到宿主机
docker cp tomcat:/usr/local/tomcat /usr/local/docker/
# 可以修改tomcat配置文件(server.xml),自定义端口等
# 将webapps.dist中的文件复制到webapps目录下
cp /usr/local/docker/tomcat/webapps.dist/ /usr/local/docker/tomcat/webapps/
# 删除之前创建的tomcat
docker rm -f tomcat
# 启动正式tomcat
docker run --restart=always --name=tomcat -p 8080:8080 \
-v /usr/local/docker/tomcat:/usr/local/tomcat \
-d tomcat:9.0

​ 在浏览器的地址栏输入:

​ http://192.168.159.100:8080/(服务器的ip和tomcat默认端口8080)

​ 如果出现以下界面,则说明安装成功
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第45张图片

配置 Tomcat

1. 配置Tomcat用户角色权限

​ 默认情况下Tomcat是没有配置用户角色权限的,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置,添加用户及权限。

# 修改tomcat配置文件,允许jenkins访问
vi /usr/local/docker/tomcat/conf/tomcat-users.xml
# 添加以下配置,管理员密码为:tomcat/tomcat

 
 
 
 
 
 
 
 
 

# 为了能够刚才配置的用户登录到Tomcat,让所以ip都可以访问tomcat,还需要修改以下配置
vi /usr/local/docker/tomcat/webapps/manager/META-INF/context.xml
# 注释这段配置

# 重启Tomcat
docker restart tomcat

2. 添加Tomcat用户凭证
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第46张图片

把war包部署到 tomcat 中

1. 安装Deploy to container插件

​ Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现。
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第47张图片
2. 添加构建后操作
在刚才的maven项目配置中增加构建后操作步骤,应用并保存,构建成功后访问项目地址:格式为http://ip:port/context_path
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第48张图片
手把手教你使用 Jenkins+Docker+Tomcat 自动化部署项目(2022最新)_第49张图片

你可能感兴趣的:(Jenkins,docker,tomcat,jenkins,devops,持续集成)