add semantic versioning checks
This commit is contained in:
		@ -1,5 +1,5 @@
 | 
			
		||||
[bumpversion]
 | 
			
		||||
current_version = 1.0.4
 | 
			
		||||
current_version = 1.0.5
 | 
			
		||||
commit = True
 | 
			
		||||
tag = True
 | 
			
		||||
tag_name = v{new_version}
 | 
			
		||||
@ -10,7 +10,7 @@ search = version = {current_version}
 | 
			
		||||
replace = version = {new_version}
 | 
			
		||||
 | 
			
		||||
[semver]
 | 
			
		||||
main_branches = develop, env-test, env-stage, env-prod
 | 
			
		||||
main_branches = develops, env-test, env-stage, env-prod
 | 
			
		||||
major_branches =
 | 
			
		||||
minor_branches = feature
 | 
			
		||||
minor_branches = feature, RightBrain-Networks/feature
 | 
			
		||||
patch_branches = hotfix, bugfix
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								dist/semver-1.0.5.tar.gz
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/semver-1.0.5.tar.gz
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										43
									
								
								semver.egg-info/PKG-INFO
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								semver.egg-info/PKG-INFO
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
Metadata-Version: 1.1
 | 
			
		||||
Name: semver
 | 
			
		||||
Version: 1.0.5
 | 
			
		||||
Summary: Automatic Semantic Versioner
 | 
			
		||||
Home-page: https://git-codecommit.us-east-1.amazonaws.com/v1/repos/auto-semver
 | 
			
		||||
Author: RightBrain Networks
 | 
			
		||||
Author-email: cloud@rightbrainnetworks.com
 | 
			
		||||
License: Apache2.0
 | 
			
		||||
Description: Semantic Versioning
 | 
			
		||||
        ===================
 | 
			
		||||
        
 | 
			
		||||
        Usage
 | 
			
		||||
        =====
 | 
			
		||||
        
 | 
			
		||||
        FULL\_PATH\_TO\_LOCAL\_REPO gives container access to repo to be versioned
 | 
			
		||||
        ==========================================================================
 | 
			
		||||
        
 | 
			
		||||
        FULL\_PATH\_TO\_SSH\_FOLDER gives container access to ssh keys to be able to push repo
 | 
			
		||||
        ======================================================================================
 | 
			
		||||
        
 | 
			
		||||
        docker build -t semver . docker run -v
 | 
			
		||||
        FULL\_PATH\_TO\_LOCAL\_REPO:/application\_repo -v
 | 
			
		||||
        FULL\_PATH\_TO\_SSH\_FOLDER:/root/.ssh semver
 | 
			
		||||
        
 | 
			
		||||
        after this finishes must go to FULL\_PATH\_TO\_LOCAL\_REPO and push yourself
 | 
			
		||||
        ============================================================================
 | 
			
		||||
        
 | 
			
		||||
        git push origin develop git push origin --tags
 | 
			
		||||
        
 | 
			
		||||
Keywords: Semantic Version
 | 
			
		||||
Platform: UNKNOWN
 | 
			
		||||
Classifier: Development Status :: 3 - Alpha
 | 
			
		||||
Classifier: Intended Audience :: Developers
 | 
			
		||||
Classifier: Intended Audience :: System Administrators
 | 
			
		||||
Classifier: Topic :: Software Development :: Build Tools
 | 
			
		||||
Classifier: License :: OSI Approved :: Apache Software License
 | 
			
		||||
Classifier: Programming Language :: Python :: 2
 | 
			
		||||
Classifier: Programming Language :: Python :: 2.7
 | 
			
		||||
Classifier: Programming Language :: Python :: 3
 | 
			
		||||
Classifier: Programming Language :: Python :: 3.3
 | 
			
		||||
Classifier: Programming Language :: Python :: 3.4
 | 
			
		||||
Classifier: Programming Language :: Python :: 3.5
 | 
			
		||||
Classifier: Programming Language :: Python :: 3.6
 | 
			
		||||
							
								
								
									
										10
									
								
								semver.egg-info/SOURCES.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								semver.egg-info/SOURCES.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
README.rst
 | 
			
		||||
setup.py
 | 
			
		||||
semver/__init__.py
 | 
			
		||||
semver/get_version.py
 | 
			
		||||
semver.egg-info/PKG-INFO
 | 
			
		||||
semver.egg-info/SOURCES.txt
 | 
			
		||||
semver.egg-info/dependency_links.txt
 | 
			
		||||
semver.egg-info/entry_points.txt
 | 
			
		||||
semver.egg-info/requires.txt
 | 
			
		||||
semver.egg-info/top_level.txt
 | 
			
		||||
							
								
								
									
										1
									
								
								semver.egg-info/dependency_links.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								semver.egg-info/dependency_links.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								semver.egg-info/entry_points.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								semver.egg-info/entry_points.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
[console_scripts]
 | 
			
		||||
semver = semver:main
 | 
			
		||||
semver_get_version = semver.get_version:main
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								semver.egg-info/requires.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								semver.egg-info/requires.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
bumpversion==0.5.3
 | 
			
		||||
							
								
								
									
										1
									
								
								semver.egg-info/top_level.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								semver.egg-info/top_level.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
semver
 | 
			
		||||
@ -6,38 +6,58 @@ except ImportError:
 | 
			
		||||
    # Python < 3
 | 
			
		||||
    from ConfigParser import ConfigParser
 | 
			
		||||
 | 
			
		||||
version = "1.0.4"
 | 
			
		||||
version = "1.0.5"
 | 
			
		||||
 | 
			
		||||
class SemVer(object):
 | 
			
		||||
 | 
			
		||||
    GET_COMMIT_MESSAGE = re.compile(r"Merge branch '(.+)' into ([^\n]+)")
 | 
			
		||||
    GET_COMMIT_MESSAGE = re.compile(r"Merge (branch|pull request) '?(.+)'? (into|from) ([\w/-]+)")
 | 
			
		||||
     #Merge pull request #1 from RightBrain-Networks/feature/PLAT-185-versioning
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.merged_branch = None
 | 
			
		||||
        self.main_branch = None
 | 
			
		||||
        self.version_type = None
 | 
			
		||||
 | 
			
		||||
        self.main_branches = self._setting_to_array('main_branches')
 | 
			
		||||
        self.major_branches = self._setting_to_array('major_branches')
 | 
			
		||||
        self.minor_branches = self._setting_to_array('minor_branches')
 | 
			
		||||
        self.patch_branches = self._setting_to_array('patch_branches')
 | 
			
		||||
        self.main_branches = ['development', 'env-test', 'env-stage', 'env-prod']
 | 
			
		||||
        self.major_branches = []
 | 
			
		||||
        self.minor_branches = ['feature', 'RightBrain-Networks/feature']
 | 
			
		||||
        self.patch_branches = ['hotfix', 'bugfix']
 | 
			
		||||
 | 
			
		||||
    def _setting_to_array(self, setting):
 | 
			
		||||
        config = ConfigParser()
 | 
			
		||||
        config.read('./.bumpversion.cfg')
 | 
			
		||||
        value = config.get('semver', setting)
 | 
			
		||||
    #def _setting_to_array(self, setting):
 | 
			
		||||
     #   config = ConfigParser()
 | 
			
		||||
     #   config.read('./.bumpversion.cfg')
 | 
			
		||||
     #   value = config.get('semver', setting)
 | 
			
		||||
     #   print(str(value))
 | 
			
		||||
        
 | 
			
		||||
        #return value.split(',')
 | 
			
		||||
        # filter() removes empty string which is what we get if setting is blank
 | 
			
		||||
        return filter(bool, [v.strip() for v in value.split(',')])
 | 
			
		||||
        #return [v.strip() for v in value.split(',')]
 | 
			
		||||
 | 
			
		||||
    # based on commit message see what branches are involved in the merge
 | 
			
		||||
    
 | 
			
		||||
    def get_branches(self):
 | 
			
		||||
        p = subprocess.Popen(['git', 'log', '-1'], stdout=subprocess.PIPE,
 | 
			
		||||
                             cwd='.')
 | 
			
		||||
        #check current branch
 | 
			
		||||
        b = subprocess.Popen(['git', 'rev-parse', '--abbrev-ref', 'HEAD'], stdout=subprocess.PIPE,
 | 
			
		||||
                             cwd='.')
 | 
			
		||||
        message = str(p.stdout.read())
 | 
			
		||||
        br = b.stdout.read().decode('utf-8')
 | 
			
		||||
        #remove newline
 | 
			
		||||
        branch=br.rstrip()
 | 
			
		||||
        print("Main branch is "+branch)
 | 
			
		||||
        matches = self.GET_COMMIT_MESSAGE.search(message)
 | 
			
		||||
        if matches:
 | 
			
		||||
            self.merged_branch = matches.group(1)
 | 
			
		||||
            self.main_branch = matches.group(2)
 | 
			
		||||
            if str(matches.group(4)) == branch:
 | 
			
		||||
                self.merged_branch = matches.group(2)
 | 
			
		||||
            else:
 | 
			
		||||
                self.merged_branch = matches.group(4)
 | 
			
		||||
            self.main_branch = branch
 | 
			
		||||
            #print("group1 "+matches.group(1))
 | 
			
		||||
            #print("group2 "+matches.group(2))
 | 
			
		||||
            #print("group3 "+matches.group(3))
 | 
			
		||||
            #print("group4 "+matches.group(4))
 | 
			
		||||
        
 | 
			
		||||
        return bool(matches)
 | 
			
		||||
 | 
			
		||||
    # based on branches involved see what type of versioning should be done
 | 
			
		||||
@ -78,7 +98,7 @@ class SemVer(object):
 | 
			
		||||
 | 
			
		||||
    def commit_and_push(self):
 | 
			
		||||
        # push versioning commit
 | 
			
		||||
        p = subprocess.Popen(['git', 'push', 'origin', 'develop'],
 | 
			
		||||
        p = subprocess.Popen(['git', 'push', 'origin', self.main_branch],
 | 
			
		||||
                             cwd='.')
 | 
			
		||||
        p.wait()
 | 
			
		||||
 | 
			
		||||
@ -93,6 +113,7 @@ class SemVer(object):
 | 
			
		||||
    # 3) see what type of versioning we should do
 | 
			
		||||
    # 4) version the repo
 | 
			
		||||
    def run(self):
 | 
			
		||||
        print(self.main_branches)
 | 
			
		||||
        if not self.get_branches():
 | 
			
		||||
            raise Exception('No merge found')
 | 
			
		||||
        if self.main_branch not in self.main_branches:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								semver/__pycache__/__init__.cpython-36.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								semver/__pycache__/__init__.cpython-36.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user