# The azure pipeline template for Official build, and upgrade version build parameters: - name: 'jobFilters' type: object default: '' - name: 'buildOptions' type: string default: 'SONIC_CONFIG_BUILD_JOBS=1' - name: 'preSteps' type: stepList default: [] - name: 'postSteps' type: stepList default: [] - name: 'jobGroups' type: object default: '' jobs: - template: azure-pipelines-image-template.yml parameters: jobFilters: ${{ parameters.jobFilters }} preSteps: ${{ parameters.preSteps }} postSteps: ${{ parameters.postSteps }} jobVariables: PLATFORM_AZP: $(GROUP_NAME) PLATFORM_ARCH: amd64 BUILD_NUMBER: $(Build.BuildId) BUILD_OPTIONS: ${{ parameters.buildOptions }} DOCKER_DATA_ROOT_FOR_MULTIARCH: /data/march/docker dbg_image: no asan_image: no swi_image: no raw_image: no docker_syncd_rpc_image: no syncd_rpc_image: no platform_rpc: no ${{ if ne(parameters.jobGroups, '') }}: jobGroups: ${{ parameters.jobGroups }} ${{ if eq(parameters.jobGroups, '') }}: jobGroups: - name: vs variables: dbg_image: yes asan_image: yes - name: barefoot variables: docker_syncd_rpc_image: yes platform_rpc: bfn swi_image: yes - name: broadcom timeoutInMinutes: 1440 variables: dbg_image: yes swi_image: yes raw_image: yes docker_syncd_rpc_image: yes platform_rpc: brcm - name: centec variables: dbg_image: yes docker_syncd_rpc_image: yes platform_rpc: centec - name: centec-arm64 pool: sonicbld-arm64 timeoutInMinutes: 2880 variables: PLATFORM_ARCH: arm64 - name: generic variables: dbg_image: yes - name: innovium variables: dbg_image: yes - name: marvell-armhf pool: sonicbld-armhf timeoutInMinutes: 2880 variables: PLATFORM_ARCH: armhf - name: mellanox variables: dbg_image: yes docker_syncd_rpc_image: yes syncd_rpc_image: yes platform_rpc: mlnx - name: nephos variables: dbg_image: yes docker_syncd_rpc_image: yes platform_rpc: nephos buildSteps: - template: .azure-pipelines/template-skipvstest.yml@buildimage - template: .azure-pipelines/template-daemon.yml@buildimage - bash: | ( while true do sleep 120 now=$(date +%s) pids=$(ps aux | grep -v grep | grep -E "^.{,100}docker build" | awk '{print$2}') for pid in $pids do start=$(date --date="$(ls -dl /proc/$pid --time-style full-iso | awk '{print$6,$7}')" +%s) time_s=$(($now-$start)) if [[ $time_s -gt $(DOCKER_BUILD_TIMEOUT) ]]; then echo =========== $(date +%F%T) $time_s &>> target/daemon.log ps $pid &>> target/daemon.log sudo kill $pid fi done done ) & daemon_pid=$! set -ex if [ $(GROUP_NAME) == vs ]; then if [ $(dbg_image) == yes ]; then make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-vs.img.gz mv target/sonic-vs.img.gz target/sonic-vs-dbg.img.gz fi if [ $(asan_image) == yes ]; then make $BUILD_OPTIONS ENABLE_ASAN=y target/docker-sonic-vs.gz mv target/docker-sonic-vs.gz target/docker-sonic-vs-asan.gz fi make $BUILD_OPTIONS target/docker-sonic-vs.gz target/sonic-vs.img.gz target/docker-ptf.gz if [ $(Build.Reason) != 'PullRequest' ];then gzip -kd target/sonic-vs.img.gz SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make sonic-slave-run rm target/sonic-vs.img fi else if [ $(dbg_image) == yes ]; then make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-$(GROUP_NAME).bin mv target/sonic-$(GROUP_NAME).bin target/sonic-$(GROUP_NAME)-dbg.bin fi if [ $(swi_image) == yes ]; then make $BUILD_OPTIONS ENABLE_IMAGE_SIGNATURE=y target/sonic-aboot-$(GROUP_NAME).swi fi if [ $(raw_image) == yes ]; then make $BUILD_OPTIONS target/sonic-$(GROUP_NAME).raw fi if [ $(docker_syncd_rpc_image) == yes ]; then # workaround for issue in rules/sairedis.dep, git ls-files will list un-exist files for cache make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/docker-syncd-$(platform_rpc)-rpc.gz if [ $(GROUP_NAME) == broadcom ]; then make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/docker-syncd-$(platform_rpc)-dnx-rpc.gz make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y target/docker-saiserverv2-brcm.gz fi if [ $(GROUP_NAME) == marvell-armhf ]; then make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y PLATFORM_ARCH=armhf target/docker-saiserverv2-mrvl.gz fi if [ $(GROUP_NAME) == mellanox ]; then make $BUILD_OPTIONS SAITHRIFT_V2=y ENABLE_SYNCD_RPC=y target/docker-saiserverv2-mlnx.gz fi fi if [ $(syncd_rpc_image) == yes ]; then make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/sonic-$(GROUP_NAME).bin mv target/sonic-mellanox.bin target/sonic-$(GROUP_NAME)-rpc.bin fi make $BUILD_OPTIONS target/sonic-$(GROUP_NAME).bin fi sudo kill $daemon_pid displayName: "Build sonic image" - template: .azure-pipelines/check-dirty-version.yml@buildimage