jenkins远程动态打包镜像

实现效果

            QQ_1767515681850

           QQ_1767516892223

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

流水线配置

            QQ_1767515863101

               QQ_1767515935737

                 QQ_1767516023550

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"
jenkins流水线编写

 远程主机设置

          QQ_1767516252850

          QQ_1767516291115

         QQ_1767516344665

CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )
cd $CURDIR

docker build -t  registry.harbor.com:58443/namespace/servername .
build.sh
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"]
Dockerfile
#!/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
createimages.sh

      QQ_1767516707923

      通过jenkins远程打包成功

多项目远程打包构建

         QQ_1767593618396

        QQ_1767593798682

       QQ_1767593975746

         多个项目远程动态打包配置

功能升级

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 {}"
View Code

  清除镜像

 

posted @ 2026-01-04 16:53  不懂123  阅读(3)  评论(0)    收藏  举报