确保jenkins 前置插件已经安装,确保jenkis可以打包文件,jenkis服务器安装docker,docker安装参见其他文档
如果使用私库,由于不支持https,需要修改配置文件参见:https://www.cnblogs.com/ff111/p/15012854.html 常见问题3
创建一个登陆jenkins服务器的SSH账号,由于jenkins直接执行shell命令是没有权限调用docker命令,为了简便期间,就创建个链接jenkins服务器的账号,执行用root用户去执行,脚本
创建一个maven项目
配置源码路径,我是放在git上的
选择执行后脚本
执行的脚本
#!/bin/bash
echo "↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓开始↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓"
VAR_DOCKERFILE_PATH="/var/lib/jenkins/workspace/docker_zkui/zkui-master/docker/Dockerfile"
VAR_PROJECT_TARGET_PATH="/var/lib/jenkins/workspace/docker_zkui/zkui-master/target"
VAR_PROJECT_NAME="zkui-master"
VAR_IMAGE_REGISTRY="192.168.88.85:5000"
VAR_IMAGE_TAG="latest"
#入参变量打印
echo "DockerFile文件路径:${VAR_DOCKERFILE_PATH}"
echo "项目打包路径:${VAR_PROJECT_TARGET_PATH}"
echo "项目名称和镜像名称:${VAR_PROJECT_NAME}"
echo "私库地址:${VAR_IMAGE_REGISTRY}"
echo "镜像标签:${VAR_IMAGE_TAG}"
#把Dockerfile文件复制到JENKINS 项目target目录下
cp ${VAR_DOCKERFILE_PATH} ${VAR_PROJECT_TARGET_PATH}
#进入项目target目录下
cd ${VAR_PROJECT_TARGET_PATH}
echo "当前目录:$(cd "$(dirname "$0")";pwd)"
#构件镜像
docker build -t ${VAR_IMAGE_REGISTRY}/${VAR_PROJECT_NAME}:${VAR_IMAGE_TAG} .
echo "构件镜像完成."
#镜像推送至私库
docker push ${VAR_IMAGE_REGISTRY}/${VAR_PROJECT_NAME}:${VAR_IMAGE_TAG}
echo "镜像推送至私库完成."
echo "开始清理本地历史镜像..."
##提取出镜像id
for i in `docker images | grep -v "IMAGE" | awk '{print $3}'`
do
{
##删除镜像
docker rmi -f $i &>/dev/null
echo "docekr delete $i complete"
}
done
echo "清理本地历史镜像完成."
echo "↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑结束↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
暂未实现私库镜像删除管理,仅提供一个思路,谢谢