From 3a7942c448ca29ea7a7ee2cfe3e4107acfdf114e Mon Sep 17 00:00:00 2001 From: Jenny Li Date: Wed, 1 Dec 2021 13:11:44 +0800 Subject: [PATCH] [skip ci] Set docker mirror for ci build docker image (#12480) Signed-off-by: Jenny Li --- build/ci/jenkins/Jenkinsfile | 5 ++- build/ci/jenkins/Nightly.groovy | 3 ++ build/ci/jenkins/PR.groovy | 5 ++- build/ci/jenkins/PublishImages.groovy | 1 + build/set_docker_mirror.sh | 50 +++++++++++++++++++++++++++ 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100755 build/set_docker_mirror.sh diff --git a/build/ci/jenkins/Jenkinsfile b/build/ci/jenkins/Jenkinsfile index e2a107ca2d..543f96b588 100644 --- a/build/ci/jenkins/Jenkinsfile +++ b/build/ci/jenkins/Jenkinsfile @@ -33,7 +33,7 @@ pipeline { customWorkspace '/home/jenkins/agent/workspace' // We allow this pod to remain active for a while, later jobs can // reuse cache in previous created nodes. - idleMinutes 120 + // idleMinutes 120 } } environment { @@ -52,6 +52,9 @@ pipeline { } } container('main') { + dir ('build'){ + sh './set_docker_mirror.sh' + } dir ('tests/scripts') { script { sh 'printenv' diff --git a/build/ci/jenkins/Nightly.groovy b/build/ci/jenkins/Nightly.groovy index 81184d3aee..b33d6ac4e3 100644 --- a/build/ci/jenkins/Nightly.groovy +++ b/build/ci/jenkins/Nightly.groovy @@ -47,6 +47,9 @@ pipeline { stage ('Build'){ steps { container('main') { + dir ('build'){ + sh './set_docker_mirror.sh' + } dir ('tests/scripts') { script { sh 'printenv' diff --git a/build/ci/jenkins/PR.groovy b/build/ci/jenkins/PR.groovy index ea40185257..3ff8b807b2 100644 --- a/build/ci/jenkins/PR.groovy +++ b/build/ci/jenkins/PR.groovy @@ -20,7 +20,7 @@ pipeline { defaultContainer 'main' yamlFile 'build/ci/jenkins/pod/rte.yaml' customWorkspace '/home/jenkins/agent/workspace' - idleMinutes 120 + // idleMinutes 120 } } environment { @@ -42,6 +42,9 @@ pipeline { stage ('Build'){ steps { container('main') { + dir ('build'){ + sh './set_docker_mirror.sh' + } dir ('tests/scripts') { script { sh 'printenv' diff --git a/build/ci/jenkins/PublishImages.groovy b/build/ci/jenkins/PublishImages.groovy index be243248fd..b653b21edf 100644 --- a/build/ci/jenkins/PublishImages.groovy +++ b/build/ci/jenkins/PublishImages.groovy @@ -32,6 +32,7 @@ pipeline { steps { container('main') { script { + sh './build/set_docker_mirror.sh' sh "build/builder.sh /bin/bash -c \"make install\"" def date = sh(returnStdout: true, script: 'date +%Y%m%d').trim() diff --git a/build/set_docker_mirror.sh b/build/set_docker_mirror.sh new file mode 100755 index 0000000000..cf82ac5a0a --- /dev/null +++ b/build/set_docker_mirror.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# Use Internal docker mirror to solve https://www.docker.com/increase-rate-limits +set -e + +MIRROR_URL="http://10.201.177.237:5000" +set_daemon_json_file(){ + DOCKER_DAEMON_JSON_FILE="/etc/docker/daemon.json" + if test -f ${DOCKER_DAEMON_JSON_FILE} + then + cp ${DOCKER_DAEMON_JSON_FILE} "${DOCKER_DAEMON_JSON_FILE}.bak" + if grep -q registry-mirrors "${DOCKER_DAEMON_JSON_FILE}.bak";then + cat "${DOCKER_DAEMON_JSON_FILE}.bak" | sed -n "1h;1"'!'"H;\${g;s|\"registry-mirrors\":\s*\[[^]]*\]|\"registry-mirrors\": [\"${MIRROR_URL}\"]|g;p;}" | tee ${DOCKER_DAEMON_JSON_FILE} + else + cat "${DOCKER_DAEMON_JSON_FILE}.bak" | sed -n "s|{|{\"registry-mirrors\": [\"${MIRROR_URL}\"],|g;p;" | tee ${DOCKER_DAEMON_JSON_FILE} + fi + else + mkdir -p "/etc/docker" + echo "{\"registry-mirrors\": [\"${MIRROR_URL}\"]}" | tee ${DOCKER_DAEMON_JSON_FILE} + fi +} +restart_docker () { + echo "set-mirror.sh] service docker start" + docker ps -aq | xargs -r docker rm -f || true + service docker stop || true + service docker start + while true; do + # docker ps -q should only work if the daemon is ready + docker info > /dev/null 2>&1 && break + if [[ ${WAIT_N} -lt 5 ]]; then + WAIT_N=$((WAIT_N+1)) + echo " set-mirror.sh] Waiting for Docker to be ready, sleeping for ${WAIT_N} seconds ..." + sleep ${WAIT_N} + else + echo "set-mirror.sh] [SETUP] Reached maximum attempts, not waiting any longer ..." + break + fi + done + echo "Show Docker Info With mirror url" + docker info +} + +set_mirror(){ + set_daemon_json_file + restart_docker + echo "Success." + exit 0 + +} + +set_mirror \ No newline at end of file