jenkins远程动态打包镜像
实现效果


先把在jenkins上编译好的jar包传到远程主机,然后在远程主机构建好镜像后再回传到jenkins主机上
流水线配置



echo "本次构建镜像的名称空间为: $pronamespace" mvn -Pprod clean -DskipTests=true install scp -r ./register-center/target/register*.jar root@121:/root/yxh/ ssh root@121.237 "cd /root/yxh/ && sh createimages.sh $pronamespace" scp -r ./gateway-zuul/target/gateway*.jar root@121:/root/yxh/ ssh root@121.237 "cd /root/yxh/ && sh createimages.sh $pronamespace" scp -r ./main/target/main*.jar root@121:/root/yxh/ ssh root@121.237 "cd /root/yxh/ && sh createimages.sh $pronamespace" scp -r ./sdc-schedule/target/sdc*.jar root@121:/root/yxh/ ssh root@121.237 "cd /root/yxh/ && sh createimages.sh $pronamespace" scp -r ./report-server/target/report*.jar root@121:/root/yxh/ ssh root@121.237 "cd /root/yxh/ && sh createimages.sh $pronamespace" echo "统一把远程的镜像文件拷贝到工作空间目录" scp root@121.23:/root/yxh/*.gz . echo "执行最后的远程清理操作" ssh root@121.2 "cd /root/yxh/ && rm -fr *.tar.gz"
远程主机设置



CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )
cd $CURDIR
docker build -t registry.harbor.com:58443/namespace/servername .
FROM registry.harbor.com:58443/library/openjdk:8 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone VOLUME /tmp ADD jarname jarname ADD license.json license.json ADD ca.crt ca.crt RUN bash -c 'touch /jarname' ENTRYPOINT ["java","-Dspring.config.location=/application-prod.yml","-Djava.security.egd=file:/dev/./urandom","-jar","/jarname","/license.json"]
#!/bin/bash jarnamespace=$1 rm -fr build.sh rm -fr Dockerfile cp -r shelltemplates/* . deployapp=$(ls *.jar | cut -d'/' -f2-) echo $deployapp servername="${deployapp%.*}" echo $servername sed -i "s/jarname/$deployapp/g" Dockerfile sed -i "s/namespace/$jarnamespace/g" build.sh sed -i "s/servername/$servername/g" build.sh echo "开始构建镜像" sh build.sh echo "开始保存镜像到本机目录" docker save registry.harbor.com:58443/$jarnamespace/$servername | gzip > $servername.tar.gz echo "删除目录下的缓存文件" rm -fr *.jar

通过jenkins远程打包成功
多项目远程打包构建



多个项目远程动态打包配置
功能升级
echo "本次构建镜像的名称空间为: $pronamespace" cd ./dataprocess && mvn -Pprod clean -DskipTests=true install ssh root@111"rm -fr /root/yxh/flink/analysis*.jar" scp -r ./dataprocess/analysis-common/target/analysis-common*.jar root@121.237:/root/yxh/flink/ scp -r ./dataprocess/analysis-engine/target/analysis-engine*.jar root@121.2311:/root/yxh/flink/ scp -r ./dataprocess/analysis-stream-dependency/target/analysis-stream-dependency*.jar root@12140:/root/yxh/flink/ ssh root@121 "cd /root/yxh/flink/ && sh createimages.sh $pronamespace" echo "统一把远程的镜像文件拷贝到218指定目录" scp root@1211:/root/yxh/flink/*.gz . ssh admin@192.168.30.218 "mkdir -p /home/admin/one-deploy/arm-images/$savedir" scp -r *.gz admin@192.168.30.218:/home/admin/one-deploy/arm-images/$savedir/ rm -fr *.gz ssh admin@192.168.30.218 "cd /home/admin/one-deploy/arm-images/$savedir && ls | xargs -I {} md5sum {} > md5sum.txt" echo "执行最后的远程清理操作" ssh root@121.1 "cd /root/yxh/flink/ && rm -fr *.tar.gz" ssh root@121.21 "docker images | grep $pronamespace | grep flink | awk '{print $3}' | xargs -I {} docker rmi -f {}"
清除镜像
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/19438875
浙公网安备 33010602011771号