|
|
@@ -14,25 +14,91 @@ |
|
|
# See the License for the specific language governing permissions and |
|
|
# See the License for the specific language governing permissions and |
|
|
# limitations under the License. |
|
|
# limitations under the License. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Reset in case getopts has been used previously in the shell |
|
|
|
|
|
OPTIND=1 |
|
|
|
|
|
|
|
|
|
|
|
usage() |
|
|
|
|
|
{ |
|
|
|
|
|
echo "" |
|
|
|
|
|
echo "Usage: $0 -r repository dir_1 ... dir_n" |
|
|
|
|
|
echo -e "\t-r The repository parameters allows to select a private Docker repository to upload the images to." |
|
|
|
|
|
echo -e "\tThe script expects a list of Sedna example to build (joint_inference, federated_learning, etc..). |
|
|
|
|
|
\tMultiple example can be built at the same time by passing a list of directories such as: dir_1 dir_2 ... |
|
|
|
|
|
\tIf no directory is specified, the script will automatically build all available examples." |
|
|
|
|
|
exit 1 # Exit script after printing help |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
while getopts "r:" opt |
|
|
|
|
|
do |
|
|
|
|
|
case "$opt" in |
|
|
|
|
|
r ) IMAGE_REPO="$OPTARG" ;; |
|
|
|
|
|
? ) usage ;; # Print usage in case parameter is non-existent |
|
|
|
|
|
esac |
|
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
|
|
shift $((OPTIND-1)) |
|
|
|
|
|
|
|
|
|
|
|
[ "${1:-}" = "--" ] && shift |
|
|
|
|
|
|
|
|
|
|
|
type=$@ |
|
|
|
|
|
|
|
|
|
|
|
if [ -z "$type" ] |
|
|
|
|
|
then |
|
|
|
|
|
echo "No example directory/s specified, building all example images.." |
|
|
|
|
|
type="all" |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
if [ -z "$IMAGE_REPO" ] |
|
|
|
|
|
then |
|
|
|
|
|
echo "Using default Docker hub" |
|
|
|
|
|
IMAGE_REPO="kubeedge" |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
cd "$(dirname "${BASH_SOURCE[0]}")" |
|
|
cd "$(dirname "${BASH_SOURCE[0]}")" |
|
|
|
|
|
|
|
|
IMAGE_REPO=${IMAGE_REPO:-kubeedge} |
|
|
|
|
|
IMAGE_TAG=${IMAGE_TAG:-v0.4.0} |
|
|
IMAGE_TAG=${IMAGE_TAG:-v0.4.0} |
|
|
|
|
|
|
|
|
EXAMPLE_REPO_PREFIX=${IMAGE_REPO}/sedna-example- |
|
|
EXAMPLE_REPO_PREFIX=${IMAGE_REPO}/sedna-example- |
|
|
|
|
|
|
|
|
dockerfiles=( |
|
|
|
|
|
|
|
|
dockerfiles_federated_learning=( |
|
|
federated-learning-mistnet-yolo-aggregator.Dockerfile |
|
|
federated-learning-mistnet-yolo-aggregator.Dockerfile |
|
|
federated-learning-mistnet-yolo-client.Dockerfile |
|
|
federated-learning-mistnet-yolo-client.Dockerfile |
|
|
federated-learning-surface-defect-detection-aggregation.Dockerfile |
|
|
federated-learning-surface-defect-detection-aggregation.Dockerfile |
|
|
federated-learning-surface-defect-detection-train.Dockerfile |
|
|
federated-learning-surface-defect-detection-train.Dockerfile |
|
|
incremental-learning-helmet-detection.Dockerfile |
|
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
dockerfiles_joint_inference=( |
|
|
joint-inference-helmet-detection-big.Dockerfile |
|
|
joint-inference-helmet-detection-big.Dockerfile |
|
|
joint-inference-helmet-detection-little.Dockerfile |
|
|
joint-inference-helmet-detection-little.Dockerfile |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
dockerfiles_lifelong_learning=( |
|
|
lifelong-learning-atcii-classifier.Dockerfile |
|
|
lifelong-learning-atcii-classifier.Dockerfile |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
for dockerfile in ${dockerfiles[@]}; do |
|
|
|
|
|
example_name=${dockerfile/.Dockerfile} |
|
|
|
|
|
docker build -f $dockerfile -t ${EXAMPLE_REPO_PREFIX}${example_name}:${IMAGE_TAG} --label sedna=examples .. |
|
|
|
|
|
|
|
|
dockerfiles_incremental_learning=( |
|
|
|
|
|
incremental-learning-helmet-detection.Dockerfile |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
# Iterate over the input folders and build them sequentially. |
|
|
|
|
|
for tp in ${type[@]}; do |
|
|
|
|
|
if [[ "$tp" == "all" ]]; then |
|
|
|
|
|
dockerfiles+=( |
|
|
|
|
|
"${dockerfiles_federated_learning[@]}" |
|
|
|
|
|
"${dockerfiles_joint_inference[@]}" |
|
|
|
|
|
"${dockerfiles_lifelong_learning[@]}" |
|
|
|
|
|
"${dockerfiles_incremental_learning[@]}") |
|
|
|
|
|
else |
|
|
|
|
|
dfiles=dockerfiles_$tp[@] |
|
|
|
|
|
dockerfiles+=("${!dfiles}") |
|
|
|
|
|
fi |
|
|
done |
|
|
done |
|
|
|
|
|
|
|
|
|
|
|
# Removing duplicate entries (if any) |
|
|
|
|
|
dockerfiles=($(echo "${dockerfiles[@]}" | tr ' ' '\n' | sort -u)) |
|
|
|
|
|
|
|
|
|
|
|
for dockerfile in ${dockerfiles[@]}; do |
|
|
|
|
|
echo "Building $dockerfile" |
|
|
|
|
|
example_name=${dockerfile/.Dockerfile} |
|
|
|
|
|
docker build -f $dockerfile -t ${IMAGE_REPO}/${example_name}:${IMAGE_TAG} --label sedna=examples .. |
|
|
|
|
|
done |