add templating for tag and package name in info.yaml
This commit is contained in:
parent
0c09627b12
commit
d4f88412bf
33
build.py
33
build.py
@ -24,7 +24,8 @@ PKG_VERSION: str = ""
|
|||||||
class Image:
|
class Image:
|
||||||
canonical_name: str
|
canonical_name: str
|
||||||
is_versioned: bool | None
|
is_versioned: bool | None
|
||||||
source_packages_list: list[str] | None
|
verion_template: str | None
|
||||||
|
source_packages: list[str] | None
|
||||||
|
|
||||||
def __init__(self, canonical_name: str):
|
def __init__(self, canonical_name: str):
|
||||||
self.canonical_name = canonical_name
|
self.canonical_name = canonical_name
|
||||||
@ -34,7 +35,7 @@ class Image:
|
|||||||
info_file = self.path / "info.yaml"
|
info_file = self.path / "info.yaml"
|
||||||
if not info_file.exists():
|
if not info_file.exists():
|
||||||
self.is_versioned = None
|
self.is_versioned = None
|
||||||
self.source_packages_list = None
|
self.source_packages = None
|
||||||
return
|
return
|
||||||
|
|
||||||
info: dict = yaml.safe_load(info_file.read_text())
|
info: dict = yaml.safe_load(info_file.read_text())
|
||||||
@ -44,19 +45,23 @@ class Image:
|
|||||||
f"info.yaml for {self.canonical_name} doesn't contain 'is_versioned' key"
|
f"info.yaml for {self.canonical_name} doesn't contain 'is_versioned' key"
|
||||||
)
|
)
|
||||||
|
|
||||||
if "source_packages_list" not in info:
|
if "source_packages" not in info:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f"info.yaml for {self.canonical_name} doesn't contain 'source_packages_list' key"
|
f"info.yaml for {self.canonical_name} doesn't contain 'source_packages' key"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.is_versioned = info["is_versioned"]
|
self.is_versioned = info["is_versioned"]
|
||||||
self.source_packages_list = info["source_packages_list"]
|
self.source_packages = info["source_packages"]
|
||||||
|
|
||||||
if self.is_versioned and not self.source_packages_list:
|
if self.is_versioned and not self.source_packages:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f"source_packages_list for {self.canonical_name} doesn't contain any values"
|
f"source_packages for {self.canonical_name} doesn't contain any values"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.version_template = None
|
||||||
|
if "version_template" in info:
|
||||||
|
self.version_template = info["version_template"]
|
||||||
|
|
||||||
|
|
||||||
class Tasks:
|
class Tasks:
|
||||||
def __init__(self, tasks):
|
def __init__(self, tasks):
|
||||||
@ -87,7 +92,7 @@ def api_get_source_package_version(branch: str, package_name: str) -> str:
|
|||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
print(response)
|
print(response)
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f"failed to retrieve package version: package {package_name!r}, branch {branch!r} "
|
f"failed to retrieve source package version: source package {package_name!r}, branch {branch!r} "
|
||||||
)
|
)
|
||||||
|
|
||||||
result = response.json()
|
result = response.json()
|
||||||
@ -105,12 +110,16 @@ class Tags:
|
|||||||
|
|
||||||
def tags(self, branch: str, image: Image):
|
def tags(self, branch: str, image: Image):
|
||||||
if self._tags is None:
|
if self._tags is None:
|
||||||
if image.is_versioned and image.source_packages_list:
|
if image.is_versioned and image.source_packages:
|
||||||
package_name = image.source_packages_list[0]
|
package_name = image.source_packages[0]
|
||||||
if "{version}" in package_name:
|
if mat := re.search("{{.*}}", package_name):
|
||||||
assert PKG_VERSION is not None
|
assert PKG_VERSION is not None
|
||||||
package_name = package_name.format(version=PKG_VERSION)
|
package_name = Template(package_name).render(version=PKG_VERSION)
|
||||||
version = api_get_source_package_version(branch, package_name)
|
version = api_get_source_package_version(branch, package_name)
|
||||||
|
|
||||||
|
if image.version_template is not None:
|
||||||
|
version = Template(image.version_template).render(version=version)
|
||||||
|
|
||||||
tags = [version]
|
tags = [version]
|
||||||
else:
|
else:
|
||||||
tags = [branch]
|
tags = [branch]
|
||||||
|
6
org/k8s/flannel-cni-plugin/info.yaml
Normal file
6
org/k8s/flannel-cni-plugin/info.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
is_versioned: true
|
||||||
|
version_template: v{{ version.rsplit('.', 1) | first }}-flannel{{ version.rsplit('.', 1) | last }}
|
||||||
|
source_packages:
|
||||||
|
- cni-plugin-flannel
|
||||||
|
...
|
@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
is_versioned: true
|
is_versioned: true
|
||||||
source_packages_list:
|
version_template: v{{ version }}
|
||||||
- kubernetes{version}
|
source_packages:
|
||||||
|
- kubernetes{{ version }}
|
||||||
...
|
...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user