ci(circleci): add version check script
This commit is contained in:
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/python3
|
||||
import sys
|
||||
from typing import Optional
|
||||
from dataclasses import dataclass
|
||||
|
||||
@dataclass
|
||||
class Version:
|
||||
major: int
|
||||
minor: int
|
||||
patch: int
|
||||
pre_release_tag: Optional[str] = None
|
||||
build_number: Optional[int] = None
|
||||
|
||||
@property
|
||||
def pre_release_priority(self) -> int:
|
||||
if self.pre_release_tag == 'alpha':
|
||||
return 1
|
||||
if self.pre_release_tag == 'beta':
|
||||
return 2
|
||||
return 0
|
||||
|
||||
|
||||
@staticmethod
|
||||
def parse_version_slug(version_slug: str) -> "Version":
|
||||
members = version_slug.split(".")
|
||||
assert(3 <= len(members) <= 4)
|
||||
if len(members) == 3:
|
||||
major, minor, patch = members
|
||||
return Version(int(major), int(minor), int(patch))
|
||||
|
||||
else:
|
||||
major, minor, patch_and_pre, build = members
|
||||
patch, pre = patch_and_pre.split("-")
|
||||
return Version(int(major), int(minor), int(patch), pre, int(build))
|
||||
|
||||
def __gt__(self, other):
|
||||
if not isinstance(other, Version):
|
||||
raise ValueError(f'cannot compare with {other}')
|
||||
|
||||
if self.major > other.major:
|
||||
return True
|
||||
if self.major < other.major:
|
||||
return False
|
||||
|
||||
if self.minor > other.minor:
|
||||
return True
|
||||
if self.minor < other.minor:
|
||||
return False
|
||||
|
||||
if self.patch > other.patch:
|
||||
return True
|
||||
if self.patch < other.patch:
|
||||
return False
|
||||
|
||||
if self.pre_release_tag == other.pre_release_tag:
|
||||
if self.build_number > other.build_number:
|
||||
return True
|
||||
if self.build_number < other.build_number:
|
||||
return False
|
||||
|
||||
if self.pre_release_priority > other.pre_release_priority:
|
||||
return True
|
||||
if self.pre_release_priority < other.pre_release_priority:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = sys.argv[1:]
|
||||
assert(len(args) == 2)
|
||||
|
||||
current_version_slug, target_version_slug = args
|
||||
|
||||
print(f"comparing current version {current_version_slug} with target {target_version_slug}")
|
||||
|
||||
current_version = Version.parse_version_slug(current_version_slug)
|
||||
target_version = Version.parse_version_slug(target_version_slug)
|
||||
|
||||
if (target_version > current_version):
|
||||
print("target version is newer")
|
||||
exit(0)
|
||||
|
||||
print("current version is newer")
|
||||
exit(1)
|
||||
@@ -10,6 +10,20 @@ git config --global user.email "devops+circleci@speckle.systems"
|
||||
git config --global user.name "CI"
|
||||
|
||||
git clone git@github.com:specklesystems/helm.git ~/helm
|
||||
|
||||
# before overwriting the chart with the build version, check if the current chart version
|
||||
# is not newer than the currently build one
|
||||
|
||||
CURRENT_VERSION=(cat charts/speckle-server/Chart.yaml | grep ^version | grep -o '2\..*')
|
||||
echo ${CURRENT_VERSION}
|
||||
|
||||
./check_version.py ${CURRENT_VERSION} ${RELEASE_VERSION}
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo "The current helm chart version is newer than the currently built. Exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf ~/helm/charts/speckle-server
|
||||
cp -r utils/helm/speckle-server ~/helm/charts/speckle-server
|
||||
|
||||
|
||||
Reference in New Issue
Block a user