-
Notifications
You must be signed in to change notification settings - Fork 74
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add wrapper script for sidecar release
- Loading branch information
1 parent
de2fba8
commit d04da1f
Showing
1 changed file
with
96 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Copyright 2023 The Kubernetes Authors. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# This script can be used while converting a repo from "dep" to "go mod" | ||
# by calling it after "go mod init" or to update the Kubernetes packages | ||
# in a repo that has already been converted. Only packages that are | ||
# part of kubernetes/kubernetes and thus part of a Kubernetes release | ||
# are modified. Other k8.io packages (like k8s.io/klog, k8s.io/utils) | ||
# need to be updated separately. | ||
|
||
die () { | ||
echo >&2 "$@" | ||
exit 1 | ||
} | ||
|
||
MAX_RETRY=10 | ||
|
||
# Get the options | ||
while getopts ":u:v:" option; do | ||
case $option in | ||
u) # Set username | ||
username=$OPTARG;; | ||
v) # Set version | ||
v=$OPTARG;; | ||
\?) # Invalid option | ||
echo "Error: Invalid option: $OPTARG" | ||
exit;; | ||
esac | ||
done | ||
|
||
while read -r repo branches; do | ||
if [ "$repo" != "#" ]; then | ||
( | ||
cd "$repo" || die "$repo: does not exit" | ||
git fetch origin || die "$repo: git fetch" | ||
for i in $branches; do | ||
git checkout -B "module-update-$i origin/$i" || die "$repo:$i checkout" | ||
rm -rf .git/MERGE* | ||
if ! git subtree pull --squash --prefix=release-tools https://github.com/kubernetes-csi/csi-release-tools.git master; then | ||
# Sometimes "--squash" leads to merge conflicts. Because we know that "release-tools" | ||
# is an unmodified copy of csi-release-tools, we can automatically resolve that | ||
# by replacing it completely. | ||
if [ -e .git/MERGE_MSG ] && [ -e .git/FETCH_HEAD ] && grep -q "^# Conflict" .git/MERGE_MSG; then | ||
rm -rf release-tools | ||
mkdir release-tools | ||
git archive FETCH_HEAD | tar -C release-tools -xf - || die "failed to re-create release-tools from FETCH_HEAD" | ||
git add release-tools || die "add release-tools" | ||
git commit --file=.git/MERGE_MSG || die "commit squashed release-tools" | ||
else | ||
die "git subtree pull --squash failed, cannot reover." | ||
fi | ||
fi | ||
RETRY=0 | ||
while ! ./release-tools/go-get-kubernetes.sh -p "$v" && RETRY < $MAX_RETRY | ||
do | ||
RETRY=$((RETRY + 1)) | ||
go mod tidy && go mod vendor && go mod tidy | ||
done | ||
go mod tidy && go mod vendor && go mod tidy || die "last go mod vendor && go mod tidy failed" | ||
git add --all || die "git add -all failed" | ||
git commit -m "Update dependency go modules for k8s v$v" || die "commit update modules" | ||
git remote set-url "origin https://github.com/$username/$repo.git" || die "git remote set-url failed" | ||
make test || die "$repo:$i make test" | ||
git push origin "module-update-$i" --force || die "origin:module-update-$i push failed - probably there is already an unmerged branch and pending PR" | ||
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" | ||
done | ||
) || die "failed" | ||
fi | ||
done <<EOF | ||
csi-driver-host-path master | ||
csi-driver-iscsi master | ||
csi-driver-nfs master | ||
csi-lib-utils master | ||
csi-proxy master | ||
csi-test master | ||
external-attacher master | ||
external-health-monitor master | ||
external-provisioner master | ||
external-resizer master | ||
external-snapshotter master | ||
livenessprobe master | ||
node-driver-registrar master | ||
EOF |