1
1
#! /bin/bash
2
2
set -euo pipefail
3
3
# run hack/release.sh from the project root directory to publish the release
4
+ DOCS_DIR=" ../docs"
4
5
5
6
echo " check status of last commit build"
6
7
commit=$( git rev-parse HEAD)
@@ -9,50 +10,106 @@ if ! echo $check_status | grep -q '"conclusion": "failure"'; then
9
10
echo " last commit build successed"
10
11
else
11
12
echo " last commit build failed"
13
+ exit 1
12
14
fi
13
15
14
16
15
17
echo " tag and push image"
16
18
VERSION=$( cat VERSION)
19
+ set +e
17
20
docker manifest rm kubeovn/kube-ovn:${VERSION}
18
21
docker manifest rm kubeovn/vpc-nat-gateway:${VERSION}
22
+ set -e
19
23
20
24
docker pull kubeovn/kube-ovn:${VERSION} -x86
21
25
docker pull kubeovn/kube-ovn:${VERSION} -arm
22
26
docker pull kubeovn/vpc-nat-gateway:${VERSION} -x86
23
27
docker pull kubeovn/vpc-nat-gateway:${VERSION} -arm
28
+ docker pull kubeovn/kube-ovn:${VERSION} -debug-x86
29
+ docker pull kubeovn/kube-ovn:${VERSION} -debug-arm
24
30
25
31
docker manifest create kubeovn/kube-ovn:${VERSION} kubeovn/kube-ovn:${VERSION} -x86 kubeovn/kube-ovn:${VERSION} -arm
26
32
docker manifest create kubeovn/vpc-nat-gateway:${VERSION} kubeovn/vpc-nat-gateway:${VERSION} -x86 kubeovn/vpc-nat-gateway:${VERSION} -arm
33
+ docker manifest create kubeovn/kube-ovn:${VERSION} -debug kubeovn/kube-ovn:${VERSION} -debug-x86 kubeovn/kube-ovn:${VERSION} -debug-arm
27
34
28
35
docker manifest push kubeovn/kube-ovn:${VERSION}
29
36
docker manifest push kubeovn/vpc-nat-gateway:${VERSION}
37
+ docker manifest push kubeovn/kube-ovn:${VERSION} -debug
30
38
31
- echo " modify tag in install.sh and values.yaml"
32
- sed -i ' /^VERSION=/c\VERSION="' " ${VERSION} " ' "' dist/images/install.sh
33
- sed -i ' s/tag:\ .*/tag:\ ' " ${VERSION} " ' /' charts/kube-ovn/values.yaml
34
- sed -i ' s/version:\ .*/version:\ ' " ${VERSION} " ' /' charts/kube-ovn/Chart.yaml
35
-
36
- echo " commit, tag and push"
37
- git add dist/images/install.sh
38
- git add charts/kube-ovn/values.yaml
39
- git add charts/kube-ovn/Chart.yaml
40
- git commit -m " release ${VERSION} "
41
- git tag ${VERSION}
42
- git push
43
- git push origin --tags
44
-
45
- echo " modify version to next patch number"
46
- NEXT_VERSION=$( cat VERSION | awk -F ' .' ' {print $1"."$2"."$3+1}' )
47
- echo ${NEXT_VERSION} > VERSION
48
- git add VERSION
49
- git commit -m " prepare for next release"
50
- git push
51
-
52
- echo " draft a release"
53
- gh release create $VERSION --draft
54
-
55
- echo " trigger action to build new base"
56
- gh workflow run build-kube-ovn-base.yaml --ref $( git branch --show-current)
57
-
58
- echo " Need to modify the doc version number manually"
39
+ current_branch=$( git rev-parse --abbrev-ref HEAD)
40
+ if [ " $current_branch " != " master" ]; then
41
+ echo " current branch is not master, release a patch version"
42
+ echo " modify tag in install.sh and values.yaml"
43
+ sed -i ' /^VERSION=/c\VERSION="' " ${VERSION} " ' "' dist/images/install.sh
44
+ sed -i ' s/tag:\ .*/tag:\ ' " ${VERSION} " ' /' charts/kube-ovn/values.yaml
45
+ sed -i ' s/version:\ .*/version:\ ' " ${VERSION} " ' /' charts/kube-ovn/Chart.yaml
46
+ sed -i ' s/appVersion:\ .*/appVersion:\ "' " ${VERSION# v} " ' "/' charts/kube-ovn/Chart.yaml
47
+
48
+ echo " commit, tag and push"
49
+ git add dist/images/install.sh
50
+ git add charts/kube-ovn/values.yaml
51
+ git add charts/kube-ovn/Chart.yaml
52
+ git commit -m " release ${VERSION} "
53
+ git tag ${VERSION}
54
+ git push
55
+ git push origin --tags
56
+
57
+ echo " modify version to next patch number"
58
+ NEXT_VERSION=$( cat VERSION | awk -F ' .' ' {print $1"."$2"."$3+1}' )
59
+ echo ${NEXT_VERSION} > VERSION
60
+ git add VERSION
61
+ git commit -m " prepare for next release"
62
+ git push
63
+
64
+ echo " trigger action to build new base"
65
+ gh workflow run build-kube-ovn-base.yaml -f branch=$current_branch
66
+
67
+ echo " Modify the doc version number"
68
+ cd ${DOCS_DIR}
69
+ git checkout $( cat VERSION | awk -F ' .' ' {print $1"."$2}' )
70
+ git pull
71
+ sed -i " s/version: .*/version: ${VERSION} /" mkdocs.yml
72
+ git add mkdocs.yml
73
+ git commit -m " update version to ${VERSION} "
74
+ git push
75
+
76
+ echo " clean up images"
77
+ docker rmi kubeovn/kube-ovn:${VERSION} -x86 kubeovn/kube-ovn:${VERSION} -arm kubeovn/vpc-nat-gateway:${VERSION} -x86 kubeovn/vpc-nat-gateway:${VERSION} -arm kubeovn/kube-ovn:${VERSION} -debug-x86 kubeovn/kube-ovn:${VERSION} -debug-arm
78
+
79
+ echo " Manually update the release note with the new changelog"
80
+ else
81
+ echo " current branch is master, release a minor version"
82
+ echo " push tag and create new release branch"
83
+ git tag ${VERSION}
84
+ RELEASE_BRANCH=release-$( echo ${VERSION} | sed ' s/v\([0-9]*\.[0-9]*\).*/\1/' )
85
+ git push origin --tags
86
+ git checkout -b $RELEASE_BRANCH
87
+ git push origin $RELEASE_BRANCH
88
+
89
+ echo " prepare next release in master branch"
90
+ git checkout master
91
+ git pull
92
+ NEXT_VERSION=$( cat VERSION | awk -F ' .' ' {print $1"."$2+1"."$3}' )
93
+ echo ${NEXT_VERSION} > VERSION
94
+ sed -i ' /^VERSION=/c\VERSION="' " ${NEXT_VERSION} " ' "' dist/images/install.sh
95
+ sed -i ' s/tag:\ .*/tag:\ ' " ${NEXT_VERSION} " ' /' charts/kube-ovn/values.yaml
96
+ sed -i ' s/version:\ .*/version:\ ' " ${NEXT_VERSION} " ' /' charts/kube-ovn/Chart.yaml
97
+ sed -i ' s/appVersion:\ .*/appVersion:\ "' " ${NEXT_VERSION# v} " ' "/' charts/kube-ovn/Chart.yaml
98
+
99
+ git add dist/images/install.sh
100
+ git add charts/kube-ovn/values.yaml
101
+ git add charts/kube-ovn/Chart.yaml
102
+ git add VERSION
103
+ git commit -m " prepare for next release"
104
+ git push
105
+
106
+ echo " prepare next release in release branch"
107
+ git checkout $RELEASE_BRANCH
108
+ NEXT_VERSION=$( cat VERSION | awk -F ' .' ' {print $1"."$2"."$3+1}' )
109
+ echo ${NEXT_VERSION} > VERSION
110
+ git add VERSION
111
+ git commit -m " prepare for next release"
112
+ git push
113
+
114
+ echo " need manual update the docs to create a new branch"
115
+ fi
0 commit comments