之前搞了jenkins的自动构建 记录搭建使用自动构建 - jenkins,由于现在企业级都用容器来部署服务,自己也充电了一波,将jenkins集成了docker,实现容器部署。

其实就是在构建之后加了post step,进行docker打包和运行容器操作。

build_version=${BUILD_VERSION}
# 复制到到打包目录
cd $WORKSPACE
cp target/openapi-1.0.jar /data/dockerfile/app/app.jar
cd /data/dockerfile/app

# 分隔 jobname,date,version
job_name=`echo $build_version|cut -d "_" -f 1`
date=`echo $build_version|cut -d "_" -f 2`
version=`echo $build_version|cut -d "_" -f 3`

# 删除原来的容器和镜像
docker_container=`docker ps -a|grep $job_name| awk '{print $1}'`
if [ -n "$docker_container" ]; then
  docker ps -a|grep $job_name| awk '{print $1}'| xargs docker stop
  docker ps -a|grep $job_name| awk '{print $1}' | xargs docker rm
fi

docker_images=`docker images|grep $job_name| awk '{print $3}'`
if [ -n "$docker_images" ]; then
  docker images|grep $job_name| awk '{print $3}'|xargs docker rmi -f
fi


# 打包并运行
docker build -t $build_version .
docker tag $build_version $job_name:$version
docker rmi $build_version:latest

rm -f app.jar

# 启动
docker run -itd --restart=unless-stopped --name $job_name -p 65531:65531  $job_name:$version

Dockerfile

FROM java:8
MAINTAINER wangyiidii <wangyiidii@163.com>

VOLUME logs

RUN mkdir /usr/local/app
ADD app.jar /usr/local/app

ENV LANG C.UTF-8
ENV LANGUAGE zh_CN.UTF-8
ENV LC_ALL C.UTF-8
ENV TZ Asia/Shanghai

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF8", "-Dsun.jnu.encoding=UTF8", "-jar","/usr/local/app/app.jar", "--server.servlet.encoding.charset=utf-8", "--server.servlet.encoding.force=true", "--server.servlet.encoding.enabled=true"]

Jenkins常用脚本


// 删除所有的构建历史
item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
// 构建编号从1开始
item.updateNextBuildNumber(1)
  • 分类: JAVA
  • 标签: 无