安装 Jenkins

可以直接下载Jenkins包放入服务器解压.
我是使用docker pull的Jenkins镜像.
遇到问题:
	直接解压使用Jenkins.war问题:
		直接下载Jenkins版本不能过低,否则稍后在Jenkins安装插件可能会安装失败
	Docker中直接拉取Jenkins问题:
		因为Jenkins构建项目需要配置Git,Java,Maven等环境,因为Docker容器都是类似于沙箱隔离的,所以服务器上的一些Java,Mavne环境会读取不到,可以在启用Jenkins容器时将所需环境挂载在Jenkins容器中.

安装插件

在启用Jenkins后,初次访问会有推荐安装的插件.
也可以自定义安装
以下是我安装的插件,有些插件可能会因为版本问题安装失败,需根据提示进行相应的版本升级

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_jenkins


springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_linux_02


springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_maven_03

Jenkins新建任务

我这里选择的是Maven,较常用的还有流水线和自由风格

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_github_04

项目配置

1.配置Git地址,我直接配置的https,也可以配置ssh

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_linux_05


2.源码管理也是填入git地址

3. 构建配置

我选择的是项目生成快照时构建,根据情况可以选择定时或轮询

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_github_06


4.构建时选择的是maven,所有配置pom已经项目maven命令

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_linux_07


5.构建时执行的Shell脚本

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_linux_08

#!/bin/bash -il
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/jenkins_home/workspace/docker_file

源jar路径

SOURCE_PATH=/var/jenkins_home/workspace/demo/target 
#容器id
CID=$(docker ps | grep "demo" | awk '{print $1}')
 
DATE=`date +%Y%m%d%H%M`
 

最新构建代码 移动到项目环境

function transfer(){
    echo "最新构建代码 $SOURCE_PATH/demo.jar 迁移至 $BASE_PATH ...."
         cp $SOURCE_PATH/demo.jar $BASE_PATH
    echo "迁移完成"
}
 

备份

function backup(){
	if [ -f "$BASE_PATH/demo.jar" ]; then
    	echo "demo.jar 备份..."
        	 cp $BASE_PATH/demo.jar $BASE_PATH/backup/demo-$DATE.jar
			sleep 3
			 rm -rf $BASE_PATH/demo.jar
        echo "备份 demo.jar 完成"
    else
    	echo "$BASE_PATH/demo.jar不存在,跳过备份"
    fi
}
 

构建docker镜像

function build(){
	echo "开始构建镜像..."
	cd $BASE_PATH
	 docker build -t demo .
}
 

运行docker容器

function run(){
	backup
	transfer
	build
	if [ -n "$CID" ]; then
		echo "存在demo容器,CID=$CID,重启docker容器 ..."
			 docker stop $CID
			 docker rm $CID	
			 docker run -d -p 8899:8899 demo
		echo "demo容器重启完成"
	else
		echo "不存在demo容器,docker run创建容器..."
			 docker run  --name demo -d -p 8899:8899 demo 
		echo "demo容器创建完成"
	fi
    delnone
}

删除none镜像

function delnone(){
	docker rmi $(docker images -f "dangling=true" -q)
    echo "清除none镜像"
}
 

入口

run
查看docker运行的容器

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_maven_09


服务器端口访问,成功

springboot集成dockerfile和Jenkinsfile jenkins部署springboot到docker_linux_10