@@ -20,112 +20,59 @@ this=`basename $0`
2020
2121usage () {
2222cat << EOF
23- Usage: $this [-h] [-a] RELEASE_VERSION
23+ Prepare for an NVIDIA Container Toolkit release
24+
25+ Usage: $this [-h] --previous-version <previous_version> --version <version>
2426
2527Options:
26- --previous-version specify the previous version (default: latest tag)
28+ --previous-version specify the previous version
29+ --version specify the version for this release.
2730 --help/-h show this help and exit
2831
2932Example:
3033
31- $this {{ VERSION }}
34+ $this --previous-version {{ PREVIOUS_VERSION}} --version {{ VERSION }}
3235
3336EOF
3437}
3538
36- validate_semver () {
37- local version=$1
38- local semver_regex=" ^v([0-9]+)\.([0-9]+)\.([0-9]+)(-([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?$"
39-
40- if [[ $version =~ $semver_regex ]]; then
41- major=${BASH_REMATCH[1]}
42- minor=${BASH_REMATCH[2]}
43- patch=${BASH_REMATCH[3]}
44-
45- # Check if major, minor, and patch are numeric
46- if ! [[ $major =~ ^[0-9]+$ ]] || ! [[ $minor =~ ^[0-9]+$ ]] || ! [[ $patch =~ ^[0-9]+$ ]]; then
47- echo " Invalid SemVer format: $version "
48- return 1
49- fi
50-
51- # Validate prerelease if present
52- if [[ ! -z " ${BASH_REMATCH[5]} " ]]; then
53- prerelease=${BASH_REMATCH[5]}
54- prerelease_regex=" ^([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)$"
55- if ! [[ $prerelease =~ $prerelease_regex ]]; then
56- echo " Invalid SemVer format: $version "
57- return 1
58- fi
59- fi
60-
61- echo " Valid SemVer format: $version "
62- return 0
63- else
64- echo " Invalid SemVer format: $version "
65- return 1
66- fi
67- }
68-
69- #
70- # Parse command line
71- #
72- no_patching=
73- previous_version=$( git describe --tags $( git rev-list --tags --max-count=1) )
7439# Parse command line options
40+ previous_version=
41+ version=
7542while [[ $# -gt 0 ]]; do
7643 key=" $1 "
7744 case $key in
7845 --previous-version)
7946 previous_version=" $2 "
8047 shift 2
8148 ;;
82- --help/-h) usage
49+ --version)
50+ version=" $2 "
51+ shift 2
52+ ;;
53+ --help/-h)
54+ usage
8355 exit 0
8456 ;;
85- * ) break
57+ * ) usage
58+ exit 1
8659 ;;
8760 esac
8861done
8962
9063# Check that no extra args were provided
91- if [ $# -ne 1 ]; then
92- if [ $# -lt 1 ]; then
93- echo -e " ERROR: too few arguments\n"
94- else
95- echo -e " ERROR: unknown arguments: ${@: 3} \n"
96- fi
64+ if [ -z " $version " ]; then
65+ echo -e " ERROR: --version is required"
9766 usage
9867 exit 1
9968fi
10069
101- release=$1
102- shift 1
103-
104- container_image=nvcr.io/nvidia/k8s-device-plugin:$release
105-
106- #
107- # Check/parse release number
108- #
109- if [ -z " $release " ]; then
110- echo -e " ERROR: missing RELEASE_VERSION\n"
70+ if [ -z $previous_version ]; then
71+ echo -e " ERROR: --previous-version is required"
11172 usage
11273 exit 1
11374fi
11475
115- # validate the release version
116- if ! validate_semver $release ; then
117- echo -e " ERROR: invalid RELEASE_VERSION\n"
118- exit 1
119- fi
120- semver=${release: 1}
121-
122- # validate the previous version
123- if ! validate_semver $previous_version ; then
124- echo -e " ERROR: invalid PREVIOUS_VERSION\n"
125- exit 1
126- fi
127- pre_semver=${previous_version: 1}
128-
12976#
13077# Modify files in the repo to point to new release
13178#
@@ -137,10 +84,10 @@ else
13784 SED=" sed"
13885fi
13986
140- # TODO: We need to ensure that this tooling also works on `release-*` branches.
14187if [[ " $FORCE " != " yes" ]]; then
142- if [[ " $( git rev-parse --abbrev-ref HEAD) " != " main" ]]; then
143- echo " Release scripts should be run on 'main'"
88+ current_head=$( git rev-parse --abbrev-ref HEAD)
89+ if [[ " ${current_head} " != " main" || " ${current_head} " != release-* ]]; then
90+ echo " Release scripts should be run on 'main' or on a 'release-*' branch"
14491 exit 1
14592 fi
14693 git fetch
155102
156103# Create a release issue.
157104echo " Creating release tracking issue"
158- cat RELEASE.md | sed " s/{{ .VERSION }}/$release /g" | \
105+ cat RELEASE.md | sed " s/{{ .VERSION }}/${version} /g" | \
159106 gh issue create -F - \
160- -R NVIDIA/cloud-native-team \
161- --title " Release nvidia-container-toolkit $release " \
162- --label release
107+ -R NVIDIA/nvidia-container-toolkit \
108+ --title " Release nvidia-container-toolkit ${version} " \
109+ --label release \
110+ --milestone ${version}
163111
164- echo " Creating a version bump branch: bump-release-${release } "
165- git checkout -f -b bump-release-${release }
112+ echo " Creating a version bump branch: bump-release-${version } "
113+ git checkout -f -b bump-release-${version }
166114
167115# Patch versions.mk
168116LIB_VERSION=${release% -* }
169117LIB_VERSION=${LIB_VERSION# v}
170118if [[ ${release} == v* -rc.* ]]; then
171- LIB_TAG_STRING=" ${release #* -} "
119+ LIB_TAG_STRING=" ${version #* -} "
172120else
173121 LIB_TAG_STRING=
174122fi
175123
176- echo Patching versions.mk to refer to $release
124+ echo Patching versions.mk to refer to ${version}
177125$SED -i " s/^LIB_VERSION.*$/LIB_VERSION := $LIB_VERSION /" versions.mk
178126$SED -i " s/^LIB_TAG.*$/LIB_TAG :=$LIB_TAG_STRING /" versions.mk
179127
180128git add versions.mk
181- git commit -s -m " Bump version for $release release"
129+ git commit -s -m " Bump version for ${version} release"
182130
183- if [[ $release != * -rc.* ]]; then
131+ if [[ ${version} != * -rc.* ]]; then
184132 # Patch README.md
185- echo Patching README.md to refer to $release
186- $SED -E -i -e " s/([^[:space:]])$previous_version ([^[:alnum:]]|$)/\1$release \2/g" README.md
133+ echo Patching README.md to refer to ${version}
134+ $SED -E -i -e " s/([^[:space:]])$previous_version ([^[:alnum:]]|$)/\1${version} \2/g" README.md
187135 $SED -E -i -e " s/$pre_semver /$semver /g" README.md
188136
189137 git add -u README.md
190- git commit -s -m " Bump version to $release in README"
138+ git commit -s -m " Bump version to ${version} in README"
191139else
192140 echo " Skipping README update for prerelease version"
193141fi
0 commit comments