示例#1
0
def images():
    """Lists all known ci images in this format: IMAGEGROUP/ci-IMAGE:VERSION
    """
    for group, images in constants.GROUPS[constants.ImageType.IMAGE].items():
        for image in images:
            image_name = utils.get_image_name(constants.ImageType.IMAGE, image)
            for version in constants.VERSIONS[constants.ImageType.IMAGE][image]:
                click.echo(f"{group}/{image_name}:{version}")
示例#2
0
def packages():
    """Lists all known ci packages in this format: PACKAGEGROUP/ci-package-PACKAGE:VERSION
    """
    for group, packages in constants.GROUPS[constants.ImageType.PACKAGE].items():
        for package in packages:
            image_name = utils.get_image_name(constants.ImageType.PACKAGE, package)
            for version in constants.VERSIONS[constants.ImageType.PACKAGE][package]:
                click.echo(f"{group}/{image_name}:{version}")
示例#3
0
    def make_bake_dict(self) -> dict:
        targets = {}
        for img in self.group_info.images:
            if self.group_info.target and img != self.group_info.target:
                logger.debug("Skipping target %s", img)
                continue

            image_name = utils.get_image_name(self.group_info.type, img)
            if self.group_info.type == constants.ImageType.PACKAGE:
                docker_file = "packages/Dockerfile"
                target = f"ci-{img}-package"
                target_name = f"package-{img}"
            else:
                docker_file = f"{image_name}/Dockerfile"
                target = ""
                target_name = f"image-{img}"

            all_versions = constants.VERSIONS[self.group_info.type][img]
            major_versions = [utils.get_major_version(v) for v in all_versions]
            for version in [
                    version for version in self.group_info.versions
                    if version in major_versions
            ]:
                version_info = constants.VERSION_INFO[version]
                aswf_version = all_versions[major_versions.index(version)]
                tags = version_info.get_tags(aswf_version,
                                             self.build_info.docker_org,
                                             image_name)
                target_dict = {
                    "context":
                    ".",
                    "dockerfile":
                    docker_file,
                    "args": {
                        "ASWF_ORG": self.build_info.docker_org,
                        "ASWF_PKG_ORG": self.build_info.package_org,
                        "ASWF_VERSION": aswf_version,
                        "CI_COMMON_VERSION": version_info.ci_common_version,
                        "PYTHON_VERSION": version_info.python_version,
                        "BUILD_DATE": self.build_info.build_date,
                        "VCS_REF": self.build_info.vcs_ref,
                        "VFXPLATFORM_VERSION": version,
                    },
                    "tags":
                    tags,
                    "output": [
                        "type=registry,push=true"
                        if self.push else "type=docker"
                    ],
                }
                if target:
                    target_dict["target"] = target
                targets[target_name] = target_dict

        root = {}
        root["target"] = targets
        root["group"] = {"default": {"targets": list(targets.keys())}}
        return root
示例#4
0
def images():
    """Lists all known CI images in this format: IMAGEGROUP/ci-IMAGE:VERSION
    """
    for group, images in index.Index().groups[
            constants.ImageType.IMAGE].items():
        for image in images:
            image_name = utils.get_image_name(constants.ImageType.IMAGE, image)
            for version in index.Index().iter_versions(
                    constants.ImageType.IMAGE, image):
                click.echo(f"{group}/{image_name}:{version}")
示例#5
0
 def iter_images_versions(self):
     for image in self.images:
         if self.targets and image not in self.targets:
             logger.debug("Skipping target %s", image)
             continue
         logger.debug("iter image=%s", image)
         ci_image = utils.get_image_name(self.type, image)
         all_versions = list(self.index.iter_versions(self.type, image))
         major_versions = [utils.get_major_version(v) for v in all_versions]
         for version in [v for v in self.versions if v in major_versions]:
             logger.debug("iter version=%s", version)
             version = all_versions[major_versions.index(version)]
             yield ci_image, version
示例#6
0
 def gather(self, package: str, version: str):
     for pkg in self.index.iter_images(constants.ImageType.PACKAGE):
         image = utils.get_image_name(constants.ImageType.PACKAGE, pkg)
         if not package or package == pkg:
             for v in self.index.iter_versions(constants.ImageType.PACKAGE, pkg):
                 major_version = v.split(".")[0]
                 if not version or version == major_version:
                     self.migration_list.append(
                         MigrateInfo(
                             image,
                             v,
                             f"{constants.DOCKER_REGISTRY}/{self.from_org}/{image}:{v}",
                             f"{constants.DOCKER_REGISTRY}/{self.to_org}/{image}:{v}",
                         )
                     )