diff --git a/Jenkinsfile b/Jenkinsfile index 9bc79f3..2886d8f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,32 +15,10 @@ 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 - { - env.VERSION = getVersion('-d') - } + runAutoSemver("${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}") } post{ // Update Git with status of version stage. diff --git a/semver/__init__.py b/semver/__init__.py index e134af6..6605f60 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,19 @@ 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()) + 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], cwd='.') diff --git a/semver/get_version.py b/semver/get_version.py index 0e11895..2b6c158 100644 --- a/semver/get_version.py +++ b/semver/get_version.py @@ -11,11 +11,22 @@ except ImportError: import os DEVNULL = open(os.devnull, 'wb') - -def get_version(dot=False): +def get_tag_version(): config = ConfigParser() config.read('./.bumpversion.cfg') - version = config.get('bumpversion', 'current_version') + 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',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] + 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, stderr=DEVNULL, cwd='.').stdout.read().decode('utf-8').rstrip()