From f258c8169c6e747c097f785dcafcb143883a0dff Mon Sep 17 00:00:00 2001 From: Liu Jiaming Date: Fri, 12 Jun 2020 04:13:46 -0700 Subject: [PATCH] Scripts: retire release-image --- apollo_docker.sh | 138 +++++++++++------------------------------------ 1 file changed, 31 insertions(+), 107 deletions(-) diff --git a/apollo_docker.sh b/apollo_docker.sh index 7241dc9a68..0ed1d27a18 100755 --- a/apollo_docker.sh +++ b/apollo_docker.sh @@ -15,18 +15,10 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################### - DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd "${DIR}" - -# the machine type, currently support x86_64, aarch64 -MACHINE_ARCH=$(uname -m) -source ${DIR}/scripts/apollo_base.sh +source ${DIR}/scripts/apollo.bashrc -TIME=$(date +%Y%m%d_%H%M) -if [ -z "${DOCKER_REPO}" ]; then - DOCKER_REPO=apolloauto/apollo -fi +DEV_CONTAINER="apollo_dev_${USER}" function print_usage() { RED='\033[0;31m' @@ -35,14 +27,14 @@ function print_usage() { NONE='\033[0m' echo -e "\n${RED}Usage${NONE}: - .${BOLD}/apollo_docker.sh${NONE} [OPTION]" + ${BOLD}./apollo_docker.sh${NONE} [OPTION]" echo -e "\n${RED}Options${NONE}: ${BLUE}build${NONE}: run build only ${BLUE}build_opt${NONE}: build optimized binary for the code ${BLUE}build_gpu${NONE}: run build only with Caffe GPU mode support ${BLUE}build_opt_gpu${NONE}: build optimized binary with Caffe GPU mode support - ${BLUE}build_fe${NONE}: compile frontend javascript code, this requires all the node_modules to be installed already + ${BLUE}build_fe${NONE}: compile frontend JS code (requires all required node modules already installed) ${BLUE}buildify${NONE}: fix style of BUILD files ${BLUE}check${NONE}: run build/lint/test, please make sure it passes before checking in new code ${BLUE}clean${NONE}: run Bazel clean @@ -50,114 +42,46 @@ function print_usage() { ${BLUE}coverage${NONE}: generate test coverage report ${BLUE}doc${NONE}: generate doxygen document ${BLUE}lint${NONE}: run code style check - ${BLUE}usage${NONE}: print this menu - ${BLUE}release${NONE}: build release version ${BLUE}test${NONE}: run all unit tests + ${BLUE}usage${NONE}: print this menu ${BLUE}version${NONE}: display current commit and date - ${BLUE}push${NONE}: pushes the images to Docker hub - ${BLUE}gen${NONE}: generate a docker release image - ${BLUE}ota_gen${NONE}: generate an ota docker release image " } -function start_build_docker() { - docker ps --format "{{.Names}}" | grep apollo_dev_$USER 1>/dev/null 2>&1 - if [ $? != 0 ]; then - # If Google is reachable, we fetch the docker image directly. - if ping -q -c 1 -W 1 www.google.com 1>/dev/null 2>&1; then - opt="" - else - ping -q -c 1 -W 1 www.baidu.com 1>/dev/null 2>&1 - # If Baidu is unreachable, we use local images. - if [ $? -ne 0 ]; then - opt="-l" - fi - fi - bash docker/scripts/dev_start.sh ${opt} +function start_docker() { + if docker ps --format "{{.Names}}" | grep -q "${DEV_CONTAINER}" ; then + return fi -} - -function gen_docker() { - IMG="apolloauto/apollo:run-${MACHINE_ARCH}-20181017_1330" - CACHE_ROOT_DIR="${DIR}/.cache" - APOLLO_DIR="${CACHE_ROOT_DIR}/apollo_release/apollo" - - if [ ! -d "${APOLLO_DIR}" ]; then - echo "Release directory does not exist!" - exit 1 - fi - - RELEASE_NAME="${DOCKER_REPO}:release-${MACHINE_ARCH}-${TIME}" - DEFAULT_NAME="${DOCKER_REPO}:release-${MACHINE_ARCH}-latest" - docker pull $IMG - echo "time : ${TIME}" >> ${APOLLO_DIR}/meta.ini - echo "tag: ${RELEASE_NAME}" >> ${APOLLO_DIR}/meta.ini - - docker ps -a --format "{{.Names}}" | grep 'apollo_release' 1>/dev/null - if [ $? == 0 ];then - docker stop apollo_release 1>/dev/null - docker rm -f apollo_release 1>/dev/null - fi - docker run -it \ - -d \ - --name apollo_release \ - --net host \ - -v ${CACHE_ROOT_DIR}:/root/mnt \ - -w /apollo \ - "$IMG" - - if [ "$OTA_RELEASE" != "1" ]; then - docker exec apollo_release bash -c 'cp -Lr /root/mnt/apollo_release/apollo /' + # If Google is reachable, we fetch the docker image directly. + if ping -q -c 1 -W 1 www.google.com &>/dev/null ; then + opt="" else - RELEASE_TGZ="apollo_release.tar.gz" - SEC_RELEASE_TGZ="sec_apollo_release.tar.gz" - - [ -e "${CACHE_ROOT_DIR}/${RELEASE_TGZ}" ] && rm -f "${CACHE_ROOT_DIR}/${RELEASE_TGZ}" - [ -e "${CACHE_ROOT_DIR}/${SEC_RELEASE_TGZ}" ] && rm -f "${CACHE_ROOT_DIR}/${SEC_RELEASE_TGZ}" - - # generate security release package - tar czf "${CACHE_ROOT_DIR}/${RELEASE_TGZ}" -C "${CACHE_ROOT_DIR}" apollo_release - python modules/tools/ota/create_sec_package.py - docker exec apollo_release cp /root/mnt/${SEC_RELEASE_TGZ} /root + if ! ping -q -c 1 -W 1 www.baidu.com &>/dev/null; then + # If Baidu is unreachable, we use local images. + opt="-l" + fi fi - - CONTAINER_ID=$(docker ps | grep apollo_release | awk '{print $1}') - docker commit "$CONTAINER_ID" "$DEFAULT_NAME" - docker tag "$DEFAULT_NAME" "$RELEASE_NAME" - docker stop "$CONTAINER_ID" -} - -function push() { - DEFAULT_NAME="${DOCKER_REPO}:release-${MACHINE_ARCH}-latest" - LATEST_IMAG_ID=$(docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | grep "${DEFAULT_NAME}" | cut -d " " -f 2) - RELEASE_NAME=$(docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | grep ${LATEST_IMAG_ID}| grep -v "${DEFAULT_NAME}" | cut -d " " -f 1) - docker push "$DEFAULT_NAME" - docker push "$RELEASE_NAME" + bash docker/scripts/dev_start.sh ${opt} } -if [ $# == 0 ];then +# RELEASE_NAME=$(docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" +function main() { + if [ $# -eq 0 ];then print_usage exit 1 -fi - -start_build_docker - -case $1 in - print_usage) + fi + option="$1" + case $option in + -h|--help) print_usage - ;; - push) - push - ;; - gen) - gen_docker - ;; - ota_gen) - OTA_RELEASE=1 - gen_docker + exit 1 ;; *) - # TODO(storypku): fix user account issue - docker exec -u $USER apollo_dev_$USER bash -c "./apollo.sh $@" + start_docker + docker exec -u "${USER}" "${DEV_CONTAINER}" bash -c "./apollo.sh $*" ;; -esac + esac +} + + +main "$@" -- GitLab