docker搭建Jenkins远程发布服务(jar包方式启动)

使用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
docker搭建Jenkins远程发布服务(jar包方式启动)_第1张图片
目前官网下载低于jdk1.8版本,需要登陆,分享一个其他大佬分享的账号(可能已经无法使用)
账号: [email protected]
密码: 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安装完成
docker搭建Jenkins远程发布服务(jar包方式启动)_第2张图片

2、安装maven

安装maven步骤和jdk差不多

下载maven

官网下载maven
建议使用3.6.x版本,3.8版本可能会有各种坑
进入官网,找到archives下载历史版本
docker搭建Jenkins远程发布服务(jar包方式启动)_第3张图片
选择3.6.3
docker搭建Jenkins远程发布服务(jar包方式启动)_第4张图片
选择binaries
docker搭建Jenkins远程发布服务(jar包方式启动)_第5张图片
下载压缩包
docker搭建Jenkins远程发布服务(jar包方式启动)_第6张图片
上传服务器

解压

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
如下安装完成
docker搭建Jenkins远程发布服务(jar包方式启动)_第7张图片

注意:上传文件和解压的位置任意,配置环境变量的时候跟解压位置相同即可

二、jenkins搭建

1、下载镜像

使用docker search jenkins查找可用镜像
docker搭建Jenkins远程发布服务(jar包方式启动)_第8张图片
使用docker pull jenkins/jenkins 拉取镜像,这里使用的是第二个镜像,第一个官方镜像安装插件一直提示找不到,也可能是配置问题
使用docker images查看下载的镜像
docker搭建Jenkins远程发布服务(jar包方式启动)_第9张图片

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
docker搭建Jenkins远程发布服务(jar包方式启动)_第10张图片
需要注意的是,这里显示的是jenkins_home路径,由于我设定的目录是/docker/jenkins,故我的密码放置目录是/docker/jenkins
可直接访问宿主机的目录查看密码

[root@localhost secrets]# cat /docker/jenkins/secrets/initialAdminPassword

在这里插入图片描述
输入密码后选择安装推荐的插件即可
docker搭建Jenkins远程发布服务(jar包方式启动)_第11张图片
然后成功进入到jenkins中(我这里已经创建过任务)
docker搭建Jenkins远程发布服务(jar包方式启动)_第12张图片

配置容器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、安装插件

选择系统管理 -> 插件管理
docker搭建Jenkins远程发布服务(jar包方式启动)_第13张图片
选择可选插件,安装publish over sshMaven Integration,没有中文界面的还可以安装中文插件Localization: Chinese (Simplified)
docker搭建Jenkins远程发布服务(jar包方式启动)_第14张图片

3、系统配置

选择系统管理 -> 系统配置
docker搭建Jenkins远程发布服务(jar包方式启动)_第15张图片
找到publish over ssh
docker搭建Jenkins远程发布服务(jar包方式启动)_第16张图片
点击新增设置远程服务器配置
docker搭建Jenkins远程发布服务(jar包方式启动)_第17张图片
然后点击高级,配置远程服务器密码
docker搭建Jenkins远程发布服务(jar包方式启动)_第18张图片
然后应用、保存即可

4、全局工具配置

选择系统管理 -> 全局工具配置

4.1 maven Settings配置

docker搭建Jenkins远程发布服务(jar包方式启动)_第19张图片

4.2 jdk配置

docker搭建Jenkins远程发布服务(jar包方式启动)_第20张图片
我这里是直接将宿主机的jdk安装文件夹复制到了容器的根目录下,可以是其他目录如/usr/local/jdk_1.8.0_202

4.3 maven配置

点击新增Maven
docker搭建Jenkins远程发布服务(jar包方式启动)_第21张图片
点击应用、保存

四、新建任务

1、创建任务

在dashboard点击新建任务,填写名字,选择maven项目,点击确定新建
docker搭建Jenkins远程发布服务(jar包方式启动)_第22张图片

2、任务配置

2.1 源码管理

1.选择git
2.填入代码仓库地址
docker搭建Jenkins远程发布服务(jar包方式启动)_第23张图片

3.新增Credentials
点击添加
docker搭建Jenkins远程发布服务(jar包方式启动)_第24张图片
新增凭证,填写git账号,密码
docker搭建Jenkins远程发布服务(jar包方式启动)_第25张图片
然后Credentials选择刚刚新增的
分支按需求指定

2.2 构建触发器

docker搭建Jenkins远程发布服务(jar包方式启动)_第26张图片

2.3 Build

设置编译参数
docker搭建Jenkins远程发布服务(jar包方式启动)_第27张图片
选择高级,设置编译maven配置
docker搭建Jenkins远程发布服务(jar包方式启动)_第28张图片

2.4 Post Steps

选择Run regardless of build result
docker搭建Jenkins远程发布服务(jar包方式启动)_第29张图片

2.5 构建后操作

点击增加构建后操作,选择Send build artifacts over SSH
docker搭建Jenkins远程发布服务(jar包方式启动)_第30张图片
配置ssh操作
docker搭建Jenkins远程发布服务(jar包方式启动)_第31张图片

五、远程服务器配置

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选择配置完成的任务,点击立即构建
docker搭建Jenkins远程发布服务(jar包方式启动)_第32张图片
可在控制台输出中查看编译,启动信息
docker搭建Jenkins远程发布服务(jar包方式启动)_第33张图片
启动成功

注意事项

  • 脚本中 nohup java -jar xxx.jar > xxx.log javaxxx.jarxxx.log必须使用绝对路径,否则启动不生效
  • jenkins编译打包所用的jdk版本要和远程服务器使用的版本一直,如都是用jdk8,如果jenkins打包使用高版本,启动使用低版本,启动也会报错

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