diff --git a/.azure-pipelines/docker-sonic-slave.yml b/.azure-pipelines/docker-sonic-slave.yml index 4d111446d805..7eb72e2fa824 100644 --- a/.azure-pipelines/docker-sonic-slave.yml +++ b/.azure-pipelines/docker-sonic-slave.yml @@ -44,9 +44,9 @@ parameters: default: sonicdev variables: -- ${{ if and(startsWith(variables['Build.SourceBranchName'], '202'), eq(length(variables['Build.SourceBranchName']), 6)) }}: +- ${{ if eq(variables['Build.SourceBranchName'], '202012' }}: - name: BUILD_OPTIONS - value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' stages: - stage: Build diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b3a76b5221cf..d2cad2590cdf 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -38,7 +38,7 @@ stages: variables: CACHE_MODE: rcache ${{ if eq(variables['Build.SourceBranchName'], '202012') }}: - VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' jobs: - template: .azure-pipelines/azure-pipelines-build.yml parameters: diff --git a/scripts/docker_version_control.sh b/scripts/docker_version_control.sh index 9dd3ad55bad0..595477c859c6 100755 --- a/scripts/docker_version_control.sh +++ b/scripts/docker_version_control.sh @@ -21,7 +21,7 @@ tag=`echo $image_tag | cut -f2 -d:` if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,docker,* ]]; then # if docker image not in white list, exit - if [[ "$IMAGENAME" != sonic-slave-* ]] && [[ "$IMAGENAME" != docker-base* ]] && [[ "$IMAGENAME" != debian:* ]] && [[ "$IMAGENAME" != multiarch/debian-debootstrap:* ]];then + if [[ "$image_tag" != */debian:* ]] && [[ "$image_tag" != multiarch/debian-debootstrap:* ]];then exit 0 fi if [ -f $version_file ];then @@ -29,12 +29,15 @@ if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION fi if [ -z $hash_value ];then hash_value=unknown + echo "$image_tag sha256 value is unknown" >> ${new_version_file}.log + exit 0 fi oldimage=${image_tag//\//\\/} newimage="${oldimage}@$hash_value" + echo "sed -i \"s/$oldimage/$newimage/\" $DOCKERFILE" >> ${new_version_file}.log sed -i "s/$oldimage/$newimage/" $DOCKERFILE else - hash_value=`docker pull $image_tag | grep Digest | awk '{print$2}'` + hash_value=`docker pull $image_tag 2> ${new_version_file}.log | grep Digest | awk '{print$2}'` if [ -z hash_value ];then hash_value=unknown fi diff --git a/src/sonic-build-hooks/hooks/git b/src/sonic-build-hooks/hooks/git index 2101358379d6..8c3e39f67a7d 100755 --- a/src/sonic-build-hooks/hooks/git +++ b/src/sonic-build-hooks/hooks/git @@ -39,7 +39,8 @@ get_clone_path(){ done # if not specific clone path, get default clone path - [ -z $clone_PATH ] && clone_PATH=`echo $URL | rev | awk -F/ '{print$1}' | rev | awk -F. '{print$1}'` + # 1. trim tail slash sign. 2. trim all charactors before the last slash. 3.trim tail '.git' + [ -z $clone_PATH ] && clone_PATH=`echo $URL | sed 's/\/$//' | awk -F/ '{print$NF}' | awk -F. '{print$1}'` } main(){ @@ -62,7 +63,8 @@ main(){ # control version or record version file if [[ $ENABLE_VERSION_CONTROL_GIT == "y" ]];then # control version - [ ! -z $commit ] && $REAL_COMMAND reset --hard $commit &> /dev/null + [ -n $commit ] && echo "git reset --hard $commit" >> ${new_version_file}.log + [ -n $commit ] && $REAL_COMMAND reset --hard $commit &> ${new_version_file}.log else # record version file echo "$URL==$commit_latest" >> $new_version_file