Release / Plano (este commit já foi validado?) (push) Successful in 4s
CI / Trivy (dependências, segredos e configuração) (push) Successful in 9s
CI / Código e scripts (push) Successful in 14s
CI / Pacote .deb (push) Failing after 3s
Release / ci (push) Failing after 18s
Release / Publica a release (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Imprime as notas de uma release: a imagem publicada (quando houver) e a seção
|
|
# do CHANGELOG.md daquela versão (ou o log de commits desde a tag anterior, se
|
|
# não houver seção).
|
|
#
|
|
# scripts/release-notes.sh v1.2.3 [git.exemplo.com/dono/projeto]
|
|
set -euo pipefail
|
|
|
|
tag=${1:?uso: release-notes.sh <tag> [imagem]}
|
|
image=${2:-}
|
|
version=${tag#v}
|
|
|
|
if [ -n "$image" ]; then
|
|
echo "## Imagem"
|
|
echo
|
|
echo '```'
|
|
echo "$image:$version"
|
|
echo '```'
|
|
echo
|
|
fi
|
|
|
|
section=""
|
|
if [ -f CHANGELOG.md ]; then
|
|
section=$(awk -v head="## [$version]" '
|
|
index($0, head) == 1 { found = 1; next }
|
|
found && /^## \[/ { exit }
|
|
found && /^\[[^]]+\]: / { next }
|
|
found { print }
|
|
' CHANGELOG.md)
|
|
fi
|
|
|
|
if [ -n "$(printf '%s' "$section" | tr -d '[:space:]')" ]; then
|
|
printf '%s\n' "$section"
|
|
else
|
|
previous=$(git describe --tags --abbrev=0 "$tag^" 2>/dev/null || true)
|
|
echo "## Mudanças${previous:+ desde $previous}"
|
|
echo
|
|
git log --no-merges --format='- %s (%h)' "${previous:+$previous..}$tag"
|
|
fi
|