...
1#!/usr/bin/env bash
2
3# This script is meant to be run as `./releng/prepare-y-bump` by a
4# human Emissary maintainer who is designating that we are starting
5# work on a new X.Y version.
6
7set -euE -o pipefail
8
9this_xy=$(git describe --tags --match='v*'|cut -d. -f1,2|sed 's/^v//')
10next_xy=${this_xy%.*}.$((${this_xy##*.}+1))
11
12chart_this_xy=$(git describe --tags --match='chart/v*'|cut -d. -f1,2|sed 's,^chart/v,,')
13chart_next_xy=${chart_this_xy%.*}.$((${chart_this_xy##*.}+1))
14
15refs=()
16
17if test -z "$(git for-each-ref "refs/remotes/*/release/v${this_xy}")"; then
18 # We are on 'master', which will become the next_xy branch,
19 # and we need to create a 'release/v${this_xy}' branch.
20
21 git branch "release/v${this_xy}"
22 refs+=("release/v${this_xy}")
23
24 git branch "${USER}/v${next_xy}"
25 git switch "${USER}/v${next_xy}"
26 refs+=("${USER}/v${next_xy}")
27
28 echo 'Editing README.md...'
29 gawk -i inplace \
30 -v this_xy="${this_xy}" \
31 -v next_xy="${next_xy}" \
32 '
33 /\[`master`\].*branch for/ {
34 print "- [`master`](https://github.com/emissary-ingress/emissary/tree/master) - branch for Emissary-ingress " next_xy ".z work (:heavy_check_mark: upcoming release)"
35 print "- [`release/v" this_xy "`](https://github.com/emissary-ingress/emissary/tree/release/v" this_xy ") - branch for Emissary-ingress " this_xy ".z work (:heavy_check_mark: current latest)"
36 }
37 ! /\[`master`\].*branch for/ { print }
38 ' \
39 README.md
40else
41 # We are on 'release/v{this_xy}' (presumably 'x' is not the
42 # latest major version), and we need to create a
43 # 'release/${next_xy}' branch.
44
45 git branch "release/v${next_xy}"
46 git switch "release/v${next_xy}"
47 refs+=("release/v${next_xy}")
48
49 echo 'Editing README.md...'
50 gawk -i inplace \
51 -v next_xy="${next_xy}" \
52 '
53 /\[`release\/v'"${this_xy/./'\.'}"'`\].*branch for/ {
54 print "- [`release/v" next_xy "`](https://github.com/emissary-ingress/emissary/tree/release/v" next_xy ") - branch for Emissary-ingress " next_xy ".z work (:heavy_check_mark: upcoming release)"
55 }
56 { print }
57 ' \
58 README.md
59fi
60
61echo 'Editing docs/releaseNotes.yml...'
62gawk -i inplace \
63 -v next_xy="${next_xy}" \
64 '
65 BEGIN { done=0 }
66 /^ - version:/ && !done {
67 print " - version: " next_xy ".0"
68 print " date: '\''TBD'\''"
69 print " notes: []"
70 print ""
71 done=1
72 } \
73 { print }
74 ' \
75 docs/releaseNotes.yml
76
77echo 'Editing charts/emissary-ingress/CHANGELOG.md...'
78gawk -i inplace \
79 -v next_xy="${next_xy}" \
80 -v chart_next_xy="${chart_next_xy}" \
81 '
82 BEGIN { done=0 }
83 /^## v/ && !done {
84 print "## v" chart_next_xy ".0"
85 print ""
86 print "- Upgrade Emissary to v" next_xy ".0 [CHANGELOG](https://github.com/emissary-ingress/emissary/blob/master/CHANGELOG.md)"
87 print ""
88 done=1
89 }
90 { print }
91 ' \
92 charts/emissary-ingress/CHANGELOG.md
93
94echo "Running 'make generate-fast'..."
95make generate-fast
96
97echo
98echo 'Commiting changes...'
99git add .
100git commit --signoff --message="Prepare to work on v${next_xy}.0"
101
102echo 'Creating tags...'
103git tag --annotate --message="Start work on Emissary v${next_xy}.0" "v${next_xy}.0-dev"
104refs+=("v${next_xy}.0-dev")
105git tag --annotate --message="Start work on Emissary chart v${chart_next_xy}.0 for Emissary v${next_xy}.0" "chart/v${chart_next_xy}.0-dev"
106refs+=("chart/v${chart_next_xy}.0-dev")
107
108echo
109echo "======================================================================"
110echo
111echo "All done!"
112echo "Look over the commit that has been made locally;"
113echo "when you are ready, run the following command to push it:"
114echo
115echo " git push origin ${refs[*]}"
116echo
View as plain text