stages: - release create_release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest only: - tags rules: - if: $CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+.*$/ script: - | # Get the previous tag to generate changelog PREVIOUS_TAG=$(git describe --tags --abbrev=0 $CI_COMMIT_TAG^ 2>/dev/null || echo "") # Generate changelog if [ -n "$PREVIOUS_TAG" ]; then CHANGELOG=$(git log --pretty=format:"* %s (%an)" $PREVIOUS_TAG..$CI_COMMIT_TAG) else CHANGELOG=$(git log --pretty=format:"* %s (%an)" $CI_COMMIT_TAG) fi # Save changelog to file for release echo -e "## Changes\n$CHANGELOG" > changelog.md release: name: 'Release $CI_COMMIT_TAG' tag_name: '$CI_COMMIT_TAG' description: './changelog.md' ref: '$CI_COMMIT_TAG'