1
+ #! /bin/sh -x
2
+
3
+ die () {
4
+ echo >&2 " \nERROR: $@ \n"
5
+ exit 1
6
+ }
7
+
8
+ MAX_RETRY=10
9
+
10
+ # Get the options
11
+ while getopts " :u:v:" option; do
12
+ case $option in
13
+ u) # Set username
14
+ username=$OPTARG ;;
15
+ v) # Set version
16
+ v=$OPTARG ;;
17
+ \? ) # Invalid option
18
+ echo " Error: Invalid option: $OPTARG "
19
+ exit ;;
20
+ esac
21
+ done
22
+
23
+ # Only need to do this once
24
+ gh auth login || die " gh auth login failed"
25
+
26
+ while read repo branches; do
27
+ if [ " $repo " != " #" ]; then
28
+ (
29
+ cd $repo || die " $repo : does not exit"
30
+ git fetch origin || die " $repo : git fetch"
31
+ for i in $branches ; do
32
+ git checkout -B module-update-$i origin/$i || die " $repo :$i checkout"
33
+ rm -rf .git/MERGE*
34
+ if ! git subtree pull --squash --prefix=release-tools https://github.com/kubernetes-csi/csi-release-tools.git master; then
35
+ # Sometimes "--squash" leads to merge conflicts. Because we know that "release-tools"
36
+ # is an unmodified copy of csi-release-tools, we can automatically resolve that
37
+ # by replacing it completely.
38
+ if [ -e .git/MERGE_MSG ] && [ -e .git/FETCH_HEAD ] && grep -q " ^# Conflict" .git/MERGE_MSG; then
39
+ rm -rf release-tools
40
+ mkdir release-tools
41
+ git archive FETCH_HEAD | tar -C release-tools -xf - || die " failed to re-create release-tools from FETCH_HEAD"
42
+ git add release-tools || die " add release-tools"
43
+ git commit --file=.git/MERGE_MSG || die " commit squashed release-tools"
44
+ else
45
+ die " git subtree pull --squash failed, cannot reover."
46
+ fi
47
+ fi
48
+ RETRY=0
49
+ while ! ./release-tools/go-get-kubernetes.sh -p $v && RETRY < MAX_RETRY
50
+ do
51
+ RETRY=RETRY+1
52
+ go mod tidy && go mod vendor && go mod tidy
53
+ done
54
+ go mod tidy && go mod vendor && go mod tidy || die " last go mod vendor && go mod tidy failed"
55
+ git add --all || die " git add -all failed"
56
+ git commit -m " Update dependency go modules for k8s v$v " || die " commit update modules"
57
+ git remote set-url origin https://github.com/$username /$repo .git || die " git remote set-url failed"
58
+ make test || die " $repo :$i make test"
59
+ git push origin module-update-$i --force || die " origin:module-update-$i push failed - probably there is already an unmerged branch and pending PR"
60
+ gh pr create --title=" Update dependency go modules for k8s v$v " --body " Ran kubernetes-csi/csi-release-tools go-get-kubernetes.sh -p $v " --head " $username :module-update-master" --base " master" --repo=" kubernetes-csi/$repo "
61
+ done
62
+ ) || die " failed"
63
+ fi
64
+ done << EOF
65
+ csi-driver-host-path master
66
+ csi-driver-iscsi master
67
+ csi-driver-nfs master
68
+ csi-lib-utils master
69
+ csi-proxy master
70
+ csi-test master
71
+ external-attacher master
72
+ external-health-monitor master
73
+ external-provisioner master
74
+ external-resizer master
75
+ external-snapshotter master
76
+ livenessprobe master
77
+ node-driver-registrar master
78
+ EOF
0 commit comments