Update main.yml #33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create Tag | |
on: | |
push: | |
branches: | |
- master | |
- prod | |
- dev | |
jobs: | |
build: | |
name: Create Tag | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Git | |
run: | | |
git config --global user.name 'github-actions' | |
- name: Create Tag | |
id: create_tag | |
env: | |
GITHUB_REF: ${{ github.ref }} | |
run: | | |
set -x | |
VERSION_PREFIX="v" | |
CURRENT_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "${VERSION_PREFIX}0.0.0") | |
echo "CURRENT_TAG: $CURRENT_TAG" | |
CURRENT_VERSION=${CURRENT_TAG#$VERSION_PREFIX} | |
IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" | |
echo "VERSION_PARTS: ${VERSION_PARTS[@]}" | |
if [[ "$GITHUB_REF" == 'refs/heads/prod' ]]; then | |
VERSION_PARTS[0]=$((VERSION_PARTS[0] + 1)) | |
VERSION_PARTS[1]=0 | |
VERSION_PARTS[2]=0 | |
elif [[ "$GITHUB_REF" == 'refs/heads/master' ]]; then | |
VERSION_PARTS[2]=$((VERSION_PARTS[2] + 1)) | |
else | |
VERSION_PARTS[1]=$((VERSION_PARTS[1] + 1)) | |
VERSION_PARTS[2]=0 | |
fi | |
NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.${VERSION_PARTS[2]}" | |
NEW_TAG="$VERSION_PREFIX$NEW_VERSION" | |
while git rev-parse "$NEW_TAG" >/dev/null 2>&1 | |
do | |
echo "$NEW_TAG already exists" | |
VERSION_PARTS[2]=$((VERSION_PARTS[2] + 1)) | |
NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.${VERSION_PARTS[2]}" | |
NEW_TAG="$VERSION_PREFIX$NEW_VERSION" | |
done | |
echo "NEW_TAG: $NEW_TAG" | |
git tag $NEW_TAG || (echo "Failed to create tag" && exit 1) | |
git push origin $NEW_TAG || (echo "Failed to push tag" && exit 1) | |
echo "::set-output name=TAG_NAME::$NEW_TAG" | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.create_tag.outputs.TAG_NAME }} | |
release_name: Release ${{ steps.create_tag.outputs.TAG_NAME }} | |
draft: false | |
prerelease: false |