forked from sonic-net/sonic-buildimage
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathazure-pipelines-UpgrateVersion.yml
More file actions
140 lines (131 loc) · 4.43 KB
/
azure-pipelines-UpgrateVersion.yml
File metadata and controls
140 lines (131 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# 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: none
pr: none
resources:
repositories:
- repository: buildimage
type: github
name: Azure/sonic-buildimage
ref: master
endpoint: build
schedules:
- cron: "0 0 * * *"
displayName: Daily Build
branches:
include:
- 202012
always: true
pool: sonicbld
parameters:
- name: 'jobFilters'
type: object
default:
- vs
- barefoot
- broadcom
- centec
- centec-arm64
- generic
- innovium
- marvell-armhf
- mellanox
stages:
- stage: Build
variables:
CACHE_MODE: none
VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS='
jobs:
- template: azure-pipelines-build.yml
parameters:
jobFilters: ${{ parameters.jobFilters }}
buildOptions: '${{ variables.VERSION_CONTROL_OPTIONS }} SONIC_BUILD_JOBS=$(nproc) ENABLE_IMAGE_SIGNATURE=y'
preSteps:
- template: .azure-pipelines/template-clean-sonic-slave.yml@buildimage
- stage: UpgradeVersions
jobs:
- job: UpgradeVersions
pool:
vmImage: 'ubuntu-20.04'
steps:
- script: |
if [ -z "$(which gh)" ]; then
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
sudo apt-add-repository https://cli.github.com/packages
sudo apt update
sudo apt install gh
fi
displayName: 'Install gh'
- checkout: self
displayName: 'Checkout code'
- download: current
patterns: '**/versions-*'
- script: |
mkdir -p target
default_platform=broadcom
artifacts=$(find $(Pipeline.Workspace) -maxdepth 1 -type d -name 'sonic-buildimage.*' | grep -v "sonic-buildimage.${default_platform}")
echo "artifacts$artifacts"
cp -r $(Pipeline.Workspace)/sonic-buildimage.${default_platform}/versions target/
make freeze FREEZE_VERSION_OPTIONS=-r
find files/build/versions
ordered_artifacts=$(echo "$artifacts" | grep -v -E "arm64|armhf" && echo "$artifacts" | grep -E "arm64|armhf")
for artifact in $ordered_artifacts
do
rm -rf target/versions
cp -r $artifact/versions target/
OPTIONS="-a -d"
[[ "$artifact" == *arm64* || "$artifact" == *armhf* ]] && OPTIONS="-d"
make freeze FREEZE_VERSION_OPTIONS="$OPTIONS"
done
git diff files/build/versions
displayName: 'Freeze Versions'
- script: |
if [ -z "$GIT_USER" ]; then
echo "Skipped to send the pull request, GIT_USER not set."
exit 0
fi
GIT_STATUS=$(git status --porcelain files/build/versions)
if [ -z "$GIT_STATUS" ]; then
echo "Skipped to send the pull request, no version change in files/build/versions"
exit 0
fi
if [ ! -d "$HOME" ]; then
sudo mkdir -p $HOME
sudo chown -R $(id -un):$(id -gn) $HOME
fi
SOURCE_BRANCH=$(Build.SourceBranch)
REPO_NAME=$(Build.Repository.Name)
[ -z "$GIT_REPO" ] && GIT_REPO=${REPO_NAME#*/}
BRANCH_NAME=repd/versions/${SOURCE_BRANCH#refs/heads/}
echo '#!/bin/bash' > git_env_password.sh
echo 'echo $GIT_PASSWORD' >> git_env_password.sh
chmod a+x git_env_password.sh
export GIT_ASKPASS=./git_env_password.sh
git config user.name $GIT_USER
git config credential.https://github.zerozr99.workers.dev.username $GIT_USER
git add files/build/versions
git commit -m "[ci/build]: Upgrade SONiC package versions"
git checkout -b $BRANCH_NAME
git remote add remote https://github.com/$GIT_USER/$GIT_REPO
git push remote HEAD:refs/heads/$BRANCH_NAME -f
git branch -u remote/$BRANCH_NAME
echo $GIT_PASSWORD | gh auth login --with-token
TITLE="Upgrade SONiC Versions"
BODY="Upgrade SONiC Versions"
RET=0
if ! gh pr create -t "$TITLE" -b "$BODY" -B $(Build.SourceBranch) -R $(Build.Repository.Name) > pr.log 2>&1; then
if ! grep -q "already exists" pr.log; then
RET=1
fi
fi
cat pr.log
exit $RET
env:
GIT_USER: $(GIT_USER)
GIT_PASSWORD: $(GIT_PASSWORD)
displayName: 'Send Pull Request'
- publish: $(System.DefaultWorkingDirectory)/files/build/versions
artifact: 'sonic-buildimage.versions'
displayName: 'Archive SONiC versions'