前提:
使用docker创建jenkins
docker创建jenkins教程
宿主机上安装好jdk(自行搜索)
宿主机上安装好maven(自行搜索)
宿主机上安装好git(自行搜索)
这3个需要把安装地址记住,过会就要用
启动jenkins
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 \
-v /var/jenkins_node:/var/jenkins_home \
-v /usr/java/jdk1.8.0_111:/usr/local/jdk \
-v /usr/local/apache-maven-3.6.3:/usr/local/maven \
-v /usr/bin/git:/usr/local/git \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai jenkins/jenkins
描述:
-v 宿主机地址:jenkins内部地址
(例子: -v /usr/java/jdk.8.0_11 这是你刚刚自己装的jdk路径
:/usr/local/jdk 这是你映射到jenkins内部的虚拟地址)
进入myjenkins内部创建docker_home、moj文件夹
注意必须进入创建,不然后续构建时会出现各种权限问题
docker exec -it myjenkins bash
mkdir /var/jenkins_home/docker_home
mkdir /var/jenkins_home/docker_home/moj
然后把创建好的Dockerfile文件放到moj文件夹下面
这时候是不是好奇,为啥你这文件夹叫jenkins_node
因为启动的时候已经映射过去了,所以宿主机上面的还是jenkins_node,myjenkins里面的路径才叫jenkins_home
Dockerfile内容:
From java:8
#MOJManager*.jar 是你自己项目打包后的名字 这里需要改成你自己的
ADD MOJManager-0.0.1-SNAPSHOT.jar /app.jar
#对外端口
EXPOSE 8092
ENTRYPOINT ["java","-jar","/app.jar"]
用于创建docker镜像
这时候你进入myjenkins容器
cd /var/jenkins_home/docker_home/moj/
ls
Dockerfile
前期准备完成,那么接下来我们进入jenkins去配置项目所需要的
安装Publish Over SSH
系统管理–>插件管理–>搜索框输入 publish Over SSH 点击安装
图示:
配置 publish Over SSH
系统管理–>系统配置
右下角有个Test Configuration
单机如果显示 Success 那么就成功了
配置jdk
系统管理–>全局工具配置
配置git
同jdk描述
配置maven
同jdk描述
新建任务:
名称自己定义
选择:构建一个自由风格的项目
随后点击:确定
配置项目
构建触发器
构建maven
选择执行shell
注意:
在准备工作有一步就是做这个的!!!
shell 内容:
#!/bin/sh
WORKSPACE='/var/jenkins_home/workspace/moj' #当前项目的工作空间路径,即jenkins构建后的项目根路径
PROJECT='/target' #编译文件所在路径
TARGET='/var/jenkins_home/docker_home/moj' #项目部署路径,也就是Dockerfile所在路径
NAME='moj' #项目名
PORT='8092' #项目暴露的端口
CONTAINER_ID=`docker ps -a | grep $NAME | awk '{print $1}'`
CONTAINER_NAME='MOJManager' #jar的名字
echo 容器ID $CONTAINER_ID
cd $WORKSPACE$PROJECT
echo 当前路径
pwd
echo 复制文件开始
cp $CONTAINER_NAME*.jar $TARGET
echo 复制文件结束
cd $TARGET
echo 当前路径
pwd
if [ -n "$CONTAINER_ID" ]; then
echo 停止docker容器
docker stop $NAME
echo 删除docker容器
docker rm $NAME
docker rmi $NAME
fi
echo 构建docker镜像开始
docker build -f Dockerfile . -t $NAME
echo 构建docker镜像结束
echo 启动docker容器
docker run -p $PORT:$PORT --name $NAME -d $NAME
echo 停止docker容器
配置完成,回到主页选择项目,点击 立即构建
控制台查看日志输出
如下就成功了
当dev这个分支有改动的时候,并且commit,push到git仓库之后。一分钟内就会自动重新构建,达到自动化部署的功能。
大功告成!