You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

build_image.sh 3.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/bin/bash
  2. # Copyright 2021 The KubeEdge Authors.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # Reset in case getopts has been used previously in the shell
  16. OPTIND=1
  17. usage()
  18. {
  19. echo ""
  20. echo "Usage: $0 -r repository dir_1 ... dir_n"
  21. echo -e "\t-r The repository parameters allows to select a private Docker repository to upload the images to."
  22. echo -e "\tThe script expects a list of Sedna example to build (joint_inference, federated_learning, etc..).
  23. \tMultiple example can be built at the same time by passing a list of directories such as: dir_1 dir_2 ...
  24. \tIf no directory is specified, the script will automatically build all available examples."
  25. exit 1 # Exit script after printing help
  26. }
  27. while getopts "r:" opt
  28. do
  29. case "$opt" in
  30. r ) IMAGE_REPO="$OPTARG" ;;
  31. ? ) usage ;; # Print usage in case parameter is non-existent
  32. esac
  33. done
  34. shift $((OPTIND-1))
  35. [ "${1:-}" = "--" ] && shift
  36. type=$@
  37. if [ -z "$type" ]
  38. then
  39. echo "No example directory/s specified, building all example images.."
  40. type="all"
  41. fi
  42. if [ -z "$IMAGE_REPO" ]
  43. then
  44. echo "Using default Docker hub"
  45. IMAGE_REPO="kubeedge"
  46. fi
  47. cd "$(dirname "${BASH_SOURCE[0]}")"
  48. IMAGE_TAG=${GIT_TAG:-v0.5.0}
  49. EXAMPLE_REPO_PREFIX=${IMAGE_REPO}/sedna-example-
  50. dockerfiles_multiedgeinference=(
  51. multi-edge-inference-feature-extraction.Dockerfile
  52. # multi-edge-inference-gpu-feature-extraction.Dockerfile
  53. # multi-edge-inference-gpu-videoanalytics.Dockerfile
  54. multi-edge-inference-reid.Dockerfile
  55. multi-edge-inference-videoanalytics.Dockerfile
  56. )
  57. dockerfiles_federated_learning=(
  58. federated-learning-mistnet-yolo-aggregator.Dockerfile
  59. federated-learning-mistnet-yolo-client.Dockerfile
  60. federated-learning-surface-defect-detection-aggregation.Dockerfile
  61. federated-learning-surface-defect-detection-train.Dockerfile
  62. )
  63. dockerfiles_joint_inference=(
  64. joint-inference-helmet-detection-big.Dockerfile
  65. joint-inference-helmet-detection-little.Dockerfile
  66. )
  67. dockerfiles_lifelong_learning=(
  68. lifelong-learning-atcii-classifier.Dockerfile
  69. )
  70. dockerfiles_incremental_learning=(
  71. incremental-learning-helmet-detection.Dockerfile
  72. )
  73. # Iterate over the input folders and build them sequentially.
  74. for tp in ${type[@]}; do
  75. if [[ "$tp" == "all" ]]; then
  76. dockerfiles+=(
  77. "${dockerfiles_multiedgeinference[@]}"
  78. "${dockerfiles_federated_learning[@]}"
  79. "${dockerfiles_joint_inference[@]}"
  80. "${dockerfiles_lifelong_learning[@]}"
  81. "${dockerfiles_incremental_learning[@]}")
  82. else
  83. dfiles=dockerfiles_$tp[@]
  84. dockerfiles+=("${!dfiles}")
  85. fi
  86. done
  87. # Removing duplicate entries (if any)
  88. dockerfiles=($(echo "${dockerfiles[@]}" | tr ' ' '\n' | sort -u))
  89. for dockerfile in ${dockerfiles[@]}; do
  90. echo "Building $dockerfile"
  91. example_name=${dockerfile/.Dockerfile}
  92. docker build -f $dockerfile -t ${EXAMPLE_REPO_PREFIX}${example_name}:${IMAGE_TAG} --label sedna=examples ..
  93. done