Files
brewman/deploy.sh
T

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit ; pwd -P )
cd "$parent_path" || exit
if [ $# -ne 1 ]; then
echo "Usage: $0 <major|minor|patch|version_string>"
exit 1
fi
if git describe --exact-match --tags HEAD >/dev/null 2>&1; then
existing_tag=$(git describe --exact-match --tags HEAD)
echo "Current commit is already tagged with $existing_tag. Skipping tag creation."
new_version=${existing_tag#v}
else
current_version=$(git describe --tags --abbrev=0 | sed 's/^v//')
IFS='.' read -r major minor patch <<< "$current_version"
if [ "$1" == "major" ]; then
major=$((major + 1)); minor=0; patch=0
new_version="${major}.${minor}.${patch}"
elif [ "$1" == "minor" ]; then
minor=$((minor + 1)); patch=0
new_version="${major}.${minor}.${patch}"
elif [ "$1" == "patch" ]; then
patch=$((patch + 1))
new_version="${major}.${minor}.${patch}"
elif [[ "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
new_version="$1"
else
echo "Invalid argument: must be 'major', 'minor', 'patch', or a specific version (e.g. 1.2.3)"
exit 1
fi
echo "Tagging v$new_version"
git tag "v$new_version"
fi
git push
git push --tags
make build-production TAG="$new_version"
cd "$parent_path/ansible" || exit
ansible-playbook --inventory=hosts playbook.yml