Esempio n. 1
0
    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())
Esempio n. 2
0
 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)
Esempio n. 3
0
    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))
        ])
Esempio n. 4
0
  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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
 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
     ]
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
 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,
     ]
Esempio n. 12
0
 def __init__(self, options, scm, metrics):
   self.__options = options
   self.__metrics = metrics
   self.__git = GitRunner(options)
   self.__scm = scm
Esempio n. 13
0
 def __init__(self, factory, options, **kwargs):
     super(InitiateReleaseBranchCommand,
           self).__init__(factory, options, **kwargs)
     check_options_set(options, ['spinnaker_version'])
     self.__git = GitRunner(options)