本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。java
拉取jenkins镜像git
docker pull jenkins/jenkins
复制代码
该镜像为最新版镜像 jenkins非最新版 不少插件安装不上spring
查看已经安装的镜像docker
docker images
复制代码
运行镜像shell
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins/:/var/jenkins_home jenkins/jenkins
复制代码
简单解释一下这个语句浏览器
运行docker ps
查看是否正常启动springboot
[root@hyb ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e358a510dc5 jenkins/jenkins "/sbin/tini -- /us..." 5 weeks ago Up 33 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
复制代码
若是未正常启动多半是端口被占用了,运行netstat -tunlp|grep 8080
便可检查端口占用状况bash
接下来打开浏览器访问 你的ip:8080 便可看到jenkins的安装界面,若是看不到的话检查服务器防火墙设置服务器
首次运行时须要你输入一个密码,打开映射的路径下的secrets/initialAdminPassword,例如 /var/jenkins/secrets/initialAdminPassword微信
输入密码后会看到安装插件的页面
安装完成后建立管理员,填写完成提交便可
至此, jenkins已经安装完毕啦
在项目的根目录中新建一个文件 名称为Dockerfile ,填入如下内容
FROM java:8
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD service.jar /usr/share/myservice/myservice.jar
RUN bash -c 'touch /usr/share/myservice/myservice.jar'
ADD arthas-boot.jar /arthas-boot.jar
ENTRYPOINT java -Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -jar /usr/share/myservice/myservice.jar
EXPOSE 8088
复制代码
对jdk 配置的修改能够自行修改
首页 -> 点击系统管理 -> 管理插件 ->可选插件 -> 过滤:ssh -> 选择Publish Over SSH插件,点击直接安装
jenkins首页,系统管理 -> 系统设置 -> 下拉,找到Publish over SSH 点击新增
点击高级->选择Use password authentication,or use a different key 输入密码或者输入秘钥
点击保存退出
首页点击新建任务
输入任务名称,选择构建一个maven项目
在general中选择丢弃旧的构建以节省磁盘资源
在源码管理中选择git配置好git地址和密码
在构建环境中指定根pom.xml文件,而且写好maven打包命令
在post steps中选择Run only if build succeeds, 意为在编译成功后执行脚本在add post build step 中选择执行shell 执行sh脚本
rsync -av /var/jenkins_home/workspace/你的项目路径/test*.jar 你的用户名@你的IP:/tmp/test/service.jar
复制代码
修改本行命令中为对应的jar包地址和对应服务器的放置地址
ps:在容器中使用rsync时,须要在容器中生成ssh秘钥,远程链接而不是宿主机
进入容器的命令为docker exec -it 容器名 bash
ssh 免密登录操做步骤:
1.ssh-keygen
一直回车
2.ssh-copy-id 用户名@ip
输入yes以后输密码就行了
在构建后操做中选择send build artifacts over ssh 意为向远程服务器发送文件并执行命令
选择以前填写好的服务器,sourcefiles填写**/DockerFile remote directory 即为远程发送过去的文件地址
execCommand中输入如下脚本:
#!/bin
# DockerFile和jar包所在的文件夹
DOCKER_FILE_BASE_PATH=
# 修改jar包名称统一改成service.jar
mv $DOCKER_FILE_BASE_PATH/*.jar $DOCKER_FILE_BASE_PATH/service.jar
# 应用名称,也为容器名称
APPLICATION_NAME=
# 镜像名称
IMAGE_NAME=$APPLICATION_NAME:latest
# 中止并删除旧的容器
set -e; docker stop $APPLICATION_NAME && docker rm $APPLICATION_NAME || EXIT_CODE=$? && true;
#删除旧的镜像
set -e; docker rmi $IMAGE_NAME || EXIT_CODE=$? && true;
#构建镜像
docker build -t $IMAGE_NAME $DOCKER_FILE_BASE_PATH
#运行容器
docker run --name $APPLICATION_NAME -e "SPRING_PROFILES_ACTIVE=test" -d -p 8085:8088 -p 10009:10009 $IMAGE_NAME
复制代码
点击保存,而后左上点击当即构建
点击下面的buildhistory中正在构建的一个
点击控制台输出,便可查看构建日志,至此整套自动化部署已彻底完成
有兴趣能够关注个人我的微信公众号,会按期推送关于Java的技术文章,并且目前不恰饭都是干货哈哈哈哈