#!/bin/bash set -e echo "git show --name-only --oneline > changelist" git show --name-only --oneline > changelist # 循环查找修改过的ALGOS/路径下的文件 NONPERIODIC_PREFIX="ALGOS/NONPERIODIC/" PERIODIC_PREFIX="ALGOS/PERIODIC/" declare -a need_package_arr # 记录需要打包的路径 j=0 changelists=($(cat changelist)) for i in $( seq 0 $((${#changelists[*]} -1)) ) do if [[ ${changelists[i]} == ALGOS/* ]];then # 如果算法库有更改 OLD_IFS="$IFS" IFS="/" #修改分隔符 arr=(${changelists[i]}) IFS="$OLD_IFS" if [[ ${changelists[i]} == ALGOS/NONPERIODIC/* ]];then # 如果更改的是非周期算法 temp=$NONPERIODIC_PREFIX${arr[2]}"/" if [[ ! "${need_package_arr[@]}" =~ "$temp" ]]; then # 如果该 算法路径已经包含过,则跳过 need_package_arr[$j]=$temp let j+=1 fi elif [[ ${changelists[i]} == ALGOS/PERIODIC/* ]];then # 如果更改的是周期类算法 temp=$PERIODIC_PREFIX${arr[2]}"/"${arr[3]}"/" if [[ ! "${need_package_arr[@]}" =~ "$temp" ]]; then need_package_arr[$j]=$temp let j+=1 fi fi # docker run --rm -e PLUGIN_TAG=latest -e PLUGIN_REPO=octocat/hello-world -e DOCKERFILE=ALGOS/algo1/dockerfile plugins/docker --dry-run fi done DOCKER_PREFIX="algo-dev-internal.li-ai.com.cn:5000" # 开始遍历打包 for i in $( seq 0 $((${#need_package_arr[*]} -1)) ) do # cd ${need_package_arr[$i]} ver=$(cat ./${need_package_arr[$i]}/ver) ver=$((10#${ver}+1)) echo ${need_package_arr[$i]}:1.0.$ver" 镜像打包中.........." OLD_IFS="$IFS" IFS="/" #修改分隔符 arr=(${need_package_arr[$i]}) IFS="$OLD_IFS" if [[ ${need_package_arr[i]} == ALGOS/NONPERIODIC/* ]];then image=${arr[2]}:1.0.$ver elif [[ ${need_package_arr[i]} == ALGOS/PERIODIC/* ]];then image=${arr[2]}_${arr[3]}:1.0.$ver fi docker build -f ./${need_package_arr[$i]}/Dockerfile -t $image . done