Skip to content
Snippets Groups Projects
release.sh 1.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • Alexandre MEYER's avatar
    Alexandre MEYER committed
    #!bin/bash
    
    # get current branch
    branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
    
    # push any local changes
    git push
    
    # run a build to catch any uncommitted updates
    npm run build
    
    # branch validation
    if [ $branch = "dev" ]; then
    	# check current branch is clean
    	if output=$(git status --porcelain) && [ -z "$output" ]; then
    		
    		# get the version number
    		echo "Enter the release version (eg. 1.2.0):"
    		read version
    
    		echo "Started releasing Congo v$version..."
    
    		# update package version
    		jq --arg version "$version" '.version=$version' package.json > package.tmp && mv package.tmp package.json
    		sed -i "" -e "1s/^\(\/\*! Congo \)v[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}/\1v$version/" assets/css/main.css
    
    		# update changelog
    		chan release $version || exit
    		npx prettier --write CHANGELOG.md
    
    		# build project
    		npm run build
    
    		# commit version updates
    		git commit -a -m "🔨 Preparing release v$version"
    		git push
    
    		# switch to stable branch
    		git checkout stable
    
    		# pull latest from stable
    		git pull
    
    		# merge in changes from dev branch
    		git merge --no-ff dev -m "🔖 Release v$version"
    
    		# create tag
    		git tag "v$version"
    
    		# push commit and tag to remote
    		git push
    		git push --tags
    
    		# publish GitHub release
    		timeout 2 chan gh-release $version
    
    		echo "Congo v$version successfully released! 🎉"
    		echo "Returning to dev branch..."
    
    		git checkout dev
    
    	else	
    		echo "ERROR: There are unstaged changes in development!"
    		echo "Clean the working directory and try again."
    	fi
    else 
    	echo "ERROR: Releases can only be published from the dev branch!"
    fi