mirror of
https://github.com/atosatto/ansible-minio.git
synced 2024-11-22 11:25:11 +01:00
add releaser script
This commit is contained in:
parent
b05757b1ba
commit
9227281d4c
71
.travis/releaser.sh
Executable file
71
.travis/releaser.sh
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018 Pawel Krupa (@paulfantom) - All Rights Reserved
|
||||||
|
# Permission to copy and modify is granted under the MIT license
|
||||||
|
#
|
||||||
|
# Script to automatically do a couple of things:
|
||||||
|
# - generate a new tag according to semver (https://semver.org/)
|
||||||
|
# - generate CHANGELOG.md by using https://github.com/skywinder/github-changelog-generator
|
||||||
|
# - sync CHANGELOG with GitHub releases by using https://github.com/mattbrictson/chandler
|
||||||
|
#
|
||||||
|
# Tags are generated by searching for a keyword in last commit message. Keywords are:
|
||||||
|
# - [patch] or [fix] to bump patch number
|
||||||
|
# - [minor], [feature] or [feat] to bump minor number
|
||||||
|
# - [major] or [breaking change] to bump major number
|
||||||
|
# All keywords MUST be surrounded with square braces.
|
||||||
|
#
|
||||||
|
# Script uses git mechanisms for locking, so it can be used in parallel builds
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
# - GH_TOKEN variable set with GitHub token. Access level: repo.public_repo
|
||||||
|
# - docker
|
||||||
|
# - git-semver python package (pip install git-semver)
|
||||||
|
|
||||||
|
# Exit when latest commit is tagged
|
||||||
|
[[ $(git tag --points-at) ]] && exit 0
|
||||||
|
|
||||||
|
# Some basic variables
|
||||||
|
GIT_MAIL="cloudalchemybot@gmail.com"
|
||||||
|
GIT_USER="cloudalchemybot"
|
||||||
|
ORGANIZATION=$(echo "$TRAVIS_REPO_SLUG" | awk -F '/' '{print $1}')
|
||||||
|
PROJECT=$(echo "$TRAVIS_REPO_SLUG" | awk -F '/' '{print $2}')
|
||||||
|
GALAXY_URL="https://galaxy.ansible.com/${ORGANIZATION}/${PROJECT#ansible-}"
|
||||||
|
|
||||||
|
# Git config
|
||||||
|
git config --global user.email "${GIT_MAIL}"
|
||||||
|
git config --global user.name "${GIT_USER}"
|
||||||
|
GIT_URL=$(git config --get remote.origin.url)
|
||||||
|
GIT_URL=${GIT_URL#*//}
|
||||||
|
|
||||||
|
# Generate TAG
|
||||||
|
GIT_TAG=none
|
||||||
|
echo "Last commit message: $TRAVIS_COMMIT_MESSAGE"
|
||||||
|
case "${TRAVIS_COMMIT_MESSAGE}" in
|
||||||
|
*"[patch]"*|*"[fix]"* ) GIT_TAG=$(git semver --next-patch) ;;
|
||||||
|
*"[minor]"*|*"[feat]"*|*"[feature]"* ) GIT_TAG=$(git semver --next-minor) ;;
|
||||||
|
*"[major]"*|*"[breaking change]"* ) GIT_TAG=$(git semver --next-major) ;;
|
||||||
|
*) echo "Keyword not detected. Doing nothing" ;;
|
||||||
|
esac
|
||||||
|
if [ "$GIT_TAG" != "none" ]; then
|
||||||
|
echo "Assigning new tag: $GIT_TAG"
|
||||||
|
git tag "$GIT_TAG" -a -m "Automatic tag generation for travis build no. $TRAVIS_BUILD_NUMBER"
|
||||||
|
git push "https://${GH_TOKEN}:@${GIT_URL}" --tags || exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate CHANGELOG.md
|
||||||
|
git checkout master
|
||||||
|
git pull
|
||||||
|
docker run -it --rm -v "$(pwd)":/usr/local/src/your-app ferrarimarco/github-changelog-generator \
|
||||||
|
-u "${ORGANIZATION}" -p "${PROJECT}" --token "${GH_TOKEN}" \
|
||||||
|
--release-url "${GALAXY_URL}" \
|
||||||
|
--unreleased-label "**Next release**" --no-compare-link
|
||||||
|
|
||||||
|
git add CHANGELOG.md
|
||||||
|
git commit -m '[ci skip] Automatic changelog update'
|
||||||
|
|
||||||
|
git push "https://${GH_TOKEN}:@${GIT_URL}" || exit 0
|
||||||
|
|
||||||
|
# Sync changelog to github releases
|
||||||
|
if [ "$GIT_TAG" != "none" ]; then
|
||||||
|
docker run -e CHANDLER_GITHUB_API_TOKEN="${GH_TOKEN}" -v "$(pwd)":/chandler -ti whizark/chandler push "${GIT_TAG}"
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user