ci(circleci): add version check script

This commit is contained in:
Gergő Jedlicska
2022-04-28 19:19:59 +02:00
parent addadc1b12
commit 40ef61042e
2 changed files with 98 additions and 0 deletions
+84
View File
@@ -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)
+14
View File
@@ -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