def _create_repos(self, pipeline_def: JobVariant, raw_dict): pipeline_def._repos_dict = {} if 'repo' in raw_dict: # special case: repo singleton (will vanish once we mv definitions into component-repos) repo_dict = raw_dict['repo'] name = 'source' if 'name' not in repo_dict else repo_dict['name'] pipeline_def._repos_dict[name] = RepositoryConfig( raw_dict=repo_dict, logical_name=name, qualifier=None, is_main_repo=True) pipeline_def._main_repository_name = name if 'repos' in raw_dict: for repo_dict in raw_dict['repos']: if not 'cfg_name' in repo_dict: github_cfg = self.cfg_set.github() else: github_cfg = self.cfg_set.github(repo_dict['cfg_name']) hostname = github_cfg.hostname() repo_dict['hostname'] = hostname pipeline_def._repos_dict.update({ repo_dict['name']: RepositoryConfig(logical_name=repo_dict['name'], raw_dict=repo_dict, is_main_repo=False) })
def pr_repository(self, name): pr_repo = self.repository(name) return RepositoryConfig( raw_dict=dict(pr_repo.raw), logical_name=name, qualifier='pr', is_pull_request=True )
def setUp(self): self.tmp_dir = tempfile.TemporaryDirectory() self.meta_dir = os.path.join(self.tmp_dir.name, 'meta') os.mkdir(self.meta_dir) test_utils.populate_meta_dir(self.meta_dir) self.on_error_dir = os.path.join(self.tmp_dir.name, 'on_error_dir') os.mkdir(self.on_error_dir) self.job_step = PipelineStep( name='step1', is_synthetic=False, notification_policy=StepNotificationPolicy.NOTIFY_PULL_REQUESTS, script_type=ScriptType.BOURNE_SHELL, raw_dict={}, ) self.job_step._notifications_cfg = NotificationCfgSet('default', {}) resource_registry = ResourceRegistry() meta_resource_identifier = ResourceIdentifier(type_name='meta', base_name='a_job') meta_resource = Resource(resource_identifier=meta_resource_identifier, raw_dict={}) resource_registry.add_resource(meta_resource) self.job_variant = JobVariant(name='a_job', raw_dict={}, resource_registry=resource_registry) # Set a main repository manually test_repo_logical_name = 'test-repository' self.job_variant._repos_dict = {} self.job_variant._repos_dict[ test_repo_logical_name] = RepositoryConfig( raw_dict={ 'branch': 'master', 'hostname': 'github.foo.bar', 'path': 'test/repo' }, logical_name=test_repo_logical_name, qualifier=None, is_main_repo=True) self.job_variant._main_repository_name = test_repo_logical_name self.job_variant._traits_dict = {} self.cfg_set = MagicMock() self.github_cfg = MagicMock() self.github_cfg.name = MagicMock(return_value='github_cfg') self.email_cfg = MagicMock() self.email_cfg.name = MagicMock(return_value='email_cfg') self.cfg_set.github = MagicMock(return_value=self.github_cfg) self.cfg_set.email = MagicMock(return_value=self.email_cfg) ctx_repo_mock = MagicMock(return_value='repo_url') ctx_repo_mock.base_url = MagicMock(return_value='repo_url') self.cfg_set.ctx_repository = MagicMock(return_value=ctx_repo_mock) self.render_step = step_def('notification') self.old_cwd = os.getcwd() os.chdir(self.tmp_dir.name)
def _create_repos(self, pipeline_def, raw_dict): pipeline_def._repos_dict = {} if 'repo' in raw_dict: # special case: repo singleton (will vanish once we mv definitions into component-repos) repo_dict = raw_dict['repo'] name = 'source' if 'name' not in repo_dict else repo_dict['name'] pipeline_def._repos_dict[name] = RepositoryConfig( raw_dict=repo_dict, logical_name=name, qualifier=None, is_main_repo=True) pipeline_def._main_repository_name = name if 'repos' in raw_dict: pipeline_def._repos_dict.update({ cfg_dict['name']: RepositoryConfig(logical_name=cfg_dict['name'], raw_dict=cfg_dict, is_main_repo=False) for cfg_dict in raw_dict['repos'] })
def _repo_cfg( path='organisation/reponame', branch='master', include_paths=['path/to/include'], exclude_paths=['path/to/exclude'], ): return RepositoryConfig(raw_dict={ 'path': path, 'branch': branch, 'trigger_paths': { 'include': include_paths, 'exclude': exclude_paths, } })
def _inject_publish_repos(self, pipeline_def): # synthesise "put-repositories" pipeline_def._publish_repos_dict = {} for step in filter(lambda step: step.publish_repository_names(), pipeline_def.steps()): for repo_name in step.publish_repository_names(): # we need to clone the existing repository configuration source_repo = pipeline_def._repos_dict[repo_name] publish_repo = RepositoryConfig( raw_dict=dict(source_repo.raw), logical_name=repo_name, qualifier='output', is_main_repo=source_repo.is_main_repo(), ) pipeline_def._publish_repos_dict[repo_name] = publish_repo