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}")
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}")
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
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}")
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
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}", ) )