def _create_pipeline_build_object(name, description, repo_id, repo_name, repository_url, api_url, branch, service_endpoint, repository_type, yml_path, queue_id): definition = BuildDefinition() definition.name = name if description: definition.description = description # Set build repo definition.repository = BuildRepository() if repo_id: definition.repository.id = repo_id if repo_name: definition.repository.name = repo_name if repository_url: definition.repository.url = repository_url if branch: definition.repository.default_branch = branch if service_endpoint: definition.repository.properties = _create_repo_properties_object( service_endpoint, branch, api_url) # Hack to avoid the case sensitive GitHub type for service hooks. if repository_type.lower() == _GITHUB_REPO_TYPE: definition.repository.type = 'GitHub' else: definition.repository.type = repository_type # Set build process definition.process = _create_process_object(yml_path) # set agent queue definition.queue = AgentPoolQueue() definition.triggers = _get_pipelines_trigger(repository_type) if queue_id: definition.queue.id = queue_id return definition
def pipeline_update( name=None, id=None, description=None, new_name=None, # pylint: disable=redefined-builtin branch=None, yml_path=None, queue_id=None, organization=None, project=None, detect=None, new_folder_path=None): """ Update a pipeline :param name: Name of the pipeline to update. :type name: str :param id: Id of the pipeline to update. :type id: str :param new_name: New updated name of the pipeline. :type new_name: str :param description: New description for the pipeline. :type description: str :param branch: Branch name for which the pipeline will be configured. :type branch: str :param yml_path: Path of the pipelines yaml file in the repo. :type yml_path: str :param queue_id: Queue id of the agent pool where the pipeline needs to run. :type queue_id: int :param new_folder_path: New full path of the folder to move the pipeline to. e.g. "user1/production_pipelines" :type new_folder_path: str """ # pylint: disable=too-many-branches organization, project = resolve_instance_and_project( detect=detect, organization=organization, project=project) pipeline_client = get_new_pipeline_client(organization=organization) if id is None: if name is not None: id = get_definition_id_from_name(name, pipeline_client, project) else: raise CLIError( "Either --id or --name argument must be supplied for this command." ) definition = pipeline_client.get_definition(definition_id=id, project=project) if new_name: definition.name = new_name if description: definition.description = description if branch: definition.repository.default_branch = branch if queue_id: definition.queue = AgentPoolQueue() definition.queue.id = queue_id if yml_path: definition.process = _create_process_object(yml_path) if new_folder_path: definition.path = new_folder_path return pipeline_client.update_definition(project=project, definition_id=id, definition=definition)