build_ids = builder.build_with_koji(build_tag_prefix=koji_prefix,
                                        srpm_dir=TITO_DIR, scratch=True)
    builder.wait_for_completion(build_ids)

    if release_build:
        print "Performing koji release build"
        # Clean out the tito dir first
        builder.ensure_dir(TITO_DIR)
        spec_dir_set = set()
        for spec, dist in build_list:
            spec_dir = os.path.dirname(spec)
            if spec_dir not in spec_dir_set:
                tag_name = builder.get_package_nvr_from_spec(spec)
                # Don't tag this again if the tag already exists
                if not builder.does_git_tag_exist(
                        builder.get_package_nvr_from_spec(spec), spec_dir):
                    spec_dir_set.add(spec_dir)
                    # make sure we are clean to merge forward before tagging
                    print "validating merge forward for %s" % spec_dir
                    git_branch = promote.get_current_git_upstream_branch(spec_dir)
                    promotion_chain = promote.get_promotion_chain(spec_dir, git_branch)
                    promote.check_merge_forward(spec_dir, promotion_chain)
                    # Tito tag the new releases
                    command = ['tito', 'tag', '--keep-version', '--no-auto-changelog']
                    subprocess.check_call(command, cwd=spec_dir)
            builder.build_srpm_from_spec(spec_dir, TITO_DIR, testing=False, dist=dist)

        build_ids = builder.build_with_koji(build_tag_prefix=koji_prefix,
                                            srpm_dir=TITO_DIR, scratch=False)
        builder.wait_for_completion(build_ids)
        for spec_dir in spec_dir_set:
component_list = []
spec_project_map = {}

print "Getting git repos"
for component in get_components(configuration):
    print "Cloning from github: %s" % component.get('git_url')
    branch_name = component['git_branch']
    parent_branch = component.get('parent_branch', None)
    command = ['git', 'clone', component.get('git_url'), '--branch', branch_name]
    subprocess.call(command, cwd=working_dir)
    parent_branch = component.get('parent_branch', None)
    parent_branches['origin/%s' % branch_name] = parent_branch
    project_dir = os.path.join(working_dir, component['name'])

    # Check if this is a branch or a tag
    tag_exists = builder.does_git_tag_exist(branch_name, project_dir)
    component_list.append(component['name'])
    merge_forward[component['name']] = False
    if not tag_exists:
        merge_forward[component['name']] = True
        # Check if everything is merged forward
        print "Checking that everything is merged forward."
        git_branch = promote.get_current_git_upstream_branch(project_dir)
        promotion_chain = promote.get_promotion_chain(project_dir, git_branch, parent_branch=parent_branch)
        promote.check_merge_forward(project_dir, promotion_chain)

    # Update the version if one is specified in the config
    if 'version' in component:
        command = ['./update-version.py', '--version', component['version'], project_dir]
        subprocess.call(command, cwd=CI_DIR)
        command = ['git', 'commit', '-a', '-m', 'Bumping version to %s' % component['version']]
Beispiel #3
0
el6_supported = None

print("Getting git repos")
for component in builder.components(configuration):
    project_dir = builder.clone_branch(component)
    branch_name = component['git_branch']
    parent_branch = component.get('parent_branch', None)
    parent_branches['origin/%s' % branch_name] = parent_branch

    if component['name'] == 'pulp':
        platform_version = parse_version(
            promote.to_python_version(component['version']))
        el6_supported = platform_version <= parse_version('2.11')

    # Check if this is a branch or a tag
    tag_exists = builder.does_git_tag_exist(branch_name, project_dir)
    component_list.append(component['name'])
    merge_forward[component['name']] = False
    if not tag_exists:
        merge_forward[component['name']] = True
        # Check if everything is merged forward
        print("Checking that everything is merged forward.")
        git_branch = promote.get_current_git_upstream_branch(project_dir)
        promotion_chain = promote.get_promotion_chain(
            project_dir, git_branch, parent_branch=parent_branch)
        promote.check_merge_forward(project_dir, promotion_chain)

    # Modify the pulp spec for 2.12+ to build unsupported packages when requested
    # We do this here so that nightly builds can still test all packages on el6, but releases
    # only contain supported packages. Matching on > 2.11 instead of >= 2.12 since 2.12a1 is less
    # than 2.12.0.