mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
CI: Add script for synchronization of the local mirrors for submodules
You should use it manually when any submodule in the esp-idf has changed You can mark to exclude some of them in mirror-list.txt
This commit is contained in:
parent
52445ee541
commit
8dc340d2ea
@ -1,10 +1,10 @@
|
||||
components/esp32/lib @GENERAL_MIRROR_SERVER@/idf/esp32-wifi-lib.git
|
||||
components/bt/lib @GENERAL_MIRROR_SERVER@/idf/esp32-bt-lib.git
|
||||
components/aws_iot/aws-iot-device-sdk-embedded-C @GENERAL_MIRROR_SERVER@/idf/aws-iot-device-sdk-embedded-C.git
|
||||
components/coap/libcoap @GENERAL_MIRROR_SERVER@/idf/libcoap.git
|
||||
components/esptool_py/esptool @GENERAL_MIRROR_SERVER@/idf/esptool.git
|
||||
components/libsodium/libsodium @GENERAL_MIRROR_SERVER@/idf/libsodium.git
|
||||
components/micro-ecc/micro-ecc @GENERAL_MIRROR_SERVER@/idf/micro-ecc.git
|
||||
components/nghttp/nghttp2 @GENERAL_MIRROR_SERVER@/idf/nghttp2.git
|
||||
third-party/mruby @GENERAL_MIRROR_SERVER@/idf/mruby.git
|
||||
third-party/neverbleed @GENERAL_MIRROR_SERVER@/idf/neverbleed.git
|
||||
components/aws_iot/aws-iot-device-sdk-embedded-C @GENERAL_MIRROR_SERVER@/idf/aws-iot-device-sdk-embedded-C.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
components/coap/libcoap @GENERAL_MIRROR_SERVER@/idf/libcoap.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
components/esptool_py/esptool @GENERAL_MIRROR_SERVER@/idf/esptool.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
components/libsodium/libsodium @GENERAL_MIRROR_SERVER@/idf/libsodium.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
components/micro-ecc/micro-ecc @GENERAL_MIRROR_SERVER@/idf/micro-ecc.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
components/nghttp/nghttp2 @GENERAL_MIRROR_SERVER@/idf/nghttp2.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
third-party/mruby @GENERAL_MIRROR_SERVER@/idf/mruby.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
third-party/neverbleed @GENERAL_MIRROR_SERVER@/idf/neverbleed.git ALLOW_TO_SYNC_FROM_PUBLIC
|
||||
|
87
tools/ci/mirror-synchronize.sh
Executable file
87
tools/ci/mirror-synchronize.sh
Executable file
@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Script for automate mirroring
|
||||
# You can run this script manually
|
||||
#
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Common bash
|
||||
|
||||
if [[ ! -z ${DEBUG} ]]
|
||||
then
|
||||
set -x # Activate the expand mode if DEBUG is anything but empty.
|
||||
fi
|
||||
|
||||
set -o errexit # Exit if command failed.
|
||||
set -o pipefail # Exit if pipe failed.
|
||||
set -o nounset # Exit if variable not set.
|
||||
|
||||
die() {
|
||||
echo "${1:-"Unknown Error"}" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
[ -z ${GITLAB_SSH_SERVER:-} ] && die "Have to set up GITLAB_SSH_SERVER environment variable"
|
||||
|
||||
REPO_DIR=${1:-"${PWD}"}
|
||||
REPO_DIR=$(readlink -f -- "${REPO_DIR}")
|
||||
|
||||
SCRIPT_DIR=$(dirname -- "${0}")
|
||||
SCRIPT_DIR=$(readlink -f -- "${SCRIPT_DIR}")
|
||||
|
||||
SCRIPT_SH=$(readlink -f -- "${0}")
|
||||
|
||||
MIRRORLIST=${SCRIPT_DIR}/mirror-list.txt
|
||||
|
||||
[ -d "${REPO_DIR}" ] || die "${REPO_DIR} is not directory!"
|
||||
[ -f "${SCRIPT_SH}" ] || die "${SCRIPT_SH} does not exist!"
|
||||
[ -f "${MIRRORLIST}" ] || die "${MIRRORLIST} does not exist!"
|
||||
|
||||
pushd ${REPO_DIR} >/dev/null
|
||||
|
||||
# 0
|
||||
[ -f ".gitmodules" ] || exit 0
|
||||
|
||||
# 1
|
||||
# Recursion
|
||||
git submodule update --init
|
||||
git submodule foreach "${SCRIPT_SH}" # No '--recursive'
|
||||
|
||||
# 2
|
||||
git submodule deinit --force .
|
||||
git submodule update --init
|
||||
|
||||
|
||||
# 3
|
||||
# Mirroring from original URLs to ones listed in the MIRRORLIST
|
||||
|
||||
# SED parses the strings like:
|
||||
#
|
||||
#-b991c67c1d91574ef22336cc3a5944d1e63230c9 roms/ipxe
|
||||
#b991c67c1d91574ef22336cc3a5944d1e63230c9 roms/ipxe (v1.0.0-2388-gb991c67)
|
||||
#
|
||||
for SUBPATH in $(git submodule status | sed -E 's/.*[[:space:]](.*)([[:space:]].*|$)/\1/')
|
||||
do
|
||||
SUBURL=$(git config -f .gitmodules --get submodule.$SUBPATH.url)
|
||||
SUBMIRROR=$(join -o"2.2" <(echo ${SUBPATH}) <(sort ${MIRRORLIST}))
|
||||
[ ${SUBMIRROR} ] || continue
|
||||
SUBMIRROR=${SUBMIRROR//@GENERAL_MIRROR_SERVER@/${GITLAB_SSH_SERVER}}
|
||||
|
||||
ALLOW_TO_SYNC=$(join -o"2.3" <(echo ${SUBPATH}) <(sort ${MIRRORLIST}))
|
||||
if [ "${ALLOW_TO_SYNC}" != "ALLOW_TO_SYNC_FROM_PUBLIC" ]
|
||||
then
|
||||
echo "[should not to sync mirror] ${SUBMIRROR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo -e "[mirror sync] ${SUBURL} \tto\t ${SUBMIRROR}"
|
||||
|
||||
pushd ${SUBPATH} >/dev/null
|
||||
git fetch --prune
|
||||
git push --prune ${SUBMIRROR} +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*
|
||||
popd >/dev/null
|
||||
done
|
||||
|
||||
popd >/dev/null
|
Loading…
Reference in New Issue
Block a user