...

Text file src/github.com/emissary-ingress/emissary/v3/releng/prepare-y-bump

Documentation: github.com/emissary-ingress/emissary/v3/releng

     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...'
    62if ! grep -q -F -e "- version: ${next_xy}.0" docs/releaseNotes.yml; then
    63	gawk -i inplace \
    64	     -v next_xy="${next_xy}" \
    65	     '
    66	       BEGIN { done=0 }
    67	       /^  - version:/ && !done {
    68	         print "  - version: " next_xy ".0"
    69	         print "    date: '\''TBD'\''"
    70	         print "    notes: []"
    71	         print ""
    72	         done=1
    73	       } \
    74	       { print }
    75	     ' \
    76	    docs/releaseNotes.yml
    77fi
    78
    79echo 'Editing charts/emissary-ingress/CHANGELOG.md...'
    80if ! grep -q -e "^## v{next_xy}\.0(\$| )" charts/emissary-ingress/CHANGELOG.md; then
    81	gawk -i inplace \
    82	     -v next_xy="${next_xy}" \
    83	     -v chart_next_xy="${chart_next_xy}" \
    84	     '
    85	       BEGIN { done=0 }
    86	       { del=0 }
    87	       /^## Next Release/ && !done {
    88	         print "## v" chart_next_xy ".0 (not yet released)"
    89	         print ""
    90	         print "- Upgrade Emissary to v" next_xy ".0 [CHANGELOG](https://github.com/emissary-ingress/emissary/blob/master/CHANGELOG.md)"
    91	         print ""
    92	         done=1
    93	         del=1
    94	       }
    95	       /^## v/ && !done {
    96	         print "## v" chart_next_xy ".0 (not yet released)"
    97	         print ""
    98	         print "- Upgrade Emissary to v" next_xy ".0 [CHANGELOG](https://github.com/emissary-ingress/emissary/blob/master/CHANGELOG.md)"
    99	         print ""
   100	         done=1
   101	       }
   102	       /no changes yet/ { del=1 }
   103	       !del { print }
   104	     ' \
   105	     charts/emissary-ingress/CHANGELOG.md
   106fi
   107
   108echo "Running 'make generate-fast'..."
   109make generate-fast
   110
   111echo
   112echo 'Commiting changes...'
   113git add .
   114git commit --signoff --message="Prepare to work on v${next_xy}.0"
   115
   116echo 'Creating tags...'
   117git tag --annotate --message="Start work on Emissary v${next_xy}.0" "v${next_xy}.0-dev"
   118refs+=("v${next_xy}.0-dev")
   119git 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"
   120refs+=("chart/v${chart_next_xy}.0-dev")
   121
   122echo
   123echo "======================================================================"
   124echo
   125echo "All done!"
   126echo "Look over the commit that has been made locally;"
   127echo "when you are ready, run the following command to push it:"
   128echo
   129echo "    git push origin ${refs[*]}"
   130echo

View as plain text