Skip to content

Commit ddec79c

Browse files
GchbgNotTheEvilOne
authored andcommitted
Add support to publishing_group to S3 artifacts handling
1 parent 2a27700 commit ddec79c

3 files changed

Lines changed: 56 additions & 1 deletion

File tree

‎src/gardenlinux/s3/s3_artifacts.py‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ def upload_from_directory(
150150
feature_set_list = cname_object.feature_set_list
151151
release_timestamp = stat(release_file).st_ctime
152152
requirements_file = artifacts_dir.joinpath(f"{base_name}.requirements")
153+
publishing_group = ""
153154
require_uefi = None
154155
secureboot = None
155156
tpm2 = None
@@ -161,6 +162,11 @@ def upload_from_directory(
161162
if requirements_config.has_option(UNNAMED_SECTION, "arch"):
162163
arch = requirements_config.get(UNNAMED_SECTION, "arch")
163164

165+
if requirements_config.has_option(UNNAMED_SECTION, "publishing_group"):
166+
publishing_group = requirements_config.get(
167+
UNNAMED_SECTION, "publishing_group"
168+
)
169+
164170
if requirements_config.has_option(UNNAMED_SECTION, "uefi"):
165171
require_uefi = requirements_config.getboolean(UNNAMED_SECTION, "uefi")
166172

@@ -220,6 +226,9 @@ def upload_from_directory(
220226
if platform_variant is not None:
221227
metadata["platform_variant"] = platform_variant
222228

229+
if publishing_group:
230+
metadata["publishing_group"] = publishing_group
231+
223232
base_name_length = len(base_name)
224233

225234
for artifact in artifacts_dir.iterdir():

‎tests/s3/test_main.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,4 @@ def test_main_with_expected_result(
106106
"^(.*)(md5sum|sha256sum)\\: .+$", "\\1\\2: {\\2}", result, flags=re.M
107107
)
108108

109-
assert result == S3_METADATA
109+
assert S3_METADATA == result

‎tests/s3/test_s3_artifacts.py‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,3 +302,49 @@ def test_upload_directory_with_requirements_override(s3_setup: S3Env) -> None:
302302
metadata = yaml.safe_load(meta_obj.get()["Body"].read())
303303
assert metadata["require_uefi"] is False
304304
assert metadata["secureboot"] is True
305+
306+
307+
def test_upload_directory_with_publishing_group(s3_setup: S3Env) -> None:
308+
"""A publishing_group value in the .requirements file is copied into the metadata."""
309+
# Arrange
310+
env = s3_setup
311+
(env.tmp_path / f"{env.cname}.release").write_text(RELEASE_DATA)
312+
(env.tmp_path / f"{env.cname}.requirements").write_text(
313+
"arch = amd64\npublishing_group = container\n"
314+
)
315+
(env.tmp_path / f"{env.cname}-artifact").write_bytes(b"abc")
316+
317+
# Act
318+
artifacts = S3Artifacts(env.bucket_name)
319+
artifacts.upload_from_directory(env.cname, env.tmp_path)
320+
321+
# Assert
322+
bucket = env.s3.Bucket(env.bucket_name)
323+
meta_obj = next(
324+
o for o in bucket.objects.all() if o.key == f"meta/singles/{env.cname}"
325+
)
326+
metadata = yaml.safe_load(meta_obj.get()["Body"].read())
327+
assert metadata["publishing_group"] == "container"
328+
329+
330+
def test_upload_directory_without_publishing_group(s3_setup: S3Env) -> None:
331+
"""An empty or absent publishing_group is not emitted, marking a standalone build."""
332+
# Arrange
333+
env = s3_setup
334+
(env.tmp_path / f"{env.cname}.release").write_text(RELEASE_DATA)
335+
(env.tmp_path / f"{env.cname}.requirements").write_text(
336+
"arch = amd64\npublishing_group = \n"
337+
)
338+
(env.tmp_path / f"{env.cname}-artifact").write_bytes(b"abc")
339+
340+
# Act
341+
artifacts = S3Artifacts(env.bucket_name)
342+
artifacts.upload_from_directory(env.cname, env.tmp_path)
343+
344+
# Assert
345+
bucket = env.s3.Bucket(env.bucket_name)
346+
meta_obj = next(
347+
o for o in bucket.objects.all() if o.key == f"meta/singles/{env.cname}"
348+
)
349+
metadata = yaml.safe_load(meta_obj.get()["Body"].read())
350+
assert "publishing_group" not in metadata

0 commit comments

Comments
 (0)