diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e60c460..a31e44c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -141,8 +141,7 @@ release: - upload script: - echo "Creating GitLab Release for ${CI_COMMIT_TAG}" - - PREV_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 --max-count=1) 2>/dev/null || echo "") - - if [ -n "$PREV_TAG" ]; then git log --pretty=format:"- [%h](https://gitlab.com/${CI_PROJECT_PATH}/-/commit/%H) %s" ${PREV_TAG}..${CI_COMMIT_TAG} --no-merges > release_notes.md; else echo "Initial release" > release_notes.md; fi + - sh ./build-aux/extract-changelog-for-tag.sh ./CHANGELOG.md ${CI_COMMIT_TAG} > release_notes.md release: name: "Release ${CI_COMMIT_TAG}" description: "$(cat release_notes.md)" diff --git a/build-aux/extract-changelog-for-tag.sh b/build-aux/extract-changelog-for-tag.sh new file mode 100644 index 0000000..ef27136 --- /dev/null +++ b/build-aux/extract-changelog-for-tag.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +CHANGELOG_FILE=$1 +CURRENT_TAG=$2 +PREVIOUS_TAG=$(git describe --tags --abbrev=0 "${CURRENT_TAG}"^) + +# Extract content between the two tags +awk "/^## \[${CURRENT_TAG}\] - / {flag=1; next} /^## \[${PREVIOUS_TAG}\] - / {flag=0; exit} flag" "${CHANGELOG_FILE}" | + # Remove leading and trailing empty lines + sed -e '1{/^$/d;}' -e '${/^$/d;}'