Skip to content

Commit 0fbb1c2

Browse files
Merge branch 'master' of https://github.com/Azure/sonic-buildimage into nba610-initial-support
2 parents 730560f + ed99ce0 commit 0fbb1c2

File tree

566 files changed

+48510
-2328
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

566 files changed

+48510
-2328
lines changed

.azure-pipelines/azure-pipelines-build.yml

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ jobs:
9898
platform_rpc: nephos
9999

100100
buildSteps:
101+
- template: template-skipvstest.yml
101102
- bash: |
102103
set -ex
103104
if [ $(GROUP_NAME) == vs ]; then

.azure-pipelines/azure-pipelines-image-template.yml

+9-6
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,23 @@ jobs:
4848
ENABLE_DOCKER_BASE_PULL=y make PLATFORM=$(PLATFORM_AZP) PLATFORM_ARCH=$(PLATFORM_ARCH) $(BUILD_OPTIONS) configure
4949
displayName: 'Make configure'
5050
postSteps:
51-
- script: mv target $(Build.ArtifactStagingDirectory)/
51+
- script: |
52+
mkdir -p $(Build.ArtifactStagingDirectory)/target
53+
mv target/* $(Build.ArtifactStagingDirectory)/target/
5254
displayName: Copy Artifacts
5355
condition: always()
5456
- publish: $(Build.ArtifactStagingDirectory)
5557
artifact: 'sonic-buildimage.$(GROUP_NAME)$(GROUP_EXTNAME)'
5658
displayName: "Archive sonic image"
5759
- publish: $(Build.ArtifactStagingDirectory)
58-
condition: failed()
60+
condition: or(failed(), canceled())
5961
artifact: 'sonic-buildimage.$(GROUP_NAME)$(GROUP_EXTNAME)$(System.JobAttempt)'
6062
displayName: "Archive failed sonic image"
61-
- template: trigger-publish-artifacts-build.yml
62-
parameters:
63-
artifactName: 'sonic-buildimage.$(GROUP_NAME)$(GROUP_EXTNAME)'
64-
publishPrefix: '$(Build.DefinitionName)/$(Build.SourceBranchName)/$(GROUP_NAME)'
63+
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
64+
- template: trigger-publish-artifacts-build.yml
65+
parameters:
66+
artifactName: 'sonic-buildimage.$(GROUP_NAME)$(GROUP_EXTNAME)'
67+
publishPrefix: '$(Build.DefinitionName)/$(Build.SourceBranchName)/$(GROUP_NAME)'
6568
- ${{ parameters.postSteps }}
6669
- template: cleanup.yml
6770
jobGroups: ${{ parameters.jobGroups }}

.azure-pipelines/run-test-template.yml

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ steps:
5151
rm -rf $(Build.ArtifactStagingDirectory)/*
5252
docker exec sonic-mgmt bash -c "/data/sonic-mgmt/tests/kvmtest.sh -en -T ${{ parameters.tbtype }} ${{ parameters.tbname }} ${{ parameters.dut }} ${{ parameters.section }}"
5353
displayName: "Run tests"
54+
${{ if eq(parameters.tbtype, 't0-sonic') }}:
55+
continueOnError: true
5456

5557
- script: |
5658
# save dut state if test fails
+52-39
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,53 @@
1-
jobs:
2-
- job: Build
3-
timeoutInMinutes: 120
4-
pool: sonicbld
5-
variables:
6-
- template: template-variables.yml
7-
steps:
8-
- checkout: self
9-
clean: true
10-
submodules: recursive
11-
- script: |
12-
set -ex
13-
branch=$(Build.SourceBranchName)
14-
# DIST_MASTER is set in variable.
15-
BRANCH=DIST_${branch^^}
16-
bldenvs=${!BRANCH}
17-
[ "$bldenvs" == "" ] && bldenvs="$(COMMON_LIB_BUILD_ENVS)"
18-
for bldenv in $bldenvs
19-
do
20-
BLDENV=$bldenv make -f Makefile.work configure PLATFORM=vs ENABLE_DOCKER_BASE_PULL=y
21-
done
22-
set +x
23-
echo "##vso[task.setvariable variable=bldenvs;]$bldenvs"
24-
displayName: Make configure
25-
- script: |
26-
set -ex
27-
for bldenv in $(bldenvs)
28-
do
29-
LIBNL3_VERSION_BASE=$(grep "LIBNL3_VERSION_BASE =" rules/libnl3.mk | awk '{print$3}')
30-
LIBNL3_VERSION=$(grep "LIBNL3_VERSION =" rules/libnl3.mk | awk '{print$3}' | sed -e "s/(//" -e "s/)//" -e "s/\\$//" -e "s/LIBNL3_VERSION_BASE/$LIBNL3_VERSION_BASE/")
31-
SONIC_BUILD_JOBS=$(nproc) BLDENV=$bldenv make -f Makefile.work target/debs/$bldenv/libnl-3-200_${LIBNL3_VERSION}_amd64.deb ENABLE_DOCKER_BASE_PULL=y
1+
parameters:
2+
- name: archs
3+
type: object
4+
default:
5+
- amd64
6+
- armhf
7+
- arm64
328

33-
LIBYANG_VERSION_BASE=$(grep "LIBYANG_VERSION_BASE =" rules/libyang.mk | awk '{print$3}')
34-
LIBYANG_VERSION=$(grep "LIBYANG_VERSION =" rules/libyang.mk | awk '{print$3}' | sed -e "s/\\$//" -e "s/(//" -e "s/)//" -e "s/LIBYANG_VERSION_BASE/$LIBYANG_VERSION_BASE/")
35-
SONIC_BUILD_JOBS=$(nproc) BLDENV=$bldenv make -f Makefile.work target/debs/$bldenv/libyang_${LIBYANG_VERSION}_amd64.deb
36-
done
37-
mv target $(Build.ArtifactStagingDirectory)
38-
displayName: Make common lib packages
39-
- publish: $(Build.ArtifactStagingDirectory)
40-
artifact: common-lib
9+
jobs:
10+
- ${{ each arch in parameters.archs }}:
11+
- job: Build_${{ arch }}
12+
timeoutInMinutes: 120
13+
${{ if eq(arch,'amd64') }}:
14+
pool: sonicbld
15+
${{ else }}:
16+
pool: sonicbld-${{ arch }}
17+
variables:
18+
- template: template-variables.yml
19+
steps:
20+
- checkout: self
21+
clean: true
22+
submodules: recursive
23+
- script: |
24+
set -ex
25+
branch=$(Build.SourceBranchName)
26+
# replace all: '-' -> '_'
27+
branch=${branch//-/_}
28+
# replace all: 'a' -> 'A', DIST_MASTER is set in variable.
29+
BRANCH=DIST_${branch^^}
30+
# variable name is dynamic
31+
bldenvs=${!BRANCH}
32+
[ "$bldenvs" == "" ] && bldenvs="$(COMMON_LIB_BUILD_ENVS)"
33+
for bldenv in $bldenvs
34+
do
35+
BLDENV=$bldenv make -f Makefile.work configure PLATFORM_ARCH=${{ arch }} PLATFORM=vs ENABLE_DOCKER_BASE_PULL=y
36+
done
37+
set +x
38+
echo "##vso[task.setvariable variable=bldenvs;]$bldenvs"
39+
displayName: Make configure
40+
- script: |
41+
set -ex
42+
for bldenv in $(bldenvs)
43+
do
44+
SONIC_BUILD_JOBS=$(nproc) BLDENV=$bldenv make -f Makefile.work lib-packages ENABLE_DOCKER_BASE_PULL=y
45+
done
46+
mv target $(Build.ArtifactStagingDirectory)
47+
displayName: Make common lib packages
48+
- ${{ if eq(arch,'amd64') }}:
49+
- publish: $(Build.ArtifactStagingDirectory)
50+
artifact: common-lib
51+
- ${{ else }}:
52+
- publish: $(Build.ArtifactStagingDirectory)
53+
artifact: common-lib.${{ arch }}
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
steps:
2+
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
3+
- script: |
4+
set -ex
5+
tar_branch=origin/$(System.PullRequest.TargetBranch)
6+
git diff $tar_branch..HEAD --name-only | grep -v -f .azure-pipelines/vstest-exclude && exit 0
7+
git diff $tar_branch..HEAD --name-only | grep -f .azure-pipelines/vstest-include && exit 0
8+
set +x
9+
echo "Skip vstest jobs"
10+
echo "##vso[task.setvariable variable=SKIP_VSTEST;isOutput=true]YES"
11+
name: SetVar
12+
displayName: "Check if vstest is needed."
+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
variables:
22
DEFAULT_CONTAINER_REGISTRY: 'publicmirror.azurecr.io'
33
COMMON_LIB_BUILD_ENVS: 'bullseye'
4+
SONIC_SLAVE_DOCKER_DRIVER: 'overlay2'

.azure-pipelines/trigger-publish-artifacts-build.yml

-2
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ steps:
2020
echo "##vso[task.setvariable variable=sonic_version]$sonic_version"
2121
echo "##vso[task.setvariable variable=latest_tag]$latest_tag"
2222
echo "##vso[task.setvariable variable=docker_tags]$docker_tags"
23-
condition: ne(variables['Build.Reason'], 'PullRequest')
2423
displayName: 'Set trigger build variables'
2524
- task: TriggerBuild@4
26-
condition: ne(variables['Build.Reason'], 'PullRequest')
2725
inputs:
2826
definitionIsInCurrentTeamProject: false
2927
teamProject: internal

.azure-pipelines/vstest-exclude

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
^platform
2+
^.azure-pipelines
3+
^files/build/versions

.azure-pipelines/vstest-include

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
^platform/vs
2+
^.azure-pipelines/run-test-template.yml

.github/CODEOWNERS

+73-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
/Makefile.work @qiluo-msft @xumia @lguohan
2020
/slave.mk @qiluo-msft @xumia @lguohan
2121
/scripts @qiluo-msft @xumia @lguohan
22+
/src/sonic-build-hooks/ @Azure/sonic-build
23+
/src/debootstrap/ @Azure/sonic-build
24+
/src/sonic-fips/ @Azure/sonic-build
2225

2326
# installer
2427
/installer/ @qiluo-msft
@@ -31,8 +34,77 @@
3134
/dockers/docker-config-engine*/ @qiluo-msft
3235
/dockers/docker-snmp/ @qiluo-msft
3336

34-
# src
37+
# kernel
38+
/src/sonic-linux-kernel/ @Azure/sonic-kernel
39+
40+
# devices
41+
/device/ @Azure/sonic-platform
42+
/src/sonic-platform-common/ @Azure/sonic-platform
43+
/src/sonic-platform-daemons/ @Azure/sonic-platform
44+
/src/sonic-platform-pde/ @Azure/sonic-platform
45+
/src/lm-sensors/ @Azure/sonic-platform
46+
/src/flashrom/ @Azure/sonic-platform
47+
48+
# common library
3549
/src/initramfs-tools/ @qiluo-msft
50+
/src/redis-dump-load/ @Azure/sonic-management
51+
/src/sonic-py-common/ @Azure/sonic-management
52+
/src/sonic-py-swsssdk/ @Azure/sonic-management
53+
/src/sonic-swss-common/ @Azure/sonic-management
54+
/src/bash/ @Azure/sonic-management
55+
/src/tacacs/ @Azure/sonic-management
56+
/src/radius/ @Azure/sonic-management
57+
/src/swig/ @Azure/sonic-management
58+
/src/socat/ @Azure/sonic-management
59+
60+
# redis
61+
/src/redis/ @Azure/sonic-management
62+
/src/hiredis/ @Azure/sonic-management
3663

3764
# yang
3865
/src/sonic-yang-models/ @praveen-li @dgsudharsan @rathnasabapathyv @venkatmahalingam @qiluo-msft
66+
/src/sonic-yang-mgmt/ @Azure/sonic-management
67+
/src/libyang/ @Azure/sonic-management
68+
/src/libyang1/ @Azure/sonic-management
69+
/src/libyang2/ @Azure/sonic-management
70+
71+
# bgpcfgd
72+
/src/sonic-bgpcfgd/ @StormLiangMS
73+
74+
# sonic-config-engine
75+
/src/sonic-config-engine/ @Azure/sonic-management
76+
77+
# sonic-utilities
78+
/src/sonic-utilities/ @Azure/sonic-management
79+
80+
# sonic-telemetry
81+
/src/sonic-telemetry/ @Azure/sonic-management
82+
83+
# snmp
84+
/src/sonic-snmpagent/ @Azure/sonic-management
85+
/src/snmpd/ @Azure/sonic-management
86+
87+
# dhcp relay
88+
/src/dhcp6relay/ @Azure/sonic-fundamentals
89+
/src/dhcpmon/ @Azure/sonic-fundamentals
90+
/src/isc-dhcp/ @Azure/sonic-fundamentals
91+
92+
# sflow
93+
/src/sflow/ @Azure/sonic-dataplane
94+
95+
# sonic restapi
96+
/src/sonic-restapi/ @Azure/sonic-dataplane
97+
98+
# sonic swss
99+
/src/sonic-swss/ @Azure/sonic-dataplane
100+
101+
# linux networking, e.g., libnl3, iproute2, ifupdown2, ethtool
102+
/src/libnl3/ @Azure/sonic-dataplane
103+
/src/iproute2/ @Azure/sonic-dataplane
104+
/src/ifupdown2/ @Azure/sonic-dataplane
105+
/src/ethtool/ @Azure/sonic-dataplane
106+
107+
# ptf
108+
/src/ptf/ @Azure/sonic-fundamentals
109+
/src/ptf-py3/ @Azure/sonic-fundamentals
110+
/src/scapy/ @Azure/sonic-fundamentals

.github/pull_request_template.md

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
- [ ] 202012
3232
- [ ] 202106
3333
- [ ] 202111
34+
- [ ] 202205
3435

3536
#### Description for the changelog
3637
<!--

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ target/
2222
*.img
2323
*.pyc
2424

25+
# Slave docker log files
26+
sonic-slave*/*.log
27+
2528
# Autogenerated Dockerfiles
2629
sonic-slave*/Dockerfile
2730
sonic-slave*/Dockerfile.user

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
[submodule "src/sonic-frr/frr"]
4747
path = src/sonic-frr/frr
4848
url = https://github.com/Azure/sonic-frr.git
49-
branch = frr/7.5
49+
branch = frr/8.2
5050
[submodule "platform/p4/p4-hlir/p4-hlir-v1.1"]
5151
path = platform/p4/p4-hlir/p4-hlir-v1.1
5252
url = https://github.com/p4lang/p4-hlir.git

Makefile.work

+17-3
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ MULTIARCH_QEMU_ENVIRON = y
137137
endif
138138
endif
139139
SLAVE_IMAGE = $(SLAVE_BASE_IMAGE)-$(USER_LC)
140+
DOCKER_ROOT = $(PWD)/fsroot.docker.$(BLDENV)
140141

141142
# Support FIPS feature, armhf not supported yet
142143
ifeq ($(PLATFORM_ARCH),armhf)
@@ -181,6 +182,7 @@ endif
181182
DOCKER_LOCKFILE_SAVE := $(DOCKER_LOCKDIR)/docker_save.lock
182183
$(shell mkdir -m 0777 -p $(DOCKER_LOCKDIR))
183184
$(shell [ -f $(DOCKER_LOCKFILE_SAVE) ] || (touch $(DOCKER_LOCKFILE_SAVE) && chmod 0777 $(DOCKER_LOCKFILE_SAVE)))
185+
$(shell sudo rm -rf $(DOCKER_ROOT) && mkdir -p $(DOCKER_ROOT))
184186

185187
ifeq ($(DOCKER_BUILDER_MOUNT),)
186188
override DOCKER_BUILDER_MOUNT := "$(PWD):/sonic"
@@ -200,6 +202,11 @@ DOCKER_RUN := docker run --rm=true --privileged --init \
200202
-i$(shell { if [ -t 0 ]; then echo t; fi }) \
201203
$(SONIC_BUILDER_EXTRA_CMDLINE)
202204

205+
# Mount the $(DOCKER_ROOT) to /var/lib/docker in the slave container, the overlay fs is not supported as dockerd root folder.
206+
ifneq ($(filter $(SONIC_SLAVE_DOCKER_DRIVER),overlay overlay2),)
207+
DOCKER_RUN += -v $(DOCKER_ROOT):/var/lib/docker
208+
endif
209+
203210
ifneq ($(DOCKER_BUILDER_USER_MOUNT),)
204211
DOCKER_RUN += $(foreach mount,$(subst $(comma), ,$(DOCKER_BUILDER_USER_MOUNT)), $(addprefix -v , $(mount)))
205212
endif
@@ -294,12 +301,18 @@ endif
294301

295302
endif
296303

304+
SPLIT_LOG = | tee
305+
306+
DOCKER_BASE_LOG = $(SLAVE_DIR)/$(SLAVE_BASE_IMAGE)_$(SLAVE_BASE_TAG).log
307+
DOCKER_LOG = $(SLAVE_DIR)/$(SLAVE_IMAGE)_$(SLAVE_TAG).log
308+
309+
297310
DOCKER_BASE_BUILD = docker build --no-cache \
298311
-t $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) \
299312
--build-arg http_proxy=$(http_proxy) \
300313
--build-arg https_proxy=$(https_proxy) \
301314
--build-arg no_proxy=$(no_proxy) \
302-
$(SLAVE_DIR)
315+
$(SLAVE_DIR) $(SPLIT_LOG) $(DOCKER_BASE_LOG)
303316

304317
DOCKER_BASE_PULL = docker pull \
305318
$(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
@@ -312,7 +325,7 @@ DOCKER_BUILD = docker build --no-cache \
312325
--build-arg slave_base_tag_ref=$(SLAVE_BASE_TAG) \
313326
-t $(SLAVE_IMAGE):$(SLAVE_TAG) \
314327
-f $(SLAVE_DIR)/Dockerfile.user \
315-
$(SLAVE_DIR)
328+
$(SLAVE_DIR) $(SPLIT_LOG) $(DOCKER_LOG)
316329

317330
SONIC_BUILD_INSTRUCTION := make \
318331
-f slave.mk \
@@ -370,6 +383,7 @@ SONIC_BUILD_INSTRUCTION := make \
370383
ENABLE_ASAN=$(ENABLE_ASAN) \
371384
ENABLE_FIPS_FEATURE=$(ENABLE_FIPS_FEATURE) \
372385
ENABLE_FIPS=$(ENABLE_FIPS) \
386+
SONIC_SLAVE_DOCKER_DRIVER=$(SONIC_SLAVE_DOCKER_DRIVER) \
373387
$(SONIC_OVERRIDE_BUILD_VARS)
374388

375389
.PHONY: sonic-slave-build sonic-slave-bash init reset
@@ -457,7 +471,7 @@ reset :
457471
@read ans && (
458472
if [ $$ans == y ]; then
459473
echo "Resetting local repository. Please wait...";
460-
$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) sudo rm -rf fsroot;
474+
sudo rm -rf fsroot*;
461475
if [ "$(MULTIARCH_QEMU_ENVIRON)" == y ] && [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then
462476
echo "Stopping march $(CONFIGURED_ARCH) docker"
463477
sudo kill -9 `sudo cat /var/run/march/docker.pid` || true

azure-pipelines.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ stages:
7777

7878
- stage: Test
7979
dependsOn: BuildVS
80+
condition: and(ne(stageDependencies.BuildVS.outputs['vs.SetVar.SKIP_VSTEST'], 'YES'), succeeded())
8081
variables:
8182
- name: inventory
8283
value: veos_vtb
@@ -184,7 +185,7 @@ stages:
184185
- job:
185186
pool: sonictest-t1-lag
186187
displayName: "kvmtest-t1-lag"
187-
timeoutInMinutes: 240
188+
timeoutInMinutes: 300
188189

189190
steps:
190191
- template: .azure-pipelines/run-test-template.yml

build_debian.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ rm /files/etc/ssh/sshd_config/ClientAliveCountMax
422422
touch /files/etc/ssh/sshd_config/EmptyLineHack
423423
rename /files/etc/ssh/sshd_config/EmptyLineHack ""
424424
set /files/etc/ssh/sshd_config/ClientAliveInterval 900
425-
set /files/etc/ssh/sshd_config/ClientAliveCountMax 0
425+
set /files/etc/ssh/sshd_config/ClientAliveCountMax 1
426426
ins #comment before /files/etc/ssh/sshd_config/ClientAliveInterval
427427
set /files/etc/ssh/sshd_config/#comment[following-sibling::*[1][self::ClientAliveInterval]] "Close inactive client sessions after 15 minutes"
428428
save
@@ -647,5 +647,5 @@ fi
647647
pushd $FILESYSTEM_ROOT && sudo tar czf $OLDPWD/$FILESYSTEM_DOCKERFS -C ${DOCKERFS_PATH}var/lib/docker .; popd
648648

649649
## Compress together with /boot, /var/lib/docker and $PLATFORM_DIR as an installer payload zip file
650-
pushd $FILESYSTEM_ROOT && sudo zip --symlinks $OLDPWD/$ONIE_INSTALLER_PAYLOAD -r boot/ $PLATFORM_DIR/; popd
650+
pushd $FILESYSTEM_ROOT && sudo zip $OLDPWD/$ONIE_INSTALLER_PAYLOAD -r boot/ $PLATFORM_DIR/; popd
651651
sudo zip -g -n .squashfs:.gz $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS $FILESYSTEM_DOCKERFS

0 commit comments

Comments
 (0)