2020-11-26 06:18:25 -06:00
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
trigger :
2021-01-26 17:42:04 -06:00
branches :
include :
- master
2022-10-27 04:36:43 -05:00
- 202 ? ? ?
2021-02-03 12:17:13 -06:00
paths :
exclude :
- .github
2020-11-26 06:18:25 -06:00
2021-01-07 21:50:11 -06:00
pr :
2021-02-03 12:17:13 -06:00
branches :
include :
- master
2022-10-27 04:36:43 -05:00
- 202 ? ? ?
2021-02-03 12:17:13 -06:00
paths :
exclude :
- .github
2020-11-26 06:18:25 -06:00
2021-01-07 21:50:11 -06:00
name : $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)
2020-11-26 06:18:25 -06:00
2021-01-07 21:50:11 -06:00
resources :
repositories :
- repository : sonic-mgmt
type : github
2022-07-28 01:54:25 -05:00
name : sonic-net/sonic-mgmt
endpoint : sonic-net
2022-04-01 18:48:44 -05:00
- repository : buildimage
type : github
2022-08-02 03:24:14 -05:00
name : sonic-net/sonic-buildimage
endpoint : sonic-net
2022-04-01 18:48:44 -05:00
ref : master
2021-01-07 21:50:11 -06:00
2022-03-23 09:36:53 -05:00
variables :
2022-07-13 04:30:23 -05:00
- template : .azure-pipelines/azure-pipelines-repd-build-variables.yml@buildimage
2022-08-28 22:26:15 -05:00
- template : .azure-pipelines/template-variables.yml@buildimage
2022-03-23 09:36:53 -05:00
- name : CACHE_MODE
2022-05-05 18:21:30 -05:00
value : rcache
- name : ENABLE_FIPS
value : y
2022-03-23 09:36:53 -05:00
2021-01-07 21:50:11 -06:00
stages :
2022-03-23 09:36:53 -05:00
- stage : BuildVS
2021-01-07 21:50:11 -06:00
pool : sonicbld
jobs :
2021-04-19 20:15:00 -05:00
- template : .azure-pipelines/azure-pipelines-build.yml
2021-02-12 01:34:05 -06:00
parameters :
2022-07-18 19:42:17 -05:00
buildOptions : 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) BUILD_MULTIASIC_KVM=y ${{ variables.VERSION_CONTROL_OPTIONS }}'
[ci] Fix the boolean value case sensitive issue in Azure Pipelines (#7399)
Why I did it
Fix the boolean value case sensitive issue in Azure Pipelines
When passing parameters to a template, the "true" or "false" will have case sensitive issue, it should be a type casting issue.
To fix it, we change the true/false to yes/no, to escape the trap.
Support to override the job groups in the template, so PR build has chance to use different build parameters, only build simple targets. For example, for broadcom, we only build target/sonic-broadcom.bin, the other images, such as swi, debug bin, etc, will not be built.
2021-04-22 20:26:16 -05:00
jobGroups :
- name : vs
2022-03-23 09:36:53 -05:00
- stage : Build
pool : sonicbld
dependsOn : [ ]
jobs :
- template : .azure-pipelines/azure-pipelines-build.yml
parameters :
buildOptions : 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) ${{ variables.VERSION_CONTROL_OPTIONS }}'
jobGroups :
[ci] Fix the boolean value case sensitive issue in Azure Pipelines (#7399)
Why I did it
Fix the boolean value case sensitive issue in Azure Pipelines
When passing parameters to a template, the "true" or "false" will have case sensitive issue, it should be a type casting issue.
To fix it, we change the true/false to yes/no, to escape the trap.
Support to override the job groups in the template, so PR build has chance to use different build parameters, only build simple targets. For example, for broadcom, we only build target/sonic-broadcom.bin, the other images, such as swi, debug bin, etc, will not be built.
2021-04-22 20:26:16 -05:00
- name : broadcom
2021-05-05 17:42:33 -05:00
variables :
swi_image : yes
[ci] Fix the boolean value case sensitive issue in Azure Pipelines (#7399)
Why I did it
Fix the boolean value case sensitive issue in Azure Pipelines
When passing parameters to a template, the "true" or "false" will have case sensitive issue, it should be a type casting issue.
To fix it, we change the true/false to yes/no, to escape the trap.
Support to override the job groups in the template, so PR build has chance to use different build parameters, only build simple targets. For example, for broadcom, we only build target/sonic-broadcom.bin, the other images, such as swi, debug bin, etc, will not be built.
2021-04-22 20:26:16 -05:00
- name : mellanox
2022-03-23 09:36:53 -05:00
- name : marvell-armhf
pool : sonicbld-armhf
timeoutInMinutes : 1200
variables :
PLATFORM_ARCH : armhf
2021-01-07 21:50:11 -06:00
- stage : Test
2022-03-23 09:36:53 -05:00
dependsOn : BuildVS
2022-10-18 23:26:50 -05:00
condition : and(succeeded(), and(ne(stageDependencies.BuildVS.outputs['vs.SetVar.SKIP_VSTEST'], 'YES'), in(dependencies.BuildVS.result, 'Succeeded', 'SucceededWithIssues')))
2021-01-07 21:50:11 -06:00
variables :
2022-10-19 00:33:17 -05:00
- group : Testbed-Tools
2021-01-07 21:50:11 -06:00
- name : inventory
value : veos_vtb
- name : testbed_file
value : vtestbed.csv
2022-09-02 17:53:54 -05:00
# For every test job:
# continueOnError: false means it's a required test job and will block merge if it fails
# continueOnError: true means it's an optional test job and will not block merge even though it fails(unless a required test job depends on its result)
2021-01-07 21:50:11 -06:00
jobs :
2021-01-24 23:01:19 -06:00
- job :
2021-01-31 21:47:10 -06:00
pool : sonictest
2021-01-24 23:01:19 -06:00
displayName : "vstest"
timeoutInMinutes : 60
steps :
2022-10-20 00:06:10 -05:00
- template : .azure-pipelines/cleanup.yml
2021-01-24 23:01:19 -06:00
- checkout : self
2021-01-31 21:47:10 -06:00
clean : true
2021-01-24 23:01:19 -06:00
submodules : recursive
displayName : 'Checkout code'
2022-10-25 02:45:01 -05:00
- script : |
sudo rm -rf ../target
sudo rm -rf ../*.deb
displayName : "Cleanup"
2021-01-24 23:01:19 -06:00
- task : DownloadPipelineArtifact@2
inputs :
source : specific
project : build
pipeline : 9
2021-08-21 16:30:04 -05:00
artifact : sonic-swss-common.amd64.ubuntu20_04
2021-01-24 23:01:19 -06:00
runVersion : 'latestFromBranch'
runBranch : 'refs/heads/master'
displayName : "Download sonic swss common deb packages"
2021-01-27 21:58:58 -06:00
- task : DownloadPipelineArtifact@2
inputs :
2021-02-12 01:34:05 -06:00
artifact : sonic-buildimage.vs
displayName : "Download sonic-buildimage.vs artifact"
2021-01-27 21:58:58 -06:00
2021-01-24 23:01:19 -06:00
- script : |
2021-01-27 21:58:58 -06:00
set -x
2022-09-30 02:56:46 -05:00
sudo apt-get update
sudo apt-get install libyang0.16 -y
2021-08-21 16:30:04 -05:00
sudo dpkg -i --force-confask,confnew ../libswsscommon_1.0.0_amd64.deb
sudo dpkg -i ../python3-swsscommon_1.0.0_amd64.deb
2021-01-27 21:58:58 -06:00
sudo docker load -i ../target/docker-sonic-vs.gz
2021-01-24 23:01:19 -06:00
docker tag docker-sonic-vs:latest docker-sonic-vs:$(Build.BuildNumber)
username=$(id -un)
trap "docker ps; docker images; ip netns list; \
docker rmi docker-sonic-vs:$(Build.BuildNumber); \
ip netns list | grep -E [-]srv[0-9]+ | awk '{print $1}' | xargs -I {} sudo ip netns delete {}; \
2021-01-25 21:05:01 -06:00
sudo chown -R ${username}.${username} .; \
sudo chown -R ${username}.${username} $(System.DefaultWorkingDirectory)" EXIT
2021-01-24 23:01:19 -06:00
pushd platform/vs/tests
2021-01-27 21:58:58 -06:00
sudo py.test -v --junitxml=tr.xml --imgname=docker-sonic-vs:$(Build.BuildNumber)
2021-01-24 23:01:19 -06:00
displayName : "Run vs tests"
- task : PublishTestResults@2
inputs :
testResultsFiles : '**/tr.xml'
testRunTitle : vstest
2022-02-23 20:20:24 -06:00
- job : t0_part1
2021-01-31 21:47:10 -06:00
pool : sonictest
2022-02-23 20:20:24 -06:00
displayName : "kvmtest-t0-part1"
2022-10-19 00:33:17 -05:00
timeoutInMinutes : 400
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
2022-09-29 19:17:01 -05:00
continueOnError : false
2021-01-07 21:50:11 -06:00
steps :
2021-01-31 21:47:10 -06:00
- template : .azure-pipelines/run-test-template.yml
parameters :
dut : vlab-01
tbname : vms-kvm-t0
ptf_name : ptf_vms6-1
tbtype : t0
2022-10-19 00:33:17 -05:00
vmtype : ceos
2022-02-23 20:20:24 -06:00
section : part-1
- job : t0_part2
pool : sonictest
displayName : "kvmtest-t0-part2"
2022-10-19 00:33:17 -05:00
timeoutInMinutes : 400
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
2022-09-29 19:17:01 -05:00
continueOnError : false
2022-02-23 20:20:24 -06:00
steps :
- template : .azure-pipelines/run-test-template.yml
parameters :
dut : vlab-01
tbname : vms-kvm-t0
ptf_name : ptf_vms6-1
tbtype : t0
2022-10-19 00:33:17 -05:00
vmtype : ceos
2022-02-23 20:20:24 -06:00
section : part-2
2022-10-19 00:33:17 -05:00
- job : t0_testbedv2
pool :
vmImage : 'ubuntu-20.04'
displayName : "kvmtest-t0 by TestbedV2"
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-10-19 00:33:17 -05:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError : false
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : t0
2022-12-05 20:17:15 -06:00
MIN_WORKER : $(T0_INSTANCE_NUM)
MAX_WORKER : $(T0_INSTANCE_NUM)
2022-10-19 00:33:17 -05:00
- job : t0_2vlans_testbedv2
pool :
vmImage : 'ubuntu-20.04'
displayName : "kvmtest-t0-2vlans by TestbedV2"
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-10-19 00:33:17 -05:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError : false
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : t0
TEST_SET : t0-2vlans
2022-12-05 20:17:15 -06:00
MAX_WORKER : $(T0_2VLANS_INSTANCE_NUM)
MIN_WORKER : $(T0_2VLANS_INSTANCE_NUM)
2022-10-19 00:33:17 -05:00
DEPLOY_MG_EXTRA_PARAMS : "-e vlan_config=two_vlan_a"
2022-02-23 20:20:24 -06:00
- job :
2022-10-19 00:33:17 -05:00
pool :
vmImage : 'ubuntu-20.04'
2022-02-23 20:20:24 -06:00
displayName : "kvmtest-t0"
dependsOn :
- t0_part1
- t0_part2
2022-10-19 00:33:17 -05:00
- t0_testbedv2
- t0_2vlans_testbedv2
2022-02-23 20:20:24 -06:00
condition : always()
2022-09-02 17:53:54 -05:00
continueOnError : false
2022-02-23 20:20:24 -06:00
variables :
resultOfPart1 : $[ dependencies.t0_part1.result ]
resultOfPart2 : $[ dependencies.t0_part2.result ]
2022-10-19 00:33:17 -05:00
resultOfT0TestbedV2 : $[ dependencies.t0_testbedv2.result ]
resultOfT02VlansTestbedV2 : $[ dependencies.t0_2vlans_testbedv2.result ]
2022-02-23 20:20:24 -06:00
steps :
- script : |
2022-10-19 00:33:17 -05:00
if [ $(resultOfT0TestbedV2) == "Succeeded" ] && [ $(resultOfT02VlansTestbedV2) == "Succeeded" ]; then
echo "TestbedV2 t0 passed."
exit 0
fi
2022-02-23 20:20:24 -06:00
if [ $(resultOfPart1) == "Succeeded" ] && [ $(resultOfPart2) == "Succeeded" ]; then
2022-10-19 00:33:17 -05:00
echo "Classic t0 jobs(both part1 and part2) passed."
2022-02-23 20:20:24 -06:00
exit 0
fi
2021-01-27 21:58:58 -06:00
2022-10-19 00:33:17 -05:00
echo "Both classic and TestbedV2 t0 jobs failed! Please check the detailed information. (Any of them passed, t0 will be considered as passed)"
exit 1
- job : t1_lag_classic
2021-01-31 21:47:10 -06:00
pool : sonictest-t1-lag
2022-10-19 00:33:17 -05:00
displayName : "kvmtest-t1-lag classic"
timeoutInMinutes : 400
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
2022-09-02 17:53:54 -05:00
continueOnError : false
2021-01-31 21:47:10 -06:00
steps :
- template : .azure-pipelines/run-test-template.yml
parameters :
dut : vlab-03
tbname : vms-kvm-t1-lag
ptf_name : ptf_vms6-2
tbtype : t1-lag
2022-10-19 00:33:17 -05:00
vmtype : ceos
- job : t1_lag_testbedv2
pool :
vmImage : 'ubuntu-20.04'
displayName : "kvmtest-t1-lag by TestbedV2"
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-10-19 00:33:17 -05:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError : false
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : t1-lag
2022-12-05 20:17:15 -06:00
MIN_WORKER : $(T1_LAG_INSTANCE_NUM)
MAX_WORKER : $(T1_LAG_INSTANCE_NUM)
2022-10-19 00:33:17 -05:00
- job :
pool :
vmImage : 'ubuntu-20.04'
displayName : "kvmtest-t1-lag"
dependsOn :
- t1_lag_classic
- t1_lag_testbedv2
condition : always()
continueOnError : false
variables :
resultOfClassic : $[ dependencies.t1_lag_classic.result ]
resultOfTestbedV2 : $[ dependencies.t1_lag_testbedv2.result ]
steps :
- script : |
if [ $(resultOfClassic) == "Succeeded" ] || [ $(resultOfTestbedV2) == "Succeeded" ]; then
echo "One or both of t1_lag_classic and t1_lag_testbedv2 passed."
exit 0
else
echo "Both t1_lag_classic and t1_lag_testbedv2 failed! Please check the detailed information."
exit 1
fi
2022-05-12 00:21:25 -05:00
- job :
pool : sonictest-sonic-t0
displayName : "kvmtest-t0-sonic"
timeoutInMinutes : 360
2022-11-10 01:27:31 -06:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
2022-09-02 17:53:54 -05:00
continueOnError : true
2022-05-12 00:21:25 -05:00
steps :
- template : .azure-pipelines/run-test-template.yml
parameters :
dut : vlab-02
tbname : vms-kvm-t0-64-32
ptf_name : ptf_vms6-1
tbtype : t0-sonic
vmtype : vsonic
2022-07-27 13:47:00 -05:00
- job :
pool : sonictest-ma
displayName : "kvmtest-multi-asic-t1-lag"
timeoutInMinutes : 240
2022-11-10 20:54:37 -06:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
2022-09-02 17:53:54 -05:00
continueOnError : true
2022-07-27 13:47:00 -05:00
steps :
- template : .azure-pipelines/run-test-template.yml
parameters :
dut : vlab-08
tbname : vms-kvm-four-asic-t1-lag
ptf_name : ptf_vms6-4
tbtype : multi-asic-t1-lag-pr
image : sonic-4asic-vs.img.gz
2022-11-07 05:48:06 -06:00
2022-11-10 20:54:37 -06:00
- job : multi_asic_testbedv2
displayName : "kvmtest-multi-asic-t1-lag by TestbedV2"
pool :
vmImage : 'ubuntu-20.04'
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-11-10 20:54:37 -06:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
2022-12-05 20:17:15 -06:00
continueOnError : false
2022-11-10 20:54:37 -06:00
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : t1-8-lag
TEST_SET : multi-asic-t1-lag
2022-12-05 20:17:15 -06:00
MIN_WORKER : $(MULTI_ASIC_INSTANCE_NUM)
MAX_WORKER : $(MULTI_ASIC_INSTANCE_NUM)
2022-11-10 20:54:37 -06:00
NUM_ASIC : 4
2022-11-07 05:48:06 -06:00
- job : dualtor_testbedv2
pool :
vmImage : 'ubuntu-20.04'
displayName : "kvmtest-dualtor-t0 by TestbedV2"
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-11-07 05:48:06 -06:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError : false
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : dualtor
2022-12-05 20:17:15 -06:00
MIN_WORKER : $(T0_DUALTOR_INSTANCE_NUM)
MAX_WORKER : $(T0_DUALTOR_INSTANCE_NUM)
2022-11-07 05:48:06 -06:00
COMMON_EXTRA_PARAMS : "--disable_loganalyzer "
2022-11-10 01:27:31 -06:00
- job : sonic_t0_testbedv2
displayName : "kvmtest-t0-sonic by TestbedV2"
pool :
vmImage : 'ubuntu-20.04'
2022-12-05 20:17:15 -06:00
timeoutInMinutes : 240
2022-11-10 01:27:31 -06:00
condition : and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
2022-12-05 20:17:15 -06:00
continueOnError : false
2022-11-10 01:27:31 -06:00
steps :
- template : .azure-pipelines/run-test-scheduler-template.yml
parameters :
TOPOLOGY : t0-64-32
2022-12-05 20:17:15 -06:00
MIN_WORKER : $(T0_SONIC_INSTANCE_NUM)
MAX_WORKER : $(T0_SONIC_INSTANCE_NUM)
2022-11-10 01:27:31 -06:00
TEST_SET : t0-sonic
COMMON_EXTRA_PARAMS : "--neighbor_type=sonic --enable_macsec --macsec_profile=128_SCI,256_XPN_SCI"
VM_TYPE : vsonic
SPECIFIED_PARAMS : '{\"test_pretest.py\":[\"--completeness_level=confident\",\"--allow_recover\"],\"test_posttest.py\":[\"--completeness_level=confident\",\"--allow_recover\"]}'