123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #!/bin/sh
- set -e
- # 配置
- DOCKER_PREFIX="algo-dev-internal.li-ai.com.cn:5000"
- DOCKER_PREFIX2="nas.fast-fun.cn:5000"
- # 获取项目名称
- projectname=`cat projectname`
- dockerfile=""
- imagesuffix=""
- if [ "$2" == 'encrypt' ];then
- dockerfile="DockerfileEncrypt"
- imagesuffix="-encrypt"
- else
- dockerfile="Dockerfile"
- fi
- touch packaged.txt
- configfile_changed="0"
- # 读取 本次 changelist的每一行
- # 第一次循环看是否存在配置文件的改变,如果存在,则全部镜像进行一次打包
- while read line;
- do
- if [ "$configfile_changed" -eq "1" ];then # 如果没有配置文件发生改变,则看有没有算法发生改变
- break
- fi
- if [ "`expr \"$line\" : \"RESOURCES/config-prd.ini*\"`" != "0" ] ||
- [ "`expr \"$line\" : \"RESOURCES/config-test.ini*\"`" != "0" ] ||
- [ "`expr \"$line\" : \"RESOURCES/config-algotest.ini*\"`" != "0" ];then # 如果配置文件有更改,则全部镜像都重新打包一遍
- configfile_changed="1"
- echo "配置文件发生更改,将重新打包所有镜像"
- for i in `ls ALGOS/NONPERIODIC/`;do
- path="ALGOS/NONPERIODIC/"$i
- image=$i
- if (ls $path | grep $dockerfile > null);then
- image=$image$imagesuffix:1.0.${DRONE_BUILD_NUMBER}
- image=`echo "$image" | tr [:upper:] [:lower:]`
- echo $image "镜像打包中................"
- docker build -f ./$path/$dockerfile -t ${image} .
- imagetag=${DOCKER_PREFIX}/${projectname}/${image}
- docker tag ${image} $imagetag
- echo $path >> packaged.txt
- echo $image "镜像打包完成!"
- echo $imagetag "镜像上传中................"
- imagetag2=${DOCKER_PREFIX2}/${projectname}/${image}
- docker tag ${image} $imagetag2
- echo $imagetag2 "镜像上传中................"
- docker push $imagetag
- echo $imagetag "镜像上传完成!"
- docker push $imagetag2
- echo $imagetag2 "镜像上传完成!"
- fi
- done
- for i in `ls ALGOS/DATAANALYSE/`;do
- path="ALGOS/DATAANALYSE/"$i
- image=$i
- if (ls $path | grep $dockerfile > null);then
- image=$image$imagesuffix:1.0.${DRONE_BUILD_NUMBER}
- image=`echo "$image" | tr [:upper:] [:lower:]`
- echo $image "镜像打包中................"
- docker build -f ./$path/$dockerfile -t ${image} .
- imagetag=${DOCKER_PREFIX}/${projectname}/${image}
- docker tag ${image} $imagetag
- echo $path >> packaged.txt
- echo $image "镜像打包完成!"
- echo $imagetag "镜像上传中................"
- imagetag2=${DOCKER_PREFIX2}/${projectname}/${image}
- docker tag ${image} $imagetag2
- echo $imagetag2 "镜像上传中................"
- docker push $imagetag
- echo $imagetag "镜像上传完成!"
- docker push $imagetag2
- echo $imagetag2 "镜像上传完成!"
- fi
- done
- for i in `ls ALGOS/PERIODIC/`;do
- for ii in `ls ALGOS/PERIODIC/$i`;do
- path="ALGOS/PERIODIC/"$i/$ii
- image=$i"_"$ii
- if (ls $path | grep $dockerfile > null);then
- image=$image$imagesuffix:1.0.${DRONE_BUILD_NUMBER}
- image=`echo "$image" | tr [:upper:] [:lower:]`
- echo $image "镜像打包中................"
- docker build -f ./$path/$dockerfile -t ${image} .
- imagetag=${DOCKER_PREFIX}/${projectname}/${image}
- docker tag ${image} $imagetag
- echo $path >> packaged.txt
- echo $image "镜像打包完成!"
- echo $imagetag "镜像上传中................"
- imagetag2=${DOCKER_PREFIX2}/${projectname}/${image}
- docker tag ${image} $imagetag2
- echo $imagetag2 "镜像上传中................"
- docker push $imagetag
- echo $imagetag "镜像上传完成!"
- docker push $imagetag2
- echo $imagetag2 "镜像上传完成!"
- fi
- done
- done
- fi
- done < $1
- if [ "$configfile_changed" -eq "0" ];then # 如果没有配置文件发生改变,则看有没有算法发生改变
- echo "没有配置文件发生更改, 检查是否存在算法需要打包"
- while read line;
- do
- if [ "`expr \"$line\" : \"ALGOS/*\"`" != "0" ] ;then # 如果算法库有更改
- OLD_IFS="$IFS"
- IFS="/" #修改分隔符
- i=0
- path="."
- for item in $line;do # 切分每一个单词
- IFS="$OLD_IFS"
- i=`expr $i + 1`
- path=$path"/"$item
- if [ "$i" -eq "2" ];then
- type=$item # 判断是 NONPERIODIC 还是PERIODIC
- fi
- if [ "$i" -gt "2" ] && [ "`expr \"$type\" : \"PERIODIC$\"`" != "0" ] ;then
- if [ "$i" -gt "3" ];then
- break
- fi
- elif [ "$i" -gt "2" ] && [ "`expr \"$type\" : \"NONPERIODIC$\"`" != "0" ] ;then
- if [ "$i" -gt "2" ];then
- break
- fi
- elif [ "$i" -gt "2" ] && [ "`expr \"$type\" : \"DATAANALYSE$\"`" != "0" ] ;then
- if [ "$i" -gt "2" ];then
- break
- fi
- fi
-
- done
- IFS="$OLD_IFS"
-
- if ! (cat packaged.txt | grep "$path" > filt.txt);then # 如果文件为空,则进行打包
- OLD_IFS="$IFS"
- IFS="/" #修改分隔符
- i=0
- for item in $path;do # 切分每一个单词
- IFS="$OLD_IFS"
- i=`expr $i + 1`
- if [ "$i" -eq "4" ];then
- image=$item #
- fi
- if [ "$i" -eq "5" ];then
- image=$image"_"$item #
- fi
-
- done
- IFS="$OLD_IFS"
- if (ls $path | grep $dockerfile > null);then
- image=$image$imagesuffix:1.0.${DRONE_BUILD_NUMBER}
- image=`echo "$image" | tr [:upper:] [:lower:]`
- echo $image "镜像打包中................"
- docker build -f ./$path/$dockerfile -t ${image} .
- imagetag=${DOCKER_PREFIX}/${projectname}/${image}
- docker tag ${image} $imagetag
- echo $path >> packaged.txt
- echo $image "镜像打包完成!"
- echo $imagetag "镜像上传中................"
- imagetag2=${DOCKER_PREFIX2}/${projectname}/${image}
- docker tag ${image} $imagetag2
- echo $imagetag2 "镜像上传中................"
- docker push $imagetag
- echo $imagetag "镜像上传完成!"
- docker push $imagetag2
- echo $imagetag2 "镜像上传完成!"
- fi
- fi
- fi
- done < $1
- fi
|