mirror of
https://github.com/postmanlabs/openapi-to-postman.git
synced 2022-11-29 22:05:00 +03:00
Merge pull request #331 from postmanlabs/feature/automate-release-script
Added script for automating release process
This commit is contained in:
@@ -146,6 +146,7 @@
|
||||
"test-unit": "./scripts/test-unit.sh",
|
||||
"test-lint": "./scripts/test-lint.sh",
|
||||
"test-system": "./scripts/test-system.sh",
|
||||
"release": "./scripts/release.sh",
|
||||
"coverage": "nyc report --reporter=html --reporter=text mocha"
|
||||
}
|
||||
}
|
||||
|
||||
69
scripts/release.sh
Executable file
69
scripts/release.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
# ----------------------------------------------------------------------------------------------------------------------
|
||||
# This script is intended to automate release process.
|
||||
# Explanation: This script will pull all latest changes from master and develop and checkout release branch from develop
|
||||
# with specified version and then bump up package version and add CHANGELOGS (input required) and commit them. After
|
||||
# that merge release branch into master and develop with appropriate tags.
|
||||
#
|
||||
# Example: "npm run release 1.2.3"
|
||||
# ----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
# Stop on first error
|
||||
set -e;
|
||||
|
||||
# Ensure that the provided version is in valid semver format
|
||||
if [[ ! $1 =~ ^v?[0-9]+(\.[0-9]+){2}(-[a-z]+\.\d+)?$ ]]; then
|
||||
echo "A valid version must be provided as the first argument.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
ver=${1/v/}; # Strip the leading v from the version (if it exists)
|
||||
msg=$2;
|
||||
|
||||
[[ -z $msg ]] && msg="Released v${ver}";
|
||||
|
||||
# Update the master branch to the latest
|
||||
git checkout master;
|
||||
git pull origin master;
|
||||
|
||||
# Update develop to the latest, and create a release brach off of it.
|
||||
git checkout develop;
|
||||
git pull origin develop;
|
||||
git checkout -b release/$ver;
|
||||
|
||||
# Bump version in package.json, but do not create a git tag
|
||||
npm version $ver --no-git-tag-version;
|
||||
|
||||
# Inject the current release version and date into the CHANGELOG file
|
||||
sed -i "" "3i\\
|
||||
#### v${ver} (`date '+%B %d, %Y'`)\\
|
||||
\\
|
||||
" CHANGELOG.md;
|
||||
|
||||
# Find all commits between the HEAD on develop and the latest tag on master, and pipe their messages into the clipboard
|
||||
git log $(git describe --tags master --abbrev=0)..HEAD --merges --pretty=format:'* %s' | pbcopy;
|
||||
|
||||
# Provision manual intervention for CHANGELOG.md
|
||||
vi CHANGELOG.md
|
||||
|
||||
# Create the release
|
||||
git add CHANGELOG.md package.json;
|
||||
[[ -f package-lock.json ]] && git add package-lock.json;
|
||||
git commit -am "$msg";
|
||||
|
||||
# Merge the release branch into develop and push
|
||||
git checkout develop;
|
||||
git merge --no-ff release/$ver;
|
||||
git push origin develop;
|
||||
|
||||
# Merge the release branch into master, create a tag and push
|
||||
git checkout master;
|
||||
git merge --no-ff release/$ver;
|
||||
git tag -a "$ver" -m "$msg";
|
||||
git push origin master --follow-tags;
|
||||
|
||||
# Move back to develop
|
||||
git checkout develop;
|
||||
git branch -d release/$ver;
|
||||
|
||||
unset msg ver;
|
||||
Reference in New Issue
Block a user