使用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

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jar


目前官网下载低于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安装完成

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_02

2、安装maven

安装maven步骤和jdk差不多

下载maven

官网下载maven 建议使用3.6.x版本,3.8版本可能会有各种坑

进入官网,找到archives下载历史版本

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_03


选择3.6.3

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_04


选择binaries

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_05


下载压缩包

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_06


上传服务器

解压

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 如下安装完成

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_07

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

二、jenkins搭建

1、下载镜像

使用docker search jenkins查找可用镜像

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jar_08


使用docker pull jenkins/jenkins 拉取镜像,这里使用的是第二个镜像,第一个官方镜像安装插件一直提示找不到,也可能是配置问题

使用docker images查看下载的镜像

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_09

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

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_10


需要注意的是,这里显示的是jenkins_home路径,由于我设定的目录是/docker/jenkins,故我的密码放置目录是/docker/jenkins 可直接访问宿主机的目录查看密码

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

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jar_11


输入密码后选择安装推荐的插件即可

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_12


然后成功进入到jenkins中(我这里已经创建过任务)

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_13

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

选择系统管理 -> 插件管理

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jar_14


选择可选插件,安装publish over sshMaven Integration,没有中文界面的还可以安装中文插件Localization: Chinese (Simplified)

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_15

3、系统配置

选择系统管理 -> 系统配置

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_16


找到publish over ssh

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_17


点击新增设置远程服务器配置

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_18


然后点击高级,配置远程服务器密码

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_19


然后应用、保存即可

4、全局工具配置

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

4.1 maven Settings配置

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_20

4.2 jdk配置

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_21


我这里是直接将宿主机的jdk安装文件夹复制到了容器的根目录下,可以是其他目录如/usr/local/jdk_1.8.0_202

4.3 maven配置

点击新增Maven

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jar_22


点击应用、保存

四、新建任务

1、创建任务

在dashboard点击新建任务,填写名字,选择maven项目,点击确定新建

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_23

2、任务配置

2.1 源码管理

1.选择git

2.填入代码仓库地址

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_24

3.新增Credentials

点击添加

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_25


新增凭证,填写git账号,密码

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_26


然后Credentials选择刚刚新增的

分支按需求指定

2.2 构建触发器

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_27

2.3 Build

设置编译参数

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_28


选择高级,设置编译maven配置

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_29

2.4 Post Steps

选择Run regardless of build result

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_30

2.5 构建后操作

点击增加构建后操作,选择Send build artifacts over SSH

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_31


配置ssh操作

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_jenkins_32

五、远程服务器配置

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选择配置完成的任务,点击立即构建

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_docker_33


可在控制台输出中查看编译,启动信息

Jenkinsfile怎么配置docker镜像仓库 jenkins docker构建镜像发布_maven_34


启动成功

注意事项

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