package.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. set -e
  3. echo "git show --name-only --oneline > changelist"
  4. git show --name-only --oneline > changelist
  5. # 循环查找修改过的ALGOS/路径下的文件
  6. NONPERIODIC_PREFIX="ALGOS/NONPERIODIC/"
  7. PERIODIC_PREFIX="ALGOS/PERIODIC/"
  8. declare -a need_package_arr # 记录需要打包的路径
  9. j=0
  10. changelists=($(cat changelist))
  11. for i in $( seq 0 $((${#changelists[*]} -1)) )
  12. do
  13. if [[ ${changelists[i]} == ALGOS/* ]];then # 如果算法库有更改
  14. OLD_IFS="$IFS"
  15. IFS="/" #修改分隔符
  16. arr=(${changelists[i]})
  17. IFS="$OLD_IFS"
  18. if [[ ${changelists[i]} == ALGOS/NONPERIODIC/* ]];then # 如果更改的是非周期算法
  19. temp=$NONPERIODIC_PREFIX${arr[2]}"/"
  20. if [[ ! "${need_package_arr[@]}" =~ "$temp" ]]; then # 如果该 算法路径已经包含过,则跳过
  21. need_package_arr[$j]=$temp
  22. let j+=1
  23. fi
  24. elif [[ ${changelists[i]} == ALGOS/PERIODIC/* ]];then # 如果更改的是周期类算法
  25. temp=$PERIODIC_PREFIX${arr[2]}"/"${arr[3]}"/"
  26. if [[ ! "${need_package_arr[@]}" =~ "$temp" ]]; then
  27. need_package_arr[$j]=$temp
  28. let j+=1
  29. fi
  30. fi
  31. # docker run --rm -e PLUGIN_TAG=latest -e PLUGIN_REPO=octocat/hello-world -e DOCKERFILE=ALGOS/algo1/dockerfile plugins/docker --dry-run
  32. fi
  33. done
  34. DOCKER_PREFIX="algo-dev-internal.li-ai.com.cn:5000"
  35. # 开始遍历打包
  36. for i in $( seq 0 $((${#need_package_arr[*]} -1)) )
  37. do
  38. # cd ${need_package_arr[$i]}
  39. ver=$(cat ./${need_package_arr[$i]}/ver)
  40. ver=$((10#${ver}+1))
  41. echo ${need_package_arr[$i]}:1.0.$ver" 镜像打包中.........."
  42. OLD_IFS="$IFS"
  43. IFS="/" #修改分隔符
  44. arr=(${need_package_arr[$i]})
  45. IFS="$OLD_IFS"
  46. if [[ ${need_package_arr[i]} == ALGOS/NONPERIODIC/* ]];then
  47. image=${arr[2]}:1.0.$ver
  48. elif [[ ${need_package_arr[i]} == ALGOS/PERIODIC/* ]];then
  49. image=${arr[2]}_${arr[3]}:1.0.$ver
  50. fi
  51. docker build -f ./${need_package_arr[$i]}/Dockerfile -t $image .
  52. done