Jenkins将Harbor镜像拉取到目标服务器
将此文章写给我最心爱的女孩
目标服务器准备脚本文件
- 流程
jenkins需要把 harbor地址、harbor仓库、镜像名、镜像版本、主机端口、容器端口告诉目标服务器,因此需要6个参数给脚本
1.创建shell脚本并授予可执行权限
touch deploy.sh
chmod a+x deploy.sh
2.编写脚本
#!/bin/bash
harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
container_port=$5
host_port=$6
imageName=$harbor_addr/$harbor_repo/$project:$version
echo $imageName
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId
if [ "$containerId" != "" ];then
docker stop $containerId
docker rm $containerId
fi
tag=`docker images | grep ${project} | awk '{print $2}' `
echo $tag
if [ "$tag" =~ "$version" ];then
docker rmi -f $imageName
fi
docker login -u admin -p Harbor12345 $harbor_addr
docker pull $imageName
docker run -d -p $container_port:$host_port --name $project $imageName
echo "SUCCESS"
运行脚本
./deploy.sh 192.168.85.139 npy lover_story v3.0.0 8088 8082
3.jenkins配置
参数化构建:
构建后操作:
当构建之后,就会执行目标服务器的脚本文件去下载部署镜像了。
会出现的错误
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/
invalid argument "lover_story:origin/master" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
Build step 'Execute shell' marked build as failure
SSH: Current build result is [FAILURE], not going to run.
Finished: FAILURE
一定要把脚本文件移动到 /usr/bin目录下!