diff --git a/.github/workflows/deploy_docker_images.yml b/.github/workflows/deploy_docker_images.yml index e713feaf0..012ba3393 100644 --- a/.github/workflows/deploy_docker_images.yml +++ b/.github/workflows/deploy_docker_images.yml @@ -51,28 +51,16 @@ jobs: - name: Build with Maven run: mvn clean install -DskipTests - - name: Build submarine server + - name: Build and push submarine server run: ./dev-support/docker-images/submarine/build.sh - - name: Push submarine-server docker image - run: | - docker push apache/submarine:server-$SUBMARINE_VERSION - docker rmi apache/submarine:server-$SUBMARINE_VERSION - - name: Build submarine agent + - name: Build and push submarine agent run: ./dev-support/docker-images/agent/build.sh - - name: Push submarine-agent docker image - run: | - docker push apache/submarine:agent-$SUBMARINE_VERSION - docker rmi apache/submarine:agent-$SUBMARINE_VERSION - ## TODO(cdmikechen): In the future, we will not include the database as a built-in image + ## TODO(cdmikechen): In the future, we will not include the database as a built-in image ## to facilitate subsequent upgrades. - - name: Build submarine database + - name: Build and push submarine database run: ./dev-support/docker-images/database/build.sh - - name: Push submarine-database docker image - run: | - docker push apache/submarine:database-$SUBMARINE_VERSION - docker rmi apache/submarine:database-$SUBMARINE_VERSION deploy-builtin-images: if: github.repository == 'apache/submarine' @@ -90,33 +78,17 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build submarine jupyter + - name: Build and push submarine jupyter run: ./dev-support/docker-images/jupyter/build.sh - - name: Push submarine-jupyter docker image - run: | - docker push apache/submarine:jupyter-notebook-$SUBMARINE_VERSION - docker rmi apache/submarine:jupyter-notebook-$SUBMARINE_VERSION - - name: Build submarine jupyter gpu + - name: Build and push submarine jupyter gpu run: ./dev-support/docker-images/jupyter-gpu/build.sh - - name: Push submarine-jupyter-gpu docker image - run: | - docker push apache/submarine:jupyter-notebook-gpu-$SUBMARINE_VERSION - docker rmi apache/submarine:jupyter-notebook-gpu-$SUBMARINE_VERSION - - name: Build submarine mlflow + - name: Build and push submarine mlflow run: ./dev-support/docker-images/mlflow/build.sh - - name: Push submarine-mlflow docker image - run: | - docker push apache/submarine:mlflow-$SUBMARINE_VERSION - docker rmi apache/submarine:mlflow-$SUBMARINE_VERSION - - name: Build submarine quickstart + - name: Build and push submarine quickstart run: ./dev-support/examples/quickstart/build.sh - - name: Push submarine quickstart docker image - run: | - docker push apache/submarine:quickstart-$SUBMARINE_VERSION - docker rmi apache/submarine:quickstart-$SUBMARINE_VERSION deploy-cloud-native-and-cicd: if: github.repository == 'apache/submarine' @@ -134,16 +106,8 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Build submarine operator + - name: Build and push submarine operator run: ./dev-support/docker-images/operator-v3/build.sh - - name: Push submarine-operator docker image - run: | - docker push apache/submarine:operator-$SUBMARINE_VERSION - docker rmi apache/submarine:operator-$SUBMARINE_VERSION - - name: Build submarine cicd + - name: Build and push submarine cicd run: ./dev-support/cicd/build.sh - - name: Push submarine-cicd docker image - run: | - docker push apache/submarine:cicd-$SUBMARINE_VERSION - docker rmi apache/submarine:cicd-$SUBMARINE_VERSION diff --git a/dev-support/cicd/build.sh b/dev-support/cicd/build.sh index 9119cb01c..c178a171d 100755 --- a/dev-support/cicd/build.sh +++ b/dev-support/cicd/build.sh @@ -29,4 +29,4 @@ SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image echo "Start building the ${IMAGE} docker image ..." cd ${CURRENT_PATH} -docker build -t ${IMAGE} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${IMAGE} . diff --git a/dev-support/docker-images/agent/build.sh b/dev-support/docker-images/agent/build.sh index d82c9009c..59ef38d09 100755 --- a/dev-support/docker-images/agent/build.sh +++ b/dev-support/docker-images/agent/build.sh @@ -44,7 +44,7 @@ cp ${SUBMARINE_HOME}/submarine-server/server-submitter/submarine-k8s-agent/targe cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/docker-images/database/build.sh b/dev-support/docker-images/database/build.sh index 6ac1caaec..46c01e2d1 100755 --- a/dev-support/docker-images/database/build.sh +++ b/dev-support/docker-images/database/build.sh @@ -32,7 +32,7 @@ cp -rf "${SUBMARINE_HOME}/dev-support/database" "${CURRENT_PATH}" # build image echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." cd ${CURRENT_PATH} -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean template file rm -rf ${CURRENT_PATH}/database diff --git a/dev-support/docker-images/experiment-prehandler/build.sh b/dev-support/docker-images/experiment-prehandler/build.sh index dad4aff25..0cbdac1e5 100755 --- a/dev-support/docker-images/experiment-prehandler/build.sh +++ b/dev-support/docker-images/experiment-prehandler/build.sh @@ -39,12 +39,12 @@ trap "test -f $tmpfile && rm $tmpfile" RETURN curl -L -o $tmpfile ${HADOOP_TAR_URL} mv $tmpfile ${CURRENT_PATH}/tmp/hadoop-3.3.3.tar.gz -curl -L -o ${CURRENT_PATH}/tmp/hadoop-aws-3.3.3.jar https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.3/hadoop-aws-3.3.3.jar +curl -L -o ${CURRENT_PATH}/tmp/hadoop-aws-3.3.3.jar https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.3/hadoop-aws-3.3.3.jar curl -L -o ${CURRENT_PATH}/tmp/aws-java-sdk-bundle-1.12.267.jar https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.12.267/aws-java-sdk-bundle-1.12.267.jar echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." cd ${CURRENT_PATH} -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/docker-images/jupyter-gpu/build.sh b/dev-support/docker-images/jupyter-gpu/build.sh index 1d735d24b..bf65ea99e 100755 --- a/dev-support/docker-images/jupyter-gpu/build.sh +++ b/dev-support/docker-images/jupyter-gpu/build.sh @@ -29,4 +29,4 @@ SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image echo "Start building the ${JUPYTER_IMAGE} docker image ..." cd ${CURRENT_PATH} -docker build -t ${JUPYTER_IMAGE} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${JUPYTER_IMAGE} . diff --git a/dev-support/docker-images/jupyter/build.sh b/dev-support/docker-images/jupyter/build.sh index 0048903c2..25aaa8d6f 100755 --- a/dev-support/docker-images/jupyter/build.sh +++ b/dev-support/docker-images/jupyter/build.sh @@ -29,4 +29,4 @@ SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image echo "Start building the ${JUPYTER_IMAGE} docker image ..." cd ${CURRENT_PATH} -docker build -t ${JUPYTER_IMAGE} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${JUPYTER_IMAGE} . diff --git a/dev-support/docker-images/mlflow/build.sh b/dev-support/docker-images/mlflow/build.sh index afc9614d4..8d78c1346 100755 --- a/dev-support/docker-images/mlflow/build.sh +++ b/dev-support/docker-images/mlflow/build.sh @@ -29,4 +29,4 @@ export SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image echo "Start building the ${MLFLOW_IMAGE} docker image ..." cd ${CURRENT_PATH} -docker build -t ${MLFLOW_IMAGE} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${MLFLOW_IMAGE} . diff --git a/dev-support/docker-images/operator-v3/build.sh b/dev-support/docker-images/operator-v3/build.sh index 215dfc734..55dfbd1cf 100755 --- a/dev-support/docker-images/operator-v3/build.sh +++ b/dev-support/docker-images/operator-v3/build.sh @@ -32,7 +32,7 @@ cp -r ${SUBMARINE_HOME}/submarine-cloud-v3/ "${CURRENT_PATH}/tmp/submarine-cloud cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/docker-images/operator/build.sh b/dev-support/docker-images/operator/build.sh index 717c64949..384d538dd 100755 --- a/dev-support/docker-images/operator/build.sh +++ b/dev-support/docker-images/operator/build.sh @@ -32,7 +32,7 @@ cp -r ${SUBMARINE_HOME}/submarine-cloud-v2/ "${CURRENT_PATH}/tmp/submarine-cloud cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/docker-images/serve/build.sh b/dev-support/docker-images/serve/build.sh index 124cf6d34..2ff1a9b42 100755 --- a/dev-support/docker-images/serve/build.sh +++ b/dev-support/docker-images/serve/build.sh @@ -30,4 +30,4 @@ export SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . diff --git a/dev-support/docker-images/submarine/build.sh b/dev-support/docker-images/submarine/build.sh index 3a48e9d46..9fa89a11c 100755 --- a/dev-support/docker-images/submarine/build.sh +++ b/dev-support/docker-images/submarine/build.sh @@ -59,7 +59,7 @@ cp ${SUBMARINE_HOME}/bin/submarine.sh "${CURRENT_PATH}/tmp/" cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/mnist-pytorch/DDP/build.sh b/dev-support/examples/mnist-pytorch/DDP/build.sh index 0c20f05ca..c1d0a4baa 100755 --- a/dev-support/examples/mnist-pytorch/DDP/build.sh +++ b/dev-support/examples/mnist-pytorch/DDP/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh b/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh index 019561e6e..44232678a 100755 --- a/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh +++ b/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh b/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh index 7132c0d15..876beddb0 100755 --- a/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh +++ b/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh b/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh index 5f90d2289..9cca5a542 100755 --- a/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh +++ b/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/nn-pytorch/build.sh b/dev-support/examples/nn-pytorch/build.sh index a46b497c1..f557d84ef 100755 --- a/dev-support/examples/nn-pytorch/build.sh +++ b/dev-support/examples/nn-pytorch/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/quickstart/build.sh b/dev-support/examples/quickstart/build.sh index 5a836fe6b..9d268ede2 100755 --- a/dev-support/examples/quickstart/build.sh +++ b/dev-support/examples/quickstart/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/examples/tracking/build.sh b/dev-support/examples/tracking/build.sh index fd9062bfd..60c133232 100755 --- a/dev-support/examples/tracking/build.sh +++ b/dev-support/examples/tracking/build.sh @@ -38,7 +38,7 @@ cp -r "${SUBMARINE_HOME}/submarine-sdk" "${CURRENT_PATH}/tmp" # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} . # clean temp file rm -rf "${CURRENT_PATH}/tmp" diff --git a/dev-support/misc/flask/build.sh b/dev-support/misc/flask/build.sh index 6869ef66d..0340235f6 100755 --- a/dev-support/misc/flask/build.sh +++ b/dev-support/misc/flask/build.sh @@ -30,4 +30,4 @@ export SUBMARINE_HOME=${CURRENT_PATH}/../../.. # build image cd ${CURRENT_PATH} echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..." -docker build -t ${SUBMARINE_IMAGE_NAME} . +docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .