def __init__(self, factory, options, **kwargs): super(PublishSpinnakerCommand, self).__init__(factory, options, **kwargs) check_options_set(options, [ 'spinnaker_version', 'spinnaker_release_alias', 'bom_version', 'changelog_gist_url', 'github_owner', 'min_halyard_version' ]) major, minor, _ = self.options.spinnaker_version.split('.') self.__branch = 'release-{major}.{minor}.x'.format(major=major, minor=minor) options_copy = copy.copy(options) self.__bom_scm = BomSourceCodeManager(options_copy, self.get_input_dir()) self.__hal = HalRunner(options) self.__git = GitRunner(options) self.__hal.check_property('spinnaker.config.input.bucket', options.halyard_bom_bucket) if options.only_repositories: self.__only_repositories = options.only_repositories.split(',') else: self.__only_repositories = [] options_copy.git_branch = self.__branch self.__branch_scm = BranchSourceCodeManager(options_copy, self.get_input_dir())
def __init__(self, factory, options, **kwargs): super(CreateReleaseChangelogCommand, self).__init__(factory, options, **kwargs) check_options_set( options, ["build_changelog_gist_url", "changelog_gist_url", "spinnaker_version"], ) self.__git = GitRunner(options)
def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, UPSTREAM_USER, TEST_REPO_NAME) os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify( 'tag {base_version} HEAD'.format(base_version=VERSION_BASE)), gitify( 'checkout -b {base_branch}'.format(base_branch=BRANCH_BASE)), gitify('checkout -b {a_branch}'.format(a_branch=BRANCH_A)), 'touch "{dir}/a_file"'.format(dir=git_dir), gitify('add "{dir}/a_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added a_file"'), gitify('tag {a_version} HEAD'.format(a_version=VERSION_A)), gitify('checkout -b {b_branch}'.format(b_branch=BRANCH_B)), 'touch "{dir}/b_file"'.format(dir=git_dir), gitify('add "{dir}/b_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added b_file"'), gitify('tag {b_version} HEAD'.format(b_version=VERSION_B)) ])
def __init__(self, options, root_source_dir, **kwargs): self.__max_threads = kwargs.pop('max_threads', 100) self.__add_upstream = kwargs.pop('attach_upstream', False) check_kwargs_empty(kwargs) self.__options = options self.__git = GitRunner(options) self.__root_source_dir = root_source_dir
def __init__(self, factory, options, **kwargs): super(PushChangelogCommand, self).__init__(factory, options, **kwargs) check_options_set(options, ['build_changelog_gist_url', 'git_branch']) if not options.changelog_path: options.changelog_path = os.path.join( self.get_output_dir(command=BUILD_CHANGELOG_COMMAND), 'changelog.md') check_path_exists(options.changelog_path, why='changelog_path') self.__git = GitRunner(options)
def __init__(self, factory, options, **kwargs): super(PublishSpinnakerCommand, self).__init__(factory, options, **kwargs) check_options_set(options, [ 'spinnaker_version', 'bom_version', 'github_owner', 'min_halyard_version' ]) options_copy = copy.copy(options) self.__scm = BomSourceCodeManager(options_copy, self.get_input_dir()) self.__hal = HalRunner(options) self.__git = GitRunner(options) self.__hal.check_property('spinnaker.config.input.bucket', options.halyard_bom_bucket)
def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, 'commit_message_test') os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify( 'tag {base_version} HEAD'.format(base_version=VERSION_BASE)), gitify('checkout -b {patch_branch}'.format( patch_branch=cls.PATCH_BRANCH)), 'touch "{dir}/patch_file"'.format(dir=git_dir), gitify('add "{dir}/patch_file"'.format(dir=git_dir)), gitify('commit -a -m "fix(testA): added patch_file"'), gitify('checkout -b {minor_branch}'.format( minor_branch=cls.MINOR_BRANCH)), 'touch "{dir}/minor_file"'.format(dir=git_dir), gitify('add "{dir}/minor_file"'.format(dir=git_dir)), gitify('commit -a -m "chore(testB): added minor_file"'), gitify('checkout -b {major_branch}'.format( major_branch=cls.MAJOR_BRANCH)), 'touch "{dir}/major_file"'.format(dir=git_dir), gitify('add "{dir}/major_file"'.format(dir=git_dir)), gitify('commit -a -m' ' "feat(testC): added major_file\n' '\nInterestingly enough, this is a BREAKING CHANGE.' '"'), gitify('checkout -b {merged_branch}'.format( merged_branch=cls.MERGED_BRANCH)), gitify('reset --hard HEAD~3'), gitify('merge --squash HEAD@{1}') ]) env = dict(os.environ) if os.path.exists('/bin/true'): env['EDITOR'] = '/bin/true' elif os.path.exists('/usr/bin/true'): env['EDITOR'] = '/usr/bin/true' else: raise NotImplementedError('platform not supported for this test') check_subprocess('git -C "{dir}" commit'.format(dir=git_dir), env=env)
def __determine_repo_install_args(self, repository): """Determine --spinnaker_dev-github_[owner|user] args for install script.""" options = self.options branch = options.git_branch owner = ('spinnaker' if options.github_owner in ('default', 'upstream') else options.github_owner) git_dir = os.path.dirname(__file__) if not branch: branch = GitRunner(options).query_local_repository_branch(git_dir) if not owner: url = repository.origin match = re.search('github.com/([^/]+)/', url) if not match: raise_and_log_error( UnexpectedError('Cannot determine owner from url=%s' % url, cause='BadUrl')) owner = match.group(1) return [ '--spinnaker_dev_github_owner', owner, '--spinnaker_dev_github_branch', branch ]
def test_new_release_branch_command(self): defaults = { "input_dir": self.options.input_dir, "output_dir": self.options.output_dir, "only_repositories": EXTRA_REPO, "github_owner": "default", "git_branch": EXTRA_REPO + "-branch", "spinnaker_version": "NewSpinnakerVersion", "github_repository_root": self.options.github_repository_root, } registry = {} bomtool_main.add_standard_parser_args(self.parser, defaults) buildtool.spinnaker_commands.register_commands(registry, self.subparsers, defaults) factory = registry["new_release_branch"] factory.init_argparser(self.parser, defaults) options = self.parser.parse_args(["new_release_branch"]) mock_push_tag = self.patch_method(GitRunner, "push_tag_to_origin") mock_push_branch = self.patch_method(GitRunner, "push_branch_to_origin") command = factory.make_command(options) command() base_git_dir = os.path.join(options.input_dir, "new_release_branch") self.assertEqual(os.listdir(base_git_dir), [EXTRA_REPO]) git_dir = os.path.join(base_git_dir, EXTRA_REPO) self.assertEqual( GitRunner(options).query_local_repository_commit_id(git_dir), self.repo_commit_map[EXTRA_REPO][EXTRA_REPO + "-branch"], ) mock_push_branch.assert_called_once_with(git_dir, "NewSpinnakerVersion") self.assertEqual(0, mock_push_tag.call_count)
def test_new_release_branch_command(self): defaults = { 'input_dir': self.options.input_dir, 'output_dir': self.options.output_dir, 'only_repositories': EXTRA_REPO, 'github_owner': 'default', 'git_branch': EXTRA_REPO + '-branch', 'spinnaker_version': 'NewSpinnakerVersion', 'github_filesystem_root': self.options.github_filesystem_root, 'github_hostname': self.options.github_hostname } registry = {} bomtool_main.add_standard_parser_args(self.parser, defaults) buildtool.spinnaker_commands.register_commands(registry, self.subparsers, defaults) factory = registry['new_release_branch'] factory.init_argparser(self.parser, defaults) options = self.parser.parse_args(['new_release_branch']) mock_push_tag = self.patch_method(GitRunner, 'push_tag_to_origin') mock_push_branch = self.patch_method(GitRunner, 'push_branch_to_origin') command = factory.make_command(options) command() base_git_dir = os.path.join(options.input_dir, 'new_release_branch') self.assertEquals(os.listdir(base_git_dir), [EXTRA_REPO]) git_dir = os.path.join(base_git_dir, EXTRA_REPO) self.assertEquals( GitRunner(options).query_local_repository_commit_id(git_dir), self.repo_commit_map[EXTRA_REPO][EXTRA_REPO + '-branch']) mock_push_branch.assert_called_once_with(git_dir, 'NewSpinnakerVersion') self.assertEquals(0, mock_push_tag.call_count)
def __determine_repo_install_args(self, repository): """Determine --spinnaker_dev-github_[owner|user] args for install script.""" options = self.options branch = options.git_branch owner = ("spinnaker" if options.github_owner in ("default", "upstream") else options.github_owner) git_dir = os.path.dirname(__file__) if not branch: branch = GitRunner(options).query_local_repository_branch(git_dir) if not owner: url = repository.origin match = re.search("github.com/([^/]+)/", url) if not match: raise_and_log_error( UnexpectedError("Cannot determine owner from url=%s" % url, cause="BadUrl")) owner = match.group(1) return [ "--spinnaker_dev_github_owner", owner, "--spinnaker_dev_github_branch", branch, ]
def __init__(self, options, scm, metrics): self.__options = options self.__metrics = metrics self.__git = GitRunner(options) self.__scm = scm
def __init__(self, factory, options, **kwargs): super(InitiateReleaseBranchCommand, self).__init__(factory, options, **kwargs) check_options_set(options, ['spinnaker_version']) self.__git = GitRunner(options)