Skip to content

Commit 7cf2b4a

Browse files
Add wrapper script for sidecar release
1 parent e322ce5 commit 7cf2b4a

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

go-modules-update.sh

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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

Comments
 (0)