1010# -----------------------------------------------------------
1111TAG_REGEX=" ^[0-9][0-9]\.([1-9]|[1][0-2])\.[0-9]+$"
1212REMOTE=" origin"
13-
13+ PR_MSG=" > [!CAUTION]
14+ > ## DO NOT MERGE WITHOUT MANUAL CHECKING!
15+ > This PR contains information about commits have been cherry-picked to the release branch from the main branch, and may not reflect the correct chronology. Please check!"
1416parse_inputs () {
1517 RELEASE_TAG=" "
1618 PUSH=false
@@ -50,26 +52,26 @@ check_operators() {
5052 do
5153 echo " Operator: $OPERATOR "
5254 if [ ! -d " $TEMP_RELEASE_FOLDER /$OPERATOR " ]; then
53- echo " Expected folder is missing: $TEMP_RELEASE_FOLDER /$OPERATOR "
54- exit 1
55+ echo " Cloning folder: $TEMP_RELEASE_FOLDER /$OPERATOR "
56+ # $TEMP_RELEASE_FOLDER has already been created in main()
57+ git clone " git@github.com:stackabletech/${OPERATOR} .git" " $TEMP_RELEASE_FOLDER /$OPERATOR "
5558 fi
56-
5759 cd " $TEMP_RELEASE_FOLDER /$OPERATOR "
5860
59- DIRTY_WORKING_COPY=$( git status --short)
60- if [ -n " $DIRTY_WORKING_COPY " ]; then
61- echo " Dirty working copy found for operator $OPERATOR "
62- exit 1
61+ if ! git diff-index --quiet HEAD --; then
62+ >&2 echo " Dirty git index for $OPERATOR . Check working tree or staged changes. Exiting."
63+ exit 2
6364 fi
64- BRANCH_EXISTS=$( git branch | grep " $RELEASE_BRANCH " )
65+
66+ BRANCH_EXISTS=$( git branch -a | grep " $RELEASE_BRANCH " )
6567 if [ -z " $BRANCH_EXISTS " ]; then
66- echo " Expected release branch is missing: $OPERATOR /$RELEASE_BRANCH "
68+ >&2 echo " Expected release branch is missing: $OPERATOR /$RELEASE_BRANCH "
6769 exit 1
6870 fi
6971 git fetch --tags
7072 TAG_EXISTS=$( git tag | grep " $RELEASE_TAG " )
7173 if [ -z " $TAG_EXISTS " ]; then
72- echo " Expected tag $RELEASE_TAG missing for operator $OPERATOR "
74+ >&2 echo " Expected tag $RELEASE_TAG missing for operator $OPERATOR "
7375 exit 1
7476 fi
7577 done < <( yq ' ... comments="" | .operators[] ' " $INITIAL_DIR " /release/config.yaml)
@@ -82,7 +84,7 @@ update_operators() {
8284 do
8385 cd " $TEMP_RELEASE_FOLDER /$OPERATOR "
8486 # New branch that updates the CHANGELOG
85- CHANGELOG_BRANCH=" update-changelog-from-release-$RELEASE_TAG "
87+ CHANGELOG_BRANCH=" chore/ update-changelog-from-release-$RELEASE_TAG "
8688 # Branch out from main
8789 git switch -c " $CHANGELOG_BRANCH " main
8890 # Checkout CHANGELOG changes from the release tag
@@ -99,47 +101,51 @@ update_operators() {
99101 git commit -sm " Update CHANGELOG.md from release $RELEASE_TAG "
100102 # Maybe push and create pull request
101103 if " $PUSH " ; then
102- git push -u " $REMOTE " " $CHANGELOG_BRANCH "
103- gh pr create --fill --reviewer stackabletech/developers --head " $CHANGELOG_BRANCH " --base main
104+ git push -u " ${REMOTE} " " ${CHANGELOG_BRANCH} "
105+ gh pr create --reviewer stackabletech/developers --base main --head " ${CHANGELOG_BRANCH} " --title " chore: Update changelog from release ${RELEASE_TAG} " --body " ${PR_MSG} "
106+ else
107+ echo " (Dry-run: not pushing...)"
108+ git push --dry-run " ${REMOTE} " " ${CHANGELOG_BRANCH} "
109+ gh pr create --reviewer stackabletech/developers --dry-run --base main --head " ${CHANGELOG_BRANCH} " --title " chore: Update changelog from release ${RELEASE_TAG} " --body " ${PR_MSG} "
104110 fi
105111 done < <( yq ' ... comments="" | .operators[] ' " $INITIAL_DIR " /release/config.yaml)
106112}
107113
108114# Check that the docker-images repo has been cloned locally, and that the release
109115# branch and tag exists.
110- check_docker_images () {
111- echo " docker-images"
116+ check_products () {
112117 if [ ! -d " $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO " ]; then
113- echo " Expected folder is missing: $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO "
114- exit 1
118+ echo " Cloning folder: $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO "
119+ # $TEMP_RELEASE_FOLDER has already been created in main()
120+ git clone " git@github.com:stackabletech/${DOCKER_IMAGES_REPO} .git" " $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO "
115121 fi
116-
117122 cd " $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO "
118123
119- DIRTY_WORKING_COPY=$( git status --short)
120- if [ -n " ${DIRTY_WORKING_COPY} " ]; then
121- echo " Dirty working copy found for $DOCKER_IMAGES_REPO "
122- exit 1
124+ if ! git diff-index --quiet HEAD --; then
125+ >&2 echo " Dirty git index for $DOCKER_IMAGES_REPO . Check working tree or staged changes. Exiting."
126+ exit 2
123127 fi
124- BRANCH_EXISTS=$( git branch | grep " $RELEASE_BRANCH " )
128+
129+ BRANCH_EXISTS=$( git branch -a | grep " $RELEASE_BRANCH " )
125130 if [ -z " ${BRANCH_EXISTS} " ]; then
126- echo " Expected release branch is missing: $DOCKER_IMAGES_REPO /$RELEASE_BRANCH "
131+ >&2 echo " Expected release branch is missing: $DOCKER_IMAGES_REPO /$RELEASE_BRANCH "
127132 exit 1
128133 fi
134+
129135 git fetch --tags
130136 TAG_EXISTS=$( git tag | grep " $RELEASE_TAG " )
131137 if [ -z " ${TAG_EXISTS} " ]; then
132- echo " Expected tag $RELEASE_TAG missing for $DOCKER_IMAGES_REPO "
138+ >&2 echo " Expected tag $RELEASE_TAG missing for $DOCKER_IMAGES_REPO "
133139 exit 1
134140 fi
135141}
136142
137143# Update the docker-images changelogs on main, and check they do not differ from
138144# the changelog in the release branch.
139- update_docker_images () {
145+ update_products () {
140146 cd " $TEMP_RELEASE_FOLDER /$DOCKER_IMAGES_REPO "
141147 # New branch that updates the CHANGELOG
142- CHANGELOG_BRANCH=" update-changelog-from-release-$RELEASE_TAG "
148+ CHANGELOG_BRANCH=" chore/ update-changelog-from-release-$RELEASE_TAG "
143149 # Branch out from main
144150 git switch -c " $CHANGELOG_BRANCH " main
145151 # Checkout CHANGELOG changes from the release tag
@@ -156,8 +162,12 @@ update_docker_images() {
156162 git commit -sm " Update CHANGELOG.md from release $RELEASE_TAG "
157163 # Maybe push and create pull request
158164 if " $PUSH " ; then
159- git push -u " $REMOTE " " $CHANGELOG_BRANCH "
160- gh pr create --fill --reviewer stackabletech/developers --head " $CHANGELOG_BRANCH " --base main
165+ git push -u " ${REMOTE} " " ${CHANGELOG_BRANCH} "
166+ gh pr create --reviewer stackabletech/developers --base main --head " ${CHANGELOG_BRANCH} " --title " chore: Update changelog from release ${RELEASE_TAG} " --body " ${PR_MSG} "
167+ else
168+ echo " (Dry-run: not pushing...)"
169+ git push --dry-run " ${REMOTE} " " ${CHANGELOG_BRANCH} "
170+ gh pr create --reviewer stackabletech/developers --dry-run --base main --head " ${CHANGELOG_BRANCH} " --title " chore: Update changelog from release ${RELEASE_TAG} " --body " ${PR_MSG} "
161171 fi
162172}
163173
@@ -181,15 +191,20 @@ main() {
181191 exit 1
182192 fi
183193
194+ if [ ! -d " $TEMP_RELEASE_FOLDER " ]; then
195+ echo " Creating folder for cloning docker images and operators: [$TEMP_RELEASE_FOLDER ]"
196+ mkdir -p " $TEMP_RELEASE_FOLDER "
197+ fi
198+
184199 if [ " products" == " $WHAT " ] || [ " all" == " $WHAT " ]; then
185200 # sanity checks before we start: folder, branches etc.
186201 # deactivate -e so that piped commands can be used
187202 set +e
188- check_docker_images
203+ check_products
189204 set -e
190205
191206 echo " Update $DOCKER_IMAGES_REPO main changelog for release $RELEASE_TAG "
192- update_docker_images
207+ update_products
193208 fi
194209 if [ " operators" == " $WHAT " ] || [ " all" == " $WHAT " ]; then
195210 # sanity checks before we start: folder, branches etc.
0 commit comments