From e6820821a8fc4afec121ac98819928678ad14064 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 14:51:32 -0500 Subject: [PATCH 1/8] Grab last version from tag rather than .bumpconfig --- semver/get_version.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/semver/get_version.py b/semver/get_version.py index 0e11895..42ce3f7 100644 --- a/semver/get_version.py +++ b/semver/get_version.py @@ -15,7 +15,15 @@ except ImportError: def get_version(dot=False): config = ConfigParser() config.read('./.bumpversion.cfg') - version = config.get('bumpversion', 'current_version') + + version = "develop" + + tagged_versions = subprocess.Popen(['git','tag','-l','[0-9]*.[0-9]*.[0-9]*'], + stdout=subprocess.PIPE, stderr=DEVNULL, cwd=".").stdout.read().decode('utf-8').rstrip().split('\n') + if len(tagged_versions) > 0 and tagged_versions[-1] != "": + version = tagged_versions[-1] + + # Get the commit hash of the version v_hash = subprocess.Popen(['git', 'rev-list', '-n', '1', version], stdout=subprocess.PIPE, stderr=DEVNULL, cwd='.').stdout.read().decode('utf-8').rstrip() From 1f0bc75c672b41041dc2e0cb7c18aaf015114fc7 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 15:30:58 -0500 Subject: [PATCH 2/8] Override bumpversion --- semver/__init__.py | 13 +++++++++++++ semver/get_version.py | 11 +++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/semver/__init__.py b/semver/__init__.py index e134af6..29769ce 100644 --- a/semver/__init__.py +++ b/semver/__init__.py @@ -1,6 +1,8 @@ import argparse import re import subprocess +from semver.get_version import get_tag_version + try: from configparser import ConfigParser except ImportError: @@ -97,6 +99,17 @@ class SemVer(object): # use bumpversion to increment the appropriate version type def version_repo(self): + config_file = "" + with open(".bumpversion.cfg", "r") as file: + config_file = file.read() + # Update .bumpconfig + pattern = re.compile("current_version = [0-9.]*") + current_config = re.search(pattern, config_file) + if current_config: + config_file.replace(current_config, "current_version = " + get_tag_version()) + with open(".bumpversion.cfg", "w") as file: + file.write(config_file) + # version repo p = subprocess.Popen(['bumpversion', self.version_type], cwd='.') diff --git a/semver/get_version.py b/semver/get_version.py index 42ce3f7..49645a6 100644 --- a/semver/get_version.py +++ b/semver/get_version.py @@ -11,18 +11,17 @@ except ImportError: import os DEVNULL = open(os.devnull, 'wb') - -def get_version(dot=False): - config = ConfigParser() - config.read('./.bumpversion.cfg') - +def get_tag_version(): version = "develop" tagged_versions = subprocess.Popen(['git','tag','-l','[0-9]*.[0-9]*.[0-9]*'], stdout=subprocess.PIPE, stderr=DEVNULL, cwd=".").stdout.read().decode('utf-8').rstrip().split('\n') if len(tagged_versions) > 0 and tagged_versions[-1] != "": version = tagged_versions[-1] - + return version + +def get_version(dot=False): + version = get_tag_version() # Get the commit hash of the version v_hash = subprocess.Popen(['git', 'rev-list', '-n', '1', version], stdout=subprocess.PIPE, From fd5d54c4ccb2620621ee1b74d913b9e47f5f4bc0 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 15:37:53 -0500 Subject: [PATCH 3/8] Update self-versioning --- Jenkinsfile | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9bc79f3..094836a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,30 +15,38 @@ pipeline { } stages { - //Pulls docker image for self-versioning - stage("Pull Versioning Image") - { - steps - { - withEcr { - sh "docker pull ${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}" - } - } - } //Runs versioning in docker container - stage('Version') { - agent { - docker { - image "${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}" - } - } + stage('Self Version') { steps { - // runs the automatic semver tool which will version, & tag, - runAutoSemver() - - //Grabs current version script { + + def docker_image = docker.image("${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}") + docker_image.inside{ + + def RETURN_STATUS + def regex = '^\\s*current_version\\s*=\\s*\\K[^\\s]+' + env.SEMVER_OLD_VERSION = sh(script: "grep -Po '${regex}' .bumpversion.cfg", returnStdout: true).trim() + + RETURN_STATUS = sh(script: "semver -n", returnStatus: true) + echo "Semver Return Status: ${RETURN_STATUS}" + env.SEMVER_STATUS = RETURN_STATUS + switch (RETURN_STATUS) { + case "0": + echo 'Versioned will push after build/test.' + break + case "128": + echo 'Unknown Semver Failure' + sh 'exit 1' + break + default: + echo 'No versioning required.' + break + } + + env.SEMVER_NEW_VERSION = sh(script: "grep -Po '${regex}' .bumpversion.cfg", returnStdout: true).trim() + env.SEMVER_RESOLVED_VERSION = getVersion('-d') + env.VERSION = getVersion('-d') } } From ccc8386a2d708b50518ac8a0daf54621eac8a159 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 15:41:17 -0500 Subject: [PATCH 4/8] Fix formatting --- Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 094836a..733d2ea 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -48,6 +48,8 @@ pipeline { env.SEMVER_RESOLVED_VERSION = getVersion('-d') env.VERSION = getVersion('-d') + } + } } } post{ From b81338a8499a8049b4f09f6981026d6a30f79f96 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 15:49:13 -0500 Subject: [PATCH 5/8] Fix formatting --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 733d2ea..df8a350 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -48,7 +48,7 @@ pipeline { env.SEMVER_RESOLVED_VERSION = getVersion('-d') env.VERSION = getVersion('-d') - } + } } } From 116961f1f749b0720a1dab9eecdc5205fe594d7f Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 16:10:01 -0500 Subject: [PATCH 6/8] Plan for lack of version --- semver/__init__.py | 6 ++++-- semver/get_version.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/semver/__init__.py b/semver/__init__.py index 29769ce..6605f60 100644 --- a/semver/__init__.py +++ b/semver/__init__.py @@ -107,8 +107,10 @@ class SemVer(object): current_config = re.search(pattern, config_file) if current_config: config_file.replace(current_config, "current_version = " + get_tag_version()) - with open(".bumpversion.cfg", "w") as file: - file.write(config_file) + else: + config_file.replace("[bumpversion]","[bumpversion]\ncurrent_version = " + get_tag_version()) + with open(".bumpversion.cfg", "w") as file: + file.write(config_file) # version repo p = subprocess.Popen(['bumpversion', self.version_type], diff --git a/semver/get_version.py b/semver/get_version.py index 49645a6..12786fd 100644 --- a/semver/get_version.py +++ b/semver/get_version.py @@ -12,7 +12,7 @@ except ImportError: DEVNULL = open(os.devnull, 'wb') def get_tag_version(): - version = "develop" + version = "0.0.0" tagged_versions = subprocess.Popen(['git','tag','-l','[0-9]*.[0-9]*.[0-9]*'], stdout=subprocess.PIPE, stderr=DEVNULL, cwd=".").stdout.read().decode('utf-8').rstrip().split('\n') From 7be7706acca663938c160ec40f1c88cd4c85f1e1 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 16:57:30 -0500 Subject: [PATCH 7/8] Grab tagged version based on .bumpversion.cfg --- semver/get_version.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/semver/get_version.py b/semver/get_version.py index 12786fd..2b6c158 100644 --- a/semver/get_version.py +++ b/semver/get_version.py @@ -12,9 +12,13 @@ except ImportError: DEVNULL = open(os.devnull, 'wb') def get_tag_version(): + config = ConfigParser() + config.read('./.bumpversion.cfg') + tag_expression = config.get('bumpversion','tag_name').replace('{new_version}','[0-9]*.[0-9]*.[0-9]*') + version = "0.0.0" - tagged_versions = subprocess.Popen(['git','tag','-l','[0-9]*.[0-9]*.[0-9]*'], + tagged_versions = subprocess.Popen(['git','tag','-l',tag_expression], stdout=subprocess.PIPE, stderr=DEVNULL, cwd=".").stdout.read().decode('utf-8').rstrip().split('\n') if len(tagged_versions) > 0 and tagged_versions[-1] != "": version = tagged_versions[-1] From e9c1d7c4b4c398452d768349a1831958cba813c1 Mon Sep 17 00:00:00 2001 From: Joseph Manley Date: Fri, 22 Nov 2019 16:58:18 -0500 Subject: [PATCH 8/8] Pass image to function --- Jenkinsfile | 34 +--------------------------------- 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index df8a350..2886d8f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,39 +18,7 @@ pipeline { //Runs versioning in docker container stage('Self Version') { steps { - script - { - - def docker_image = docker.image("${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}") - docker_image.inside{ - - def RETURN_STATUS - def regex = '^\\s*current_version\\s*=\\s*\\K[^\\s]+' - env.SEMVER_OLD_VERSION = sh(script: "grep -Po '${regex}' .bumpversion.cfg", returnStdout: true).trim() - - RETURN_STATUS = sh(script: "semver -n", returnStatus: true) - echo "Semver Return Status: ${RETURN_STATUS}" - env.SEMVER_STATUS = RETURN_STATUS - switch (RETURN_STATUS) { - case "0": - echo 'Versioned will push after build/test.' - break - case "128": - echo 'Unknown Semver Failure' - sh 'exit 1' - break - default: - echo 'No versioning required.' - break - } - - env.SEMVER_NEW_VERSION = sh(script: "grep -Po '${regex}' .bumpversion.cfg", returnStdout: true).trim() - env.SEMVER_RESOLVED_VERSION = getVersion('-d') - - env.VERSION = getVersion('-d') - - } - } + runAutoSemver("${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}") } post{ // Update Git with status of version stage.