sigs.k8s.io/external-dns@v0.14.1/scripts/releaser.sh (about) 1 #!/bin/bash 2 set -e 3 4 current_tag="${GITHUB_REF#refs/tags/}" 5 start_ref="HEAD" 6 7 function generate_changelog { 8 # Find the previous release on the same branch, skipping prereleases if the 9 # current tag is a full release 10 previous_tag="" 11 while [[ -z $previous_tag || ( $previous_tag == *-* && $current_tag != *-* ) ]]; do 12 previous_tag="$(git describe --tags "$start_ref"^ --abbrev=0 --match "v*")" 13 start_ref="$previous_tag" 14 done 15 16 git log "$previous_tag".. --reverse --merges --oneline --grep='Merge pull request #' | \ 17 while read -r sha title; do 18 pr_num="$(grep -o '#[[:digit:]]\+' <<<"$title")" 19 pr_desc="$(git show -s --format=%b "$sha" | sed -n '1,/^$/p' | tr $'\n' ' ')" 20 pr_author="$(gh pr view "$pr_num" | grep author | awk '{ print $2 }' | tr $'\n' ' ')" 21 printf "* %s (%s) @%s\n\n" "$pr_desc" "$pr_num" "$pr_author" 22 done 23 24 git log "$previous_tag".. --reverse --oneline --grep='(#' | \ 25 while read -r sha title; do 26 pr_num="$(grep -o '#[[:digit:]]\+' <<<"$title")" 27 pr_desc="$(git show -s --format=%s "$sha")" 28 pr_author="$(gh pr view "$pr_num" | grep author | awk '{ print $2 }' | tr $'\n' ' ')" 29 printf "* %s (%s) @%s\n\n" "$pr_desc" "$pr_num" "$pr_author" 30 done 31 } 32 33 function create_release { 34 generate_changelog | gh release create "$1" -t "$1" -F - 35 } 36 37 if [ $# -ne 1 ]; then 38 echo "$0: usage: releaser [release number]" 39 echo "example: ./releaser.sh v0.7.5" 40 exit 1 41 fi 42 43 create_release "$1"