Skip to content
This repository was archived by the owner on Jun 28, 2022. It is now read-only.

Commit 00ba86c

Browse files
committed
Add release tagging script.
Signed-off-by: James Peach <[email protected]>
1 parent e4b8897 commit 00ba86c

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

hack/make-release-tag.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#! /usr/bin/env bash
2+
3+
# make-release-tag.sh: Tag main with a release version.
4+
5+
readonly PROGNAME=$(basename "$0")
6+
readonly OLDVERS="$1"
7+
readonly NEWVERS="$2"
8+
9+
if [ -z "$OLDVERS" ] || [ -z "$NEWVERS" ]; then
10+
printf "Usage: %s OLDVERS NEWVERS\n" "$PROGNAME"
11+
exit 1
12+
fi
13+
14+
set -o errexit
15+
set -o nounset
16+
set -o pipefail
17+
18+
git tag -F - "$NEWVERS" <<EOF
19+
Tag $NEWVERS release.
20+
21+
$(git shortlog "$OLDVERS..HEAD")
22+
EOF
23+
24+
printf "Created tag '%s'\n" "$NEWVERS"
25+
26+
# People set up their remotes in different ways, so we need to check
27+
# which one to dry run against. Choose a remote name that pushes to the
28+
# projectcontour org repository (i.e. not the user's Github fork).
29+
readonly REMOTE=$(git remote -v | awk '$2~/projectcontour\/lint/ && $3=="(push)" {print $1}' | head -n 1)
30+
if [ -z "$REMOTE" ]; then
31+
printf "%s: unable to determine remote for %s\n" "$PROGNAME" "projectcontour/lint"
32+
exit 1
33+
fi
34+
35+
readonly BRANCH=$(git branch --show-current)
36+
37+
printf "Testing whether commit can be pushed\n"
38+
git push --dry-run "$REMOTE" "$BRANCH"
39+
40+
printf "Testing whether tag '%s' can be pushed\n" "$NEWVERS"
41+
git push --dry-run "$REMOTE" "$NEWVERS"
42+
43+
printf "Run 'git push %s %s' to push the commit and then 'git push %s %s' to push the tag if you are happy\n" "$REMOTE" "$BRANCH" "$REMOTE" "$NEWVERS"

0 commit comments

Comments
 (0)