def _get_doc_metadata_job_config( config, config_url, rosdistro_name, doc_build_name, build_file): template_name = 'doc/doc_metadata_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(config=config) job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s_%s' % ( rosdistro_name, 'doc', doc_build_name))), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'rosdistro_name': rosdistro_name, 'doc_build_name': doc_build_name, 'repository_args': repository_args, 'notify_emails': build_file.notify_emails, 'timeout_minutes': build_file.jenkins_job_timeout, 'credential_id': build_file.upload_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_doc_independent_job_config(config, config_url, doc_build_name, build_file): template_name = 'doc/doc_independent_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(config=config) job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label(build_file.jenkins_job_label), 'ros_buildfarm_repository': get_repository(), 'doc_repositories': build_file.doc_repositories, 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'doc_build_name': doc_build_name, 'repository_args': repository_args, 'upload_user': build_file.upload_user, 'upload_host': build_file.upload_host, 'upload_root': build_file.upload_root, 'notify_emails': build_file.notify_emails, 'timeout_minutes': build_file.jenkins_job_timeout, 'credential_id': build_file.upload_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_doc_independent_job_config( config, config_url, doc_build_name, build_file): template_name = 'doc/doc_independent_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(config=config) job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label(build_file.jenkins_job_label), 'ros_buildfarm_repository': get_repository(), 'doc_repositories': build_file.doc_repositories, 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'doc_build_name': doc_build_name, 'repository_args': repository_args, 'upload_user': build_file.upload_user, 'upload_host': build_file.upload_host, 'upload_root': build_file.upload_root, 'notify_emails': build_file.notify_emails, 'timeout_minutes': build_file.jenkins_job_timeout, 'credential_id': build_file.upload_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_doc_independent_job_config( config, config_url, doc_build_name, build_file): repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(config=config) job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label(build_file.jenkins_job_label), 'ros_buildfarm_repository': get_repository(), 'doc_repositories': build_file.doc_repositories, 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'doc_build_name': doc_build_name, 'repository_args': repository_args, 'notify_emails': build_file.notify_emails, 'timeout_minutes': build_file.jenkins_job_timeout, } if build_file.documentation_type == 'make_target': template_name = 'doc/doc_independent_job.xml.em' job_data.update({ 'install_apt_packages': build_file.install_apt_packages, 'install_pip_packages': build_file.install_pip_packages, 'upload_user': build_file.upload_user, 'upload_host': build_file.upload_host, 'upload_root': build_file.upload_root, 'credential_id': build_file.upload_credential_id }) elif build_file.documentation_type == 'docker_build': template_name = 'doc/doc_independent_docker_job.xml.em' job_data.update({ 'upload_repository_url': build_file.upload_repository_url, 'upload_repository_branch': build_file.upload_repository_branch, 'upload_credential_id': build_file.upload_credential_id, }) else: raise JobValidationError( 'Not independent documentation_type: ' + build_file.documentation_type ) job_config = expand_template(template_name, job_data) return job_config
def _get_devel_job_config(config, rosdistro_name, source_build_name, build_file, os_name, os_code_name, arch, source_repo_spec, repo_name, pull_request, job_name, dist_cache=None, is_disabled=False): template_name = 'devel/devel_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) build_environment_variables = [] if build_file.build_environment_variables: build_environment_variables = [ '%s=%s' % (var, value) for var, value in build_file.build_environment_variables.items() ] maintainer_emails = set([]) if build_file.notify_maintainers and dist_cache and repo_name and \ repo_name in dist_cache.distribution_file.repositories: # add maintainers listed in latest release to recipients repo = dist_cache.distribution_file.repositories[repo_name] if repo.release_repository: for pkg_name in repo.release_repository.package_names: if pkg_name not in dist_cache.release_package_xmls: continue pkg_xml = dist_cache.release_package_xmls[pkg_name] pkg = parse_package_string(pkg_xml) for m in pkg.maintainers: maintainer_emails.add(m.email) job_priority = \ build_file.jenkins_commit_job_priority \ if not pull_request \ else build_file.jenkins_pull_request_job_priority job_data = { 'github_url': get_github_project_url(source_repo_spec.url), 'job_priority': job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label( '%s_%s_%s' % (rosdistro_name, 'devel', source_build_name))), 'pull_request': pull_request, 'source_repo_spec': source_repo_spec, 'disabled': is_disabled, # this should not be necessary 'job_name': job_name, 'github_orgunit': git_github_orgunit(source_repo_spec.url), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'source_build_name': source_build_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'build_environment_variables': build_environment_variables, 'notify_compiler_warnings': build_file.notify_compiler_warnings, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'notify_committers': build_file.notify_committers, 'notify_pull_requests': build_file.notify_pull_requests, 'timeout_minutes': build_file.jenkins_job_timeout, 'git_ssh_credential_id': config.git_ssh_credential_id, 'collate_test_stats': build_file.collate_test_stats, } job_config = expand_template(template_name, job_data) return job_config
def _get_binarydeb_job_config(config_url, rosdistro_name, release_build_name, config, build_file, os_name, os_code_name, arch, pkg_name, repo_name, release_repository, dist_cache=None, upstream_job_names=None, is_disabled=False): template_name = 'release/binarydeb_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) repository_args.append('--target-repository ' + build_file.target_repository) binarydeb_files = [ 'binarydeb/*.changes', 'binarydeb/*.deb', ] sync_to_testing_job_name = [ get_sync_packages_to_testing_job_name(rosdistro_name, os_code_name, arch) ] maintainer_emails = _get_maintainer_emails(dist_cache, pkg_name) \ if build_file.notify_maintainers \ else set([]) job_data = { 'github_url': get_github_project_url(release_repository.url), 'job_priority': build_file.jenkins_binary_job_priority, 'node_label': get_node_label( build_file.jenkins_binary_job_label, get_default_node_label( '%s_%s_%s' % (rosdistro_name, 'binarydeb', release_build_name))), 'disabled': is_disabled, 'upstream_projects': upstream_job_names, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'release_build_name': release_build_name, 'pkg_name': pkg_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'append_timestamp': build_file.abi_incompatibility_assumed, 'binarydeb_files': binarydeb_files, 'import_package_job_name': get_import_package_job_name(rosdistro_name), 'debian_package_name': get_debian_package_name(rosdistro_name, pkg_name), 'child_projects': sync_to_testing_job_name, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'timeout_minutes': build_file.jenkins_binary_job_timeout, 'credential_id': build_file.upload_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_sourcedeb_job_config(config_url, rosdistro_name, release_build_name, config, build_file, os_name, os_code_name, pkg_name, repo_name, release_repository, dist_cache=None, is_disabled=False, other_build_files_same_platform=None): template_name = 'release/sourcedeb_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) sourcedeb_files = [ 'sourcedeb/*.debian.tar.gz', 'sourcedeb/*.debian.tar.xz', 'sourcedeb/*.dsc', 'sourcedeb/*.orig.tar.gz', 'sourcedeb/*_source.buildinfo', 'sourcedeb/*_source.changes', ] # collect notify emails from all build files with the job enabled notify_emails = set(build_file.notify_emails) if other_build_files_same_platform: for other_build_file in other_build_files_same_platform: if other_build_file.filter_packages([pkg_name]): notify_emails.update(other_build_file.notify_emails) # notify maintainers if any build file (with the job enabled) requests it notify_maintainers = build_file.notify_maintainers if other_build_files_same_platform: for other_build_file in other_build_files_same_platform: if other_build_file.filter_packages([pkg_name]): if other_build_file.notify_maintainers: notify_maintainers = True maintainer_emails = _get_maintainer_emails(dist_cache, pkg_name) \ if notify_maintainers \ else set([]) job_data = { 'github_url': get_github_project_url(release_repository.url), 'job_priority': build_file.jenkins_source_job_priority, 'node_label': get_node_label( build_file.jenkins_source_job_label, get_default_node_label('%s_%s' % (rosdistro_name, 'sourcedeb'))), 'disabled': is_disabled, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'release_build_name': release_build_name, 'pkg_name': pkg_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': get_system_architecture(), 'repository_args': repository_args, 'sourcedeb_files': sourcedeb_files, 'import_package_job_name': get_import_package_job_name(rosdistro_name), 'debian_package_name': get_debian_package_name(rosdistro_name, pkg_name), 'notify_emails': notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': notify_maintainers, 'timeout_minutes': build_file.jenkins_source_job_timeout, 'credential_id': build_file.upload_credential_id, 'git_ssh_credential_id': config.git_ssh_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_ci_job_config(index, rosdistro_name, build_file, os_name, os_code_name, arch, repos_files, repository_names, underlay_source_jobs, underlay_source_paths, trigger_timer, trigger_jobs, is_disabled=False): template_name = 'ci/ci_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) build_environment_variables = [] if build_file.build_environment_variables: build_environment_variables = [ '%s=%s' % (var, value) for var, value in sorted( build_file.build_environment_variables.items()) ] distribution_type = index.distributions[rosdistro_name] \ .get('distribution_type', 'ros1') assert distribution_type in ('ros1', 'ros2') ros_version = 1 if distribution_type == 'ros1' else 2 for index in range(len(underlay_source_jobs)): assert '$UNDERLAY%d_JOB_SPACE' % (index + 1) in underlay_source_paths job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s' % (rosdistro_name, 'ci'))), 'disabled': is_disabled, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_name': rosdistro_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'build_tool': build_file.build_tool, 'ros_version': ros_version, 'build_environment_variables': build_environment_variables, 'timeout_minutes': build_file.jenkins_job_timeout, 'repos_file_urls': repos_files, 'repository_names': repository_names, 'skip_rosdep_keys': build_file.skip_rosdep_keys, 'install_packages': build_file.install_packages, 'package_selection_args': build_file.package_selection_args, 'build_tool_args': build_file.build_tool_args, 'test_branch': build_file.test_branch, 'underlay_source_jobs': underlay_source_jobs, 'underlay_source_paths': underlay_source_paths, 'trigger_timer': trigger_timer, 'trigger_jobs': trigger_jobs, 'archive_files': build_file.archive_files, 'show_images': build_file.show_images, 'show_plots': build_file.show_plots, # Allow per-job authorization for CI builds. 'project_authorization_xml': build_file.project_authorization_xml, # only Ubuntu Focal has a new enough pytest version which generates # JUnit compliant result files 'xunit_publisher_types': get_xunit_publisher_types_and_patterns(), } job_config = expand_template(template_name, job_data) return job_config
def _get_doc_job_config(config, config_url, rosdistro_name, doc_build_name, build_file, os_name, os_code_name, arch, doc_repo_spec, repo_name, dist_cache=None, is_disabled=False): template_name = 'doc/doc_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) maintainer_emails = set([]) if build_file.notify_maintainers and dist_cache and repo_name and \ repo_name in dist_cache.distribution_file.repositories: # add maintainers listed in latest release to recipients repo = dist_cache.distribution_file.repositories[repo_name] if repo.release_repository: for pkg_name in repo.release_repository.package_names: if pkg_name not in dist_cache.release_package_xmls: continue pkg_xml = dist_cache.release_package_xmls[pkg_name] pkg = parse_package_string(pkg_xml) for m in pkg.maintainers: maintainer_emails.add(m.email) job_data = { 'github_url': get_github_project_url(doc_repo_spec.url), 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s_%s' % (rosdistro_name, 'doc', doc_build_name))), 'doc_repo_spec': doc_repo_spec, 'disabled': is_disabled, 'github_orgunit': git_github_orgunit(doc_repo_spec.url), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'doc_build_name': doc_build_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'upload_user': build_file.upload_user, 'upload_host': build_file.upload_host, 'upload_root': build_file.upload_root, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'notify_committers': build_file.notify_committers, 'timeout_minutes': build_file.jenkins_job_timeout, 'credential_id': build_file.upload_credential_id, 'git_ssh_credential_id': config.git_ssh_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_doc_job_config( config, config_url, rosdistro_name, doc_build_name, build_file, os_name, os_code_name, arch, doc_repo_spec, repo_name, dist_cache=None, is_disabled=False): template_name = 'doc/doc_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) maintainer_emails = set([]) if build_file.notify_maintainers and dist_cache and repo_name and \ repo_name in dist_cache.distribution_file.repositories: # add maintainers listed in latest release to recipients repo = dist_cache.distribution_file.repositories[repo_name] if repo.release_repository: for pkg_name in repo.release_repository.package_names: if pkg_name not in dist_cache.release_package_xmls: continue pkg_xml = dist_cache.release_package_xmls[pkg_name] pkg = parse_package_string(pkg_xml) for m in pkg.maintainers: maintainer_emails.add(m.email) job_data = { 'github_url': get_github_project_url(doc_repo_spec.url), 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s_%s' % ( rosdistro_name, 'doc', doc_build_name))), 'doc_repo_spec': doc_repo_spec, 'disabled': is_disabled, 'github_orgunit': git_github_orgunit(doc_repo_spec.url), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'config_url': config_url, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'doc_build_name': doc_build_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'build_tool': build_file.build_tool, 'repository_args': repository_args, 'upload_user': build_file.upload_user, 'upload_host': build_file.upload_host, 'upload_root': build_file.upload_root, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'notify_committers': build_file.notify_committers, 'timeout_minutes': build_file.jenkins_job_timeout, 'credential_id': build_file.upload_credential_id, 'git_ssh_credential_id': config.git_ssh_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_devel_job_config( index, config, rosdistro_name, source_build_name, build_file, os_name, os_code_name, arch, source_repo_spec, repo_name, pull_request, job_name, dist_cache=None, is_disabled=False): template_name = 'devel/devel_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) build_environment_variables = [] if build_file.build_environment_variables: build_environment_variables = [ '%s=%s' % (var, value) for var, value in build_file.build_environment_variables.items()] maintainer_emails = set([]) if build_file.notify_maintainers and dist_cache and repo_name and \ repo_name in dist_cache.distribution_file.repositories: # add maintainers listed in latest release to recipients repo = dist_cache.distribution_file.repositories[repo_name] if repo.release_repository: for pkg_name in repo.release_repository.package_names: if pkg_name not in dist_cache.release_package_xmls: continue pkg_xml = dist_cache.release_package_xmls[pkg_name] pkg = parse_package_string(pkg_xml) for m in pkg.maintainers: maintainer_emails.add(m.email) job_priority = \ build_file.jenkins_commit_job_priority \ if not pull_request \ else build_file.jenkins_pull_request_job_priority distribution_type = index.distributions[rosdistro_name] \ .get('distribution_type', 'ros1') assert distribution_type in ('ros1', 'ros2') ros_version = 1 if distribution_type == 'ros1' else 2 job_data = { 'github_url': get_github_project_url(source_repo_spec.url), 'job_priority': job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s_%s' % ( rosdistro_name, 'devel', source_build_name))), 'pull_request': pull_request, 'source_repo_spec': source_repo_spec, 'disabled': is_disabled, # this should not be necessary 'job_name': job_name, 'github_orgunit': git_github_orgunit(source_repo_spec.url), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'source_build_name': source_build_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'build_tool': build_file.build_tool, 'ros_version': ros_version, 'build_environment_variables': build_environment_variables, 'notify_compiler_warnings': build_file.notify_compiler_warnings, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'notify_committers': build_file.notify_committers, 'notify_pull_requests': build_file.notify_pull_requests, 'timeout_minutes': build_file.jenkins_job_timeout, 'git_ssh_credential_id': config.git_ssh_credential_id, 'collate_test_stats': build_file.collate_test_stats, } job_config = expand_template(template_name, job_data) return job_config
def _get_devel_job_config( index, config, rosdistro_name, source_build_name, build_file, os_name, os_code_name, arch, source_repo_spec, repo_name, pull_request, job_name, dist_cache=None, is_disabled=False, run_abichecker=None, require_gpu_support=None): template_name = 'devel/devel_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) build_environment_variables = [] if build_file.build_environment_variables: build_environment_variables = [ '%s=%s' % (var, value) for var, value in sorted(build_file.build_environment_variables.items())] maintainer_emails = set([]) if build_file.notify_maintainers and dist_cache and repo_name and \ repo_name in dist_cache.distribution_file.repositories: # add maintainers listed in latest release to recipients repo = dist_cache.distribution_file.repositories[repo_name] if repo.release_repository: for pkg_name in repo.release_repository.package_names: if pkg_name not in dist_cache.release_package_xmls: continue pkg_xml = dist_cache.release_package_xmls[pkg_name] pkg = parse_package_string(pkg_xml) for m in pkg.maintainers: maintainer_emails.add(m.email) job_priority = \ build_file.jenkins_commit_job_priority \ if not pull_request \ else build_file.jenkins_pull_request_job_priority distribution_type = index.distributions[rosdistro_name] \ .get('distribution_type', 'ros1') assert distribution_type in ('ros1', 'ros2') ros_version = 1 if distribution_type == 'ros1' else 2 job_data = { 'github_url': get_github_project_url(source_repo_spec.url), 'job_priority': job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s_%s' % ( rosdistro_name, 'devel', source_build_name))), 'pull_request': pull_request, 'source_repo_spec': source_repo_spec, 'disabled': is_disabled, # this should not be necessary 'job_name': job_name, 'github_orgunit': git_github_orgunit(source_repo_spec.url), 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'source_build_name': source_build_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'build_tool': build_file.build_tool, 'ros_version': ros_version, 'build_environment_variables': build_environment_variables, 'run_abichecker': run_abichecker, 'require_gpu_support': require_gpu_support, 'notify_compiler_warnings': build_file.notify_compiler_warnings, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'notify_committers': build_file.notify_committers, 'notify_pull_requests': build_file.notify_pull_requests, 'timeout_minutes': build_file.jenkins_job_timeout, # only Ubuntu Focal has a new enough pytest version which generates # JUnit compliant result files 'xunit_publisher_types': get_xunit_publisher_types_and_patterns(), 'git_ssh_credential_id': config.git_ssh_credential_id, 'collate_test_stats': build_file.collate_test_stats, } job_config = expand_template(template_name, job_data) return job_config
def _get_binarydeb_job_config( config_url, rosdistro_name, release_build_name, config, build_file, os_name, os_code_name, arch, pkg_name, repo_name, release_repository, dist_cache=None, upstream_job_names=None, is_disabled=False): template_name = 'release/binarydeb_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) repository_args.append( '--target-repository ' + build_file.target_repository) binarydeb_files = [ 'binarydeb/*.changes', 'binarydeb/*.deb', ] sync_to_testing_job_name = [get_sync_packages_to_testing_job_name( rosdistro_name, os_code_name, arch)] maintainer_emails = _get_maintainer_emails(dist_cache, pkg_name) \ if build_file.notify_maintainers \ else set([]) job_data = { 'github_url': get_github_project_url(release_repository.url), 'job_priority': build_file.jenkins_binary_job_priority, 'node_label': get_node_label( build_file.jenkins_binary_job_label, get_default_node_label('%s_%s_%s' % ( rosdistro_name, 'binarydeb', release_build_name))), 'disabled': is_disabled, 'upstream_projects': upstream_job_names, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'release_build_name': release_build_name, 'pkg_name': pkg_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'append_timestamp': build_file.abi_incompatibility_assumed, 'binarydeb_files': binarydeb_files, 'import_package_job_name': get_import_package_job_name(rosdistro_name), 'debian_package_name': get_debian_package_name( rosdistro_name, pkg_name), 'child_projects': sync_to_testing_job_name, 'notify_emails': build_file.notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': build_file.notify_maintainers, 'timeout_minutes': build_file.jenkins_binary_job_timeout, 'credential_id': build_file.upload_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_sourcedeb_job_config( config_url, rosdistro_name, release_build_name, config, build_file, os_name, os_code_name, pkg_name, repo_name, release_repository, dist_cache=None, is_disabled=False, other_build_files_same_platform=None): template_name = 'release/sourcedeb_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) sourcedeb_files = [ 'sourcedeb/*.debian.tar.gz', 'sourcedeb/*.debian.tar.xz', 'sourcedeb/*.dsc', 'sourcedeb/*.orig.tar.gz', 'sourcedeb/*_source.buildinfo', 'sourcedeb/*_source.changes', ] # collect notify emails from all build files with the job enabled notify_emails = set(build_file.notify_emails) if other_build_files_same_platform: for other_build_file in other_build_files_same_platform: if other_build_file.filter_packages([pkg_name]): notify_emails.update(other_build_file.notify_emails) # notify maintainers if any build file (with the job enabled) requests it notify_maintainers = build_file.notify_maintainers if other_build_files_same_platform: for other_build_file in other_build_files_same_platform: if other_build_file.filter_packages([pkg_name]): if other_build_file.notify_maintainers: notify_maintainers = True maintainer_emails = _get_maintainer_emails(dist_cache, pkg_name) \ if notify_maintainers \ else set([]) job_data = { 'github_url': get_github_project_url(release_repository.url), 'job_priority': build_file.jenkins_source_job_priority, 'node_label': get_node_label( build_file.jenkins_source_job_label, get_default_node_label('%s_%s' % ( rosdistro_name, 'sourcedeb'))), 'disabled': is_disabled, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_index_url': config.rosdistro_index_url, 'rosdistro_name': rosdistro_name, 'release_build_name': release_build_name, 'pkg_name': pkg_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': get_system_architecture(), 'repository_args': repository_args, 'sourcedeb_files': sourcedeb_files, 'import_package_job_name': get_import_package_job_name(rosdistro_name), 'debian_package_name': get_debian_package_name( rosdistro_name, pkg_name), 'notify_emails': notify_emails, 'maintainer_emails': maintainer_emails, 'notify_maintainers': notify_maintainers, 'timeout_minutes': build_file.jenkins_source_job_timeout, 'credential_id': build_file.upload_credential_id, 'git_ssh_credential_id': config.git_ssh_credential_id, } job_config = expand_template(template_name, job_data) return job_config
def _get_ci_job_config(index, rosdistro_name, build_file, os_name, os_code_name, arch, repos_files, underlay_source_job, underlay_source_paths, trigger_timer, is_disabled=False): template_name = 'ci/ci_job.xml.em' repository_args, script_generating_key_files = \ get_repositories_and_script_generating_key_files(build_file=build_file) build_environment_variables = [] if build_file.build_environment_variables: build_environment_variables = [ '%s=%s' % (var, value) for var, value in build_file.build_environment_variables.items() ] distribution_type = index.distributions[rosdistro_name] \ .get('distribution_type', 'ros1') assert distribution_type in ('ros1', 'ros2') ros_version = 1 if distribution_type == 'ros1' else 2 if underlay_source_job is not None: assert '$UNDERLAY_JOB_SPACE' in underlay_source_paths job_data = { 'job_priority': build_file.jenkins_job_priority, 'node_label': get_node_label( build_file.jenkins_job_label, get_default_node_label('%s_%s' % (rosdistro_name, 'ci'))), 'disabled': is_disabled, 'ros_buildfarm_repository': get_repository(), 'script_generating_key_files': script_generating_key_files, 'rosdistro_name': rosdistro_name, 'os_name': os_name, 'os_code_name': os_code_name, 'arch': arch, 'repository_args': repository_args, 'build_tool': build_file.build_tool, 'ros_version': ros_version, 'build_environment_variables': build_environment_variables, 'timeout_minutes': build_file.jenkins_job_timeout, 'repos_file_urls': repos_files, 'skip_rosdep_keys': build_file.skip_rosdep_keys, 'install_packages': build_file.install_packages, 'package_selection_args': build_file.package_selection_args, 'build_tool_args': build_file.build_tool_args, 'test_branch': build_file.test_branch, 'underlay_source_job': underlay_source_job, 'underlay_source_paths': underlay_source_paths, 'trigger_timer': trigger_timer, } job_config = expand_template(template_name, job_data) return job_config