From 6b69ddc8611a616816b11fb02cc10f99ee07bbba Mon Sep 17 00:00:00 2001 From: Shilong Liu Date: Thu, 26 Aug 2021 18:21:18 +0800 Subject: [PATCH] [build] Fix reproducible build issues (#8548) * [build] Fix reproducible build issues --- .azure-pipelines/docker-sonic-slave.yml | 2 +- azure-pipelines.yml | 2 +- scripts/docker_version_control.sh | 7 +++++-- src/sonic-build-hooks/hooks/git | 6 ++++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.azure-pipelines/docker-sonic-slave.yml b/.azure-pipelines/docker-sonic-slave.yml index 02d1e0e58844..4724933172bc 100644 --- a/.azure-pipelines/docker-sonic-slave.yml +++ b/.azure-pipelines/docker-sonic-slave.yml @@ -43,7 +43,7 @@ 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,git,docker' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f7701703bfad..e21035f0fa9d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -36,7 +36,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 9c202ff8a06a..1bbffea603cf 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