Hopefully this makes releases a little better for users. In particular, this avoids listing old build artifacts in the SHA256SUMS files when we make new releases, and users can now download them directly. Now to make a release you run: `make tag && make release`. After the first make session ends, you'll have a new tag released publicly, and then during the second make session, the release target will notice this new tag, build some assets, and upload them!
49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# This script generates a deb changelog from the project's git history.
|
|
|
|
# version we're releasing
|
|
VERSION="$1"
|
|
# path to store the changelog
|
|
CHANGELOG="releases/${VERSION}/deb/changelog"
|
|
# input to format flag for git tag
|
|
TAG_FORMAT="-- %(creator) %(creatordate:format:%a, %d %b %Y %H:%M:%S %z) %(refname:lstrip=2)"
|
|
# a list of tags to be parsed in the loop
|
|
TAGS=$(git tag --sort=-creatordate --format="$TAG_FORMAT" | sed -r 's/[0-9]+ -[0-9]+ //')
|
|
|
|
# placeholder for the next line of the list
|
|
THIS_TAGLINE=
|
|
|
|
# parse the list
|
|
while read -r LAST_TAGLINE; do
|
|
# read ahead one tag
|
|
if [ "$THIS_TAGLINE" == "" ]; then
|
|
# store the tag for the next iteration
|
|
THIS_TAGLINE="$LAST_TAGLINE"
|
|
continue
|
|
fi
|
|
|
|
# grab the tags from the last column of the taglines
|
|
THIS_TAG=$(echo "$THIS_TAGLINE" | awk '{print $NF}')
|
|
LAST_TAG=$(echo "$LAST_TAGLINE" | awk '{print $NF}')
|
|
|
|
# print the release description
|
|
printf "mgmt (%s) unstable; priority=low\n\n" "$THIS_TAG" >> "$CHANGELOG"
|
|
|
|
# print all the commits between the tags
|
|
git shortlog -n "${LAST_TAG}...${THIS_TAG}" | sed -r '/\):/s/^/ * /' >> "$CHANGELOG"
|
|
|
|
# print the release signature
|
|
printf "%s\n\n\n" "$THIS_TAGLINE" | sed -r 's/[0-9]\.[0-9]\.[0-9]+//'>> "$CHANGELOG"
|
|
|
|
# first tag is special since there's no previous one
|
|
if [ "$LAST_TAG" == "0.0.1" ]; then
|
|
# print all the commits before the first tag
|
|
git shortlog -n "$LAST_TAG" | sed -r '/\):/s/^/ * /' >> "$CHANGELOG"
|
|
# print the release signature
|
|
printf "%s\n" "$LAST_TAGLINE" | sed -r 's/[0-9]\.[0-9]\.[0-9]+//'>> "$CHANGELOG"
|
|
fi
|
|
|
|
# store the tag for the next iteration
|
|
THIS_TAGLINE="$LAST_TAGLINE"
|
|
done <<< "$TAGS"
|