@@ -9,7 +9,7 @@ declare -A hash2namesref=( ["k1"]="v1")
9
9
get_hash2pr_map () {
10
10
commit_hash_refnames_regex=" ^([a-f0-9]{40})[[:blank:]]*(.*)"
11
11
refnames_pr_id_regex=" ^\(.*/pr/([0-9]+).*\)"
12
- GIT_LOG_LHASH2REFNAMES=" $( mktemp /tmp/$( basename $0 ) .XXXXXX. h2refnames) "
12
+ GIT_LOG_LHASH2REFNAMES=" $( mktemp /tmp/$( basename $0 ) .h2refnames.XXXXXX ) "
13
13
git log --pretty=format:' %H %d' ${COMMIT_RANGE} > ${GIT_LOG_LHASH2REFNAMES}
14
14
while read -r line || [ -n " $line " ]; do
15
15
line=$( echo " $line " | xargs)
@@ -35,7 +35,7 @@ get_hash2pr_map() {
35
35
# return release history string with '\n' delimited
36
36
generate_release_history () {
37
37
commit_hash_subj_regex=" ^([a-f0-9]{40})[[:blank:]]+(.+)(\(\#[0-9]+\))?"
38
- GIT_LOG_LHASH2SUBJ=" $( mktemp /tmp/$( basename $0 ) .XXXXXX. h2subj) "
38
+ GIT_LOG_LHASH2SUBJ=" $( mktemp /tmp/$( basename $0 ) .h2subj.XXXXXX ) "
39
39
git log --pretty=format:' %H %s' ${COMMIT_RANGE} > ${GIT_LOG_LHASH2SUBJ}
40
40
rel_hist=" "
41
41
while read -r line || [ -n " $line " ]; do
@@ -65,7 +65,7 @@ generate_release_history() {
65
65
# $2 - ${NEW_RELEASE_DATE}
66
66
# $3 - ${NEW_RELEASE_HISTORY}
67
67
write_release_note () {
68
- GITHUB_RELEASE_PAYLOAD=" $( mktemp /tmp/$( basename $0 ) .XXXXXX) "
68
+ GITHUB_RELEASE_PAYLOAD=" $( mktemp /tmp/$( basename $0 ) .releasePayload. XXXXXX) "
69
69
echo " {" > " ${GITHUB_RELEASE_PAYLOAD} "
70
70
echo ' "tag_name":' " \" $1 \" ," >> " ${GITHUB_RELEASE_PAYLOAD} "
71
71
echo ' "name":' " \" $1 \" ," >> " ${GITHUB_RELEASE_PAYLOAD} "
109
109
110
110
# Detect if running from a fork
111
111
#
112
- GITHUB_REPO=" $( git ls-remote --quiet -- get-url | grep -o ' [^:/]\{1,\}/bluebutton-web-server' ) "
112
+ GITHUB_REPO=" $( git ls-remote --get-url | grep -o ' [^:/]\{1,\}/bluebutton-web-server' ) "
113
113
114
114
# Test running from root of repository
115
115
#
@@ -169,39 +169,46 @@ get_hash2pr_map
169
169
NEW_RELEASE_HISTORY=$( generate_release_history)
170
170
171
171
if [[ -z " ${NEW_RELEASE_HISTORY} " ]]; then
172
- echo " No commits detected since previous release, no need for a new release, exiting."
173
- exit 0
172
+ echo " No commits detected since previous release, no need for a new release, exiting."
173
+ rm " /tmp/$( basename $0 ) " *
174
+ exit 0
174
175
fi
175
176
176
177
# Create and push new release tag
177
178
#
179
+ echo " Pushing new tag"
178
180
git tag -a -s -m " Blue Button API release $NEW_RELEASE_TAG " " $NEW_RELEASE_TAG "
179
- git push --quiet -- tags
181
+ git push --tags
180
182
181
183
# Create GitHub release template
182
184
#
183
185
write_release_note " ${NEW_RELEASE_TAG} " " ${NEW_RELEASE_DATE} " " ${NEW_RELEASE_HISTORY} "
184
186
185
187
# Create GitHub release via API request
186
188
#
187
- GITHUB_RELEASE_STATUS=" $( mktemp /tmp/$( basename $0 ) .XXXXXX) "
189
+ GITHUB_RELEASE_STATUS=" $( mktemp /tmp/$( basename $0 ) .releaseStatus. XXXXXX) "
188
190
189
191
curl -s -X POST -H " Accept: application/vnd.github.v3+json" \
190
192
-H " Authorization: token ${GITHUB_ACCESS_TOKEN} " \
191
193
" https://api.github.com/repos/${GITHUB_REPO} /releases" \
192
194
--data-binary " @${GITHUB_RELEASE_PAYLOAD} " > " ${GITHUB_RELEASE_STATUS} "
193
195
194
196
# Verify GitHub release
195
- if [[ " $( grep ' "errors":' ${GITHUB_RELEASE_STATUS} ) " ]]; then
197
+ if grep -q " \" tag_name\" : \" ${NEW_RELEASE_TAG} \" " " ${GITHUB_RELEASE_STATUS} "
198
+ then
199
+ echo " Release created successfully: https://github.com/${GITHUB_REPO} /releases/tag/${NEW_RELEASE_TAG} "
200
+ rm " /tmp/$( basename $0 ) " *
201
+ exit 0
202
+ else
196
203
echo " Error during release creation, dumping debug output!"
197
204
echo " Release JSON payload:"
198
205
cat " ${GITHUB_RELEASE_PAYLOAD} "
199
206
echo " Release API status:"
200
207
cat " ${GITHUB_RELEASE_STATUS} "
208
+ echo " Rolling back pushed tag"
209
+ git push -d origin " $NEW_RELEASE_TAG "
210
+ echo " Deleting local tag"
211
+ git tag -d " $NEW_RELEASE_TAG "
201
212
rm " /tmp/$( basename $0 ) " *
202
213
exit 1
203
- else
204
- echo " Release created successfully: https://github.com/${GITHUB_REPO} /releases/tag/${NEW_RELEASE_TAG} "
205
- rm " /tmp/$( basename $0 ) " *
206
- exit 0
207
214
fi
0 commit comments