使用docker搭建jenkins发布服务
- 一.基础环境搭建
- 1、安装jdk
- 1.1 自动安装
- 1.2 手动安装
- 下载jdk
- 安装jdk
- 设置环境变量
- 2、安装maven
- 下载maven
- 解压
- 配置环境变量
- 刷新环境变量
- 检查maven版本
- 注意:上传文件和解压的位置任意,配置环境变量的时候跟解压位置相同即可
- 二、jenkins搭建
- 1、下载镜像
- 2、创建容器
- 三、jenkins设置
- 1、基础设置
- 配置容器jdk和maven
- 2、安装插件
- 3、系统配置
- 4、全局工具配置
- 4.1 maven Settings配置
- 4.2 jdk配置
- 4.3 maven配置
- 四、新建任务
- 1、创建任务
- 2、任务配置
- 2.1 源码管理
- 2.2 构建触发器
- 2.3 Build
- 2.4 Post Steps
- 2.5 构建后操作
- 五、远程服务器配置
- 六、构建项目
- 注意事项
序言:阅读此篇默认了解docker概念,熟悉docker基础操作,docker安装过程掠过,不熟悉docker的可以百度一下
一.基础环境搭建
1、安装jdk
安装jdk可以使用命令自动安装,也可以手动安装
1.1 自动安装
yum install -y java-1.8.0-openjdk-devel.x86_64
根据提示输入 y
, 返回Complate即安装成功
使用yum安装的,环境变量自动就配好了,可以使用java -version
查看
1.2 手动安装
下载jdk
先去Oracle官网下载需要版本的jdk
目前官网下载低于jdk1.8版本,需要登陆,分享一个其他大佬分享的账号(可能已经无法使用)
账号: 541509124@qq.com
密码: LR4ever.1314
安装jdk
上传下载的jdk到服务器上,位置随意,我这里使用的版本是 jdk-8u202
例如上传到:/usr/local
解压
[root@localhost local]# tar -zxvf jdk-8u202-linux-x64.tar.gz
解压后的文件夹也在local下
设置环境变量
[root@localhost /]# vim /etc/profile
在最前面添加:
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
更新环境变量
[root@localhost /]# source /etc/profile
使用java -version
检查环境变量是否生效,如下jdk安装完成
2、安装maven
安装maven步骤和jdk差不多
下载maven
官网下载maven 建议使用3.6.x版本,3.8版本可能会有各种坑
进入官网,找到archives
下载历史版本
选择3.6.3
选择binaries
下载压缩包
上传服务器
解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz
配置环境变量
vim /etc/profile
把下面的配置,复制粘贴到最下边
export MAVEN_HOME=/usr/lib/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
刷新环境变量
[root@localhost /]# source /etc/profile
检查maven版本
mvn -v
如下安装完成
注意:上传文件和解压的位置任意,配置环境变量的时候跟解压位置相同即可
二、jenkins搭建
1、下载镜像
使用docker search jenkins
查找可用镜像
使用docker pull jenkins/jenkins
拉取镜像,这里使用的是第二个镜像,第一个官方镜像安装插件一直提示找不到,也可能是配置问题
使用docker images
查看下载的镜像
2、创建容器
创建挂载目录
[root@localhost /]# mkdir -p /docker/jenkins
mkdir -p
确保目录名称存在,不存在的就建一个
修改目录权限(很重要)
[root@localhost /]# chown -R 1000 /docker/jenkins
创建并运行jenkins
[root@localhost /]# docker run -itd -p 9095:8080 -p 50000:50000 --name jenkins -v /docker/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime 576fadba085d
参数解读:
-p 9095:8080 -p 50000:50000是端口映射,宿主机的端口映射到容器的端口,格式为 -p [宿主机]:[容器]
–name 给容器起一个别名
-d 是容器后台运行
-i 开始交互式会话
-t 模拟一个终端
-v /docker/jenkins:/var/jenkins_home 将宿主机的 /docker/jenkins 目录挂载到 /var/jenkins_home。这样做是为了把Jenkins文件存放到宿主机上,就算容器被删除了,新建一个新的容器内容也不会丢失。
-v /etc/localtime:/etc/localtime 意义:让容器使用和服务器同样的时间设置。
576fadba085d 是下载的镜像id,也可以是名字 jenkins/jenkins
创建完成后,可以打开浏览器输入:192.168.4.210:9095/jenkins
访问jenkins
三、jenkins设置
1、基础设置
打开浏览器访问jenkins
需要注意的是,这里显示的是jenkins_home路径,由于我设定的目录是/docker/jenkins
,故我的密码放置目录是/docker/jenkins
可直接访问宿主机的目录查看密码
[root@localhost secrets]# cat /docker/jenkins/secrets/initialAdminPassword
输入密码后选择安装推荐的插件即可
然后成功进入到jenkins中(我这里已经创建过任务)
配置容器jdk和maven
使用docker cp
命令将宿主机的jdk和maven文件夹复制到容器中
[root@localhost /]# docker cp /usr/lib/jdk/jdk1.8.0_202/ jenkins:/jdk1.8.0_202
将/usr/lib/jdk/jdk1.8.0_202文件夹复制到容器的/jdk1.8.0_202目录中
maven同上
2、安装插件
选择系统管理
-> 插件管理
选择可选插件,安装publish over ssh
和Maven Integration
,没有中文界面的还可以安装中文插件Localization: Chinese (Simplified)
3、系统配置
选择系统管理
-> 系统配置
找到publish over ssh
点击新增
设置远程服务器配置
然后点击高级
,配置远程服务器密码
然后应用、保存即可
4、全局工具配置
选择系统管理
-> 全局工具配置
4.1 maven Settings配置
4.2 jdk配置
我这里是直接将宿主机的jdk安装文件夹复制到了容器的根目录下,可以是其他目录如/usr/local/jdk_1.8.0_202
4.3 maven配置
点击新增Maven
点击应用、保存
四、新建任务
1、创建任务
在dashboard点击新建任务
,填写名字,选择maven项目,点击确定新建
2、任务配置
2.1 源码管理
1.选择git
2.填入代码仓库地址
3.新增Credentials
点击添加
新增凭证,填写git账号,密码
然后Credentials选择刚刚新增的
分支按需求指定
2.2 构建触发器
2.3 Build
设置编译参数
选择高级
,设置编译maven配置
2.4 Post Steps
选择Run regardless of build result
2.5 构建后操作
点击增加构建后操作
,选择Send build artifacts over SSH
配置ssh操作
五、远程服务器配置
1.创建接收jar包的目录 /usr/local/web/app
2.创建jar启动脚本start.sh
#!/bin/bash
source /etc/profile
echo "------start---------"
pid=$(ps -ef | grep -i app.jar | grep -v "grep" | awk '{print $2}')
echo "获取pid成功"+$pid
if [ -n "$pid" ]; then
kill -9 $pid
echo '解除端口占用'
fi
sleep 2s
echo "启动......"
export BUILD_ID=dontKillMe
nohup /usr/lib/jdk/jdk1.8.0_202/bin/java -jar /usr/local/web/app/app.jar > /usr/local/web/app/app.log 2>&1&
echo "脚本执行完毕"
sleep 2s
pid=`ps -ef|grep app.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "部署后的pid进程 :$pid"
echo "启动成功"
else
echo "进程没有启动"
fi
六、构建项目
配置完成后即可构建项目
回到dashboard选择配置完成的任务,点击立即构建
可在控制台输出中查看编译,启动信息
启动成功
注意事项
- 脚本中 nohup java -jar xxx.jar > xxx.log
java
、xxx.jar
、xxx.log
必须使用绝对路径,否则启动不生效 - jenkins编译打包所用的jdk版本要和远程服务器使用的版本一直,如都是用jdk8,如果jenkins打包使用高版本,启动使用低版本,启动也会报错