mirror of https://github.com/portainer/portainer
feat(version): add version setting script bump version EE-2529 (#6820)
* version bumper * tell the user to check updatepull/8292/head
parent
9c0e0607a4
commit
02de7b2715
|
@ -0,0 +1,139 @@
|
|||
#!/bin/bash
|
||||
|
||||
# For reference see: https://portainer.atlassian.net/wiki/spaces/TECH/pages/570589194/Code+Freeze+Preparation
|
||||
|
||||
# Portainer (CE + EE)
|
||||
# Change version in package.json
|
||||
# Change APIVersion in portainer.go
|
||||
# Change @version in handler/handler.go
|
||||
|
||||
# This script requires jq
|
||||
# sudo apt-get install jq
|
||||
|
||||
if ! [ -x "$(command -v sed)" ]; then
|
||||
echo 'Error: sed is not installed.' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [ -x "$(command -v jq)" ]; then
|
||||
echo 'Error: jq is not installed. Get it here: https://stedolan.github.io/jq/download/' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CURRENT_VERSION=$(jq -r '.version' package.json)
|
||||
PROMPT=true
|
||||
|
||||
# Parse the major, minor and patch versions
|
||||
# out.
|
||||
# You use it like this:
|
||||
# semver="3.4.5+xyz"
|
||||
# a=($(ParseSemVer "$semver"))
|
||||
# major=${a[0]}
|
||||
# minor=${a[1]}
|
||||
# patch=${a[2]}
|
||||
# printf "%-32s %4d %4d %4d\n" "$semver" $major $minor $patch
|
||||
function ParseSemVer() {
|
||||
local token="$1"
|
||||
local major=0
|
||||
local minor=0
|
||||
local patch=0
|
||||
|
||||
if [[ "$token" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
|
||||
major=${BASH_REMATCH[1]}
|
||||
minor=${BASH_REMATCH[2]}
|
||||
patch=${BASH_REMATCH[3]}
|
||||
fi
|
||||
|
||||
echo "$major $minor $patch"
|
||||
}
|
||||
|
||||
Help()
|
||||
{
|
||||
echo "*** Bump Portainer version ***"
|
||||
echo
|
||||
echo "The Portainer version is in the semantic version format:"
|
||||
echo " X.Y.Z (Major.Minor.Patch)"
|
||||
echo
|
||||
echo "The current version is defined in multiple files."
|
||||
echo "This script will update the version in the following files:"
|
||||
echo " package.json"
|
||||
echo " api/portainer.go"
|
||||
echo " api/http/handler/handler.go"
|
||||
echo
|
||||
echo "Usage: bump-version.sh [-s|-h]"
|
||||
echo "options:"
|
||||
echo " -h Print this Help."
|
||||
echo " -s Silently bump minor version without prompting."
|
||||
echo
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
-s)
|
||||
# automatically bump minor version with no prompting
|
||||
PROMPT=false
|
||||
;;
|
||||
|
||||
-h | --help) # display Help
|
||||
Help
|
||||
exit
|
||||
esac
|
||||
|
||||
|
||||
[ $PROMPT == true ] && {
|
||||
echo "Current Portainer version: ${CURRENT_VERSION}"
|
||||
}
|
||||
|
||||
a=($(ParseSemVer "$CURRENT_VERSION"))
|
||||
major=${a[0]}
|
||||
minor=${a[1]}
|
||||
patch=${a[2]}
|
||||
|
||||
minor=$(($minor+1))
|
||||
NEW_VERSION="${major}.${minor}.${patch}"
|
||||
|
||||
[ $PROMPT == true ] && {
|
||||
echo -n "New Portainer version: [${NEW_VERSION}]: "
|
||||
read -r inp
|
||||
|
||||
[[ ! -z "$inp" ]] && NEW_VERSION="$inp"
|
||||
|
||||
a=($(ParseSemVer "$NEW_VERSION"))
|
||||
major=${a[0]}
|
||||
minor=${a[1]}
|
||||
patch=${a[2]}
|
||||
|
||||
if [ "$major" == 0 ] && [ "$minor" == 0 ] && [ "$patch" = 0 ]; then
|
||||
echo "Invalid version format, must be major.minor.patch"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Version will be changed to: ${NEW_VERSION}"
|
||||
echo -n "Continue? [y/N]: "
|
||||
read -r inp
|
||||
|
||||
if [ "$inp" != "y" ]; then
|
||||
echo "Version left unchanged"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
tmp=$(mktemp)
|
||||
|
||||
# Change version in package.json
|
||||
filename="package.json"
|
||||
jq --arg a "$NEW_VERSION" '.version = $a' package.json > "$tmp" && mv "$tmp" "$filename"
|
||||
echo "Updated $filename."
|
||||
|
||||
# Update portainer.go
|
||||
filename="api/portainer.go"
|
||||
sed -E "s/^([[:blank:]]*APIVersion[[:blank:]]*=[[:blank:]]*).*/\1\"$NEW_VERSION\"/" "$filename" > "$tmp" && mv "$tmp" "$filename"
|
||||
echo "Updated $filename."
|
||||
|
||||
# Change @version in handler/handler.go
|
||||
filename="api/http/handler/handler.go"
|
||||
sed -E "s|// @version .*|// @version $NEW_VERSION|" "$filename" > "$tmp" && mv "$tmp" "$filename"
|
||||
echo "Updated $filename."
|
||||
echo
|
||||
echo "IMPORTANT! Before committing, please ensure the files have updated correctly with `git diff`"
|
||||
|
Loading…
Reference in New Issue