今天来学习Jenkins部署应用,在工作中一般都是提交代码到git之后,通过自动打包的功能形成jar包,然后运行jar包。服务器自动从git拉取最新代码进行打jar包的这个过程就通过Jenkins来进行。
Jenkins官网地址
首先我们可以看一下官网的版本
我们需要关注这个版本号,他是Jenkins长期支持的最新版本。
回到我们的Linux服务器,我是基于docker安装的,没有安装docker的同学可以先安装一下
Docker学习笔记(一)——基本使用
有了docker后,通过如下命令安装Jenkins,注意后面为版本号!
docker pull jenkins/jenkins:2.401.1-lts
之后创建存放关于Jenkins文件的目录
然后创建docker-compose文件
注意,执行docker-compose 命令需要单独下载,下载方式:
# 下载docker-compose 比较慢,需要耐心等待,如果有问题可以私聊我获取
sudo curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 授予权限
sudo chmod +x /usr/local/bin/docker-compose
# 最后验证是否下载成功
docker-compose -v
下载成功后我们就可以继续进行Jenkins的安装了。
# 编写docker-compose文件
vi docker-compose.yml
# 文件内容为
version: "3.1"
services:
jenkins:
image: jenkins/jenkins:2.401.1-lts
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- /usr/local/docker/docker_jenkins/data/:/var/jenkins_home/
#复制之后Esc :wq保存退出
# 需要将本地/usr/local/docker/docker_jenkins/data文件夹开启读写权限
chmod -R 777 data
#退出之后通过如下命令将docker-compose运行起来
docker-compose up -d
# 重启
docker-compose restart
# 查看日志
docker logs -f ${文件内容中的container_name}
成功启动后查看日志显示为:
红色处为初始密码,用于在网站上登录Jenkins
打开浏览器,访问IP:8080地址,即可访问Jenkins
输入日志中的初始密码。
# 由于Jenkins需要下载大量插件,如果网速较慢,需要更换下载源
# 修改数据卷data文件夹中hudson.model.UpdateCenter.xml
# 原内容---------------------------
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 更换为------------------------------
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
</site>
</sites>
输入密码后展示此页面
点击之后会显示需要安装什么插件,直接下一步就可以了,安装他默认的插件,之后我们有需要的插件再单独安装。就算默认的插件下载不下来,我们之后也可以去Jenkins官网进行下载。
下载完默认插件之后就会跳转到注册管理员的页面,方便记忆就好。
管理员注册成功后会展示如下页面,我们直接保存即可。
登录之后我们需要去下载我们需要的插件
我们需要下载如下插件:
1.git parameter
2.Publish Over SSH
选择后点击红框下载
下载好插件之后我们需要将jdk与maven复制到Jenkins的数据卷中(也就是需要放到我们docker-compose文件中的volumes键值对中冒号前的文件夹中)
移动到/usr/local/docker/docker_jenkins/data文件夹,中根据jdk与maven的名称,执行如下命令。
mv /usr/local/jdk1.8.0_371/ ./
mv /usr/local/apache-maven-3.9.2/ ./
移动成功后我们进入容器内查看jdk与maven是否存在
# 进入容器
docker exec -it jenkins bash
# 进入根目录
cd ~
确定存在之后我们在Jenkins页面进行全局配置
Maven也是同理
设置完毕后保存
接下来我们要配置转发访问的目标服务器。
进入后拉到最下方,可以使用密钥方式访问,也可以通过用户名密码访问,这里使用用户名密码访问。
其中我们要注意 /usr/local/test 文件目录,需要在Linux中有此文件夹!!
最后测试连接
首先我们要创建一个git仓库,与本地代码进行绑定,有需要的小伙伴可以看一下我这篇文章。
Git创建个人远程仓库实操
现在我们需要将Jenkins与Git进行绑定,我们在Jenkins中创建一个任务
设置完点击应用保存,保存之后我们就可以进行构建了
查看Jenkins中的代码
# 进入容器
docker exec -it jenkins bash
# 进入用户目录
cd ~
# 进入工作空间
cd workspace/
# 展示目录中文件
ls
# 这里面的文件就是我们的项目代码文件
接下来我们需要将代码构建成jar包
设置之后我们进行应用保存,然后回到上层页面进行立即构建,此时就会执行拉取代码+打包的动作。
我们可以在Jenkins容器中查看jar包
# 进入容器
docker exec -it jenkins bash
# 进入用户目录
cd ~
# 进入工作空间
cd workspace/
# 展示目录中文件
ls
# 进入项目代码
cd 项目名
# 进入包
cd target
我们就看到target包了
打包成功后我们就要推送到docker中,进行启动
我们首先进入配置,对构建后操作进行配置
配置成功后,进行应用保存
之后再次进行构建,就会将jar包推送到我们的服务器中,具体会推送到哪里会根据我们设置的service信息来也就是如下图中的Remote Directory。
构建成功后我们就能在对应目录下看到打包后的文件了
接下来我们要进行将jar包作为一个镜像启动
首先我们要在项目中创建一个dockerfile,不了解的同学可以看一下下面的文章
Docker学习笔记(三)——Dockerfile及数据、网络连通
# docker-compose文件内容,8080端口已经占用,所以改为8081
version: "3.1"
services:
mytest:
build:
context: ./
dockerfile: Dockerfile
image: mytest:v1.0.0
container_name: mytest
ports:
- 8081:8080
# Dockerfile文件内容
FROM daocloud.io/library/java:8u40-jdk
COPY mytest.jar /usr/local/
WORKDIR /usr/local
CMD java -jar mytest.jar
pom文件指定包名
最后将修改提交到git上。
然后我们继续对Jenkins进行构建后处理
额外添加两个构建的内容
最后我们要输入启动镜像的命令
# 跳转到当前目录
cd /usr/local/test
# 移动target目录下的jar文件到当前目录
mv ./target/*.jar ./
# 停止之前的容器
docker-compose down
# 启动容器
docker-compose up -d --build
# 由于我们迭代启动会有很多历史镜像,名称都会变为none,所以需要此命令进行删除
docker image prune -f
应用并保存
之后我们再次回到上层点击立即构建,就会自动进行从git拉取代码,构建打包,构建镜像,启动容器,我们直接访问即可。
此时有一个问题,拉取的代码默认都是master分支,我们需要根据不同环境用不同的分支进行打包,例如测试环境就需要用测试分支,此时我们就需要在构建前进行切换分支的操作。
首先我们需要对参数化操作进行勾选
此时,我们整个jenkins服务就基本搭建好了,最近学习时间比较紧张,所以文章记录的比较潦草,所以哪里说的不清楚,有小伙伴有疑问的可以私聊哦