Esempio n. 1
0
def scan_and_import(buildinfo, rpminfo, tmpdir):
    global config
    path_patterns = config.get('patterns', 'artifact_paths').split()

    maven_archives = []
    for dirpath, dirnames, filenames in os.walk(tmpdir):
        relpath = dirpath[len(tmpdir):]
        for pattern in path_patterns:
            if fnmatch.fnmatch(relpath, pattern):
                break
        else:
            continue

        poms = [f for f in filenames if f.endswith('.pom')]
        if len(poms) != 1:
            continue

        pom_info = koji.parse_pom(os.path.join(dirpath, poms[0]))
        maven_info = koji.pom_to_maven_info(pom_info)
        maven_archives.append({
            'maven_info':
            maven_info,
            'files': [os.path.join(dirpath, f) for f in filenames]
        })

    if not maven_archives:
        return

    # We don't know which pom is the top-level pom, so we don't know what Maven
    # metadata to associate with the build.  So we make something up.
    maven_build = {
        'group_id': buildinfo['name'],
        'artifact_id': rpminfo['name'],
        'version': '%(version)s-%(release)s' % buildinfo
    }
    context.handlers.call('host.createMavenBuild', buildinfo, maven_build)

    for entry in maven_archives:
        maven_info = entry['maven_info']
        for filepath in entry['files']:
            if not context.handlers.call('getArchiveType', filename=filepath):
                # unsupported archive type, skip it
                continue
            context.handlers.call('host.importArchive', filepath, buildinfo,
                                  'maven', maven_info)
Esempio n. 2
0
def scan_and_import(buildinfo, rpminfo, tmpdir):
    global config
    path_patterns = config.get("patterns", "artifact_paths").split()

    maven_archives = []
    for dirpath, dirnames, filenames in os.walk(tmpdir):
        relpath = dirpath[len(tmpdir) :]
        for pattern in path_patterns:
            if fnmatch.fnmatch(relpath, pattern):
                break
        else:
            continue

        poms = [f for f in filenames if f.endswith(".pom")]
        if len(poms) != 1:
            continue

        pom_info = koji.parse_pom(os.path.join(dirpath, poms[0]))
        maven_info = koji.pom_to_maven_info(pom_info)
        maven_archives.append({"maven_info": maven_info, "files": [os.path.join(dirpath, f) for f in filenames]})

    if not maven_archives:
        return

    # We don't know which pom is the top-level pom, so we don't know what Maven
    # metadata to associate with the build.  So we make something up.
    maven_build = {
        "group_id": buildinfo["name"],
        "artifact_id": rpminfo["name"],
        "version": "%(version)s-%(release)s" % buildinfo,
    }
    context.handlers.call("host.createMavenBuild", buildinfo, maven_build)

    for entry in maven_archives:
        maven_info = entry["maven_info"]
        for filepath in entry["files"]:
            if not context.handlers.call("getArchiveType", filename=filepath):
                # unsupported archive type, skip it
                continue
            context.handlers.call("host.importArchive", filepath, buildinfo, "maven", maven_info)
Esempio n. 3
0
def scan_and_import(buildinfo, rpminfo, tmpdir):
    global config
    path_patterns = config.get('patterns', 'artifact_paths').split()

    maven_archives = []
    for dirpath, dirnames, filenames in os.walk(tmpdir):
        relpath = dirpath[len(tmpdir):]
        for pattern in path_patterns:
            if fnmatch.fnmatch(relpath, pattern):
                break
        else:
            continue

        poms = [f for f in filenames if f.endswith('.pom')]
        if len(poms) != 1:
            continue

        pom_info = koji.parse_pom(os.path.join(dirpath, poms[0]))
        maven_info = koji.pom_to_maven_info(pom_info)
        maven_archives.append({'maven_info': maven_info,
                               'files': [os.path.join(dirpath, f) for f in filenames]})

    if not maven_archives:
        return

    # We don't know which pom is the top-level pom, so we don't know what Maven
    # metadata to associate with the build.  So we make something up.
    maven_build = {'group_id': buildinfo['name'], 'artifact_id': rpminfo['name'],
                   'version': '%(version)s-%(release)s' % buildinfo}
    context.handlers.call('host.createMavenBuild', buildinfo, maven_build)

    for entry in maven_archives:
        maven_info = entry['maven_info']
        for filepath in entry['files']:
            if not context.handlers.call('getArchiveType', filename=filepath):
                # unsupported archive type, skip it
                continue
            context.handlers.call('host.importArchive', filepath, buildinfo, 'maven', maven_info)