]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
ci: print group section lines for GitHub workflow 2487/head
authorJörg Behrmann <behrmann@physik.fu-berlin.de>
Tue, 12 Mar 2024 15:16:29 +0000 (16:16 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 14 Mar 2024 08:31:28 +0000 (09:31 +0100)
Partially fixes: #2361

.github/workflows/ci.yml
tests/__init__.py
tests/conftest.py
tests/test_initrd.py

index 7148a70b02080ff579a6715e05493e51dbc722c1..1a86bb32ad1a676e6398c103f99b02cefaa3d345 100644 (file)
@@ -174,7 +174,8 @@ jobs:
 
     - name: Run integration tests
       run: |
-        sudo timeout -k 30 1h python3 -m pytest \
+        sudo --preserve-env \
+            timeout -k 30 1h python3 -m pytest \
             --tb=no \
             --capture=no \
             --verbose \
index 6363cc635b904ebd761eb4d9aa0a487fd1d08a34..3b5b59ccefa95f0c438569aa0f54a98c7ee08096 100644 (file)
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: LGPL-2.1+
 
+import contextlib
 import os
 import subprocess
 import sys
@@ -166,3 +167,15 @@ def suspend_capture_stdin(pytestconfig: Any) -> Iterator[None]:
 
     if pytestconfig.getoption("capture") == "no":
         capmanager.resume_global_capture()
+
+
+@contextlib.contextmanager
+def ci_group(s: str) -> Iterator[None]:
+    github_actions = os.getenv("GITHUB_ACTIONS")
+    if github_actions:
+        print(f"\n::group::{s}", flush=True)
+    try:
+        yield
+    finally:
+        if github_actions:
+            print("\n::endgroup::", flush=True)
index 641dfedf6d6b16ce4ccdabc19fecb02c405e4a74..5de10c8ade6636ac4b7dc1ff35ad2bc079d4adce 100644 (file)
@@ -1,4 +1,5 @@
 # SPDX-License-Identifier: LGPL-2.1+
+from collections.abc import Iterator
 from typing import Any, cast
 
 import pytest
@@ -6,7 +7,7 @@ import pytest
 from mkosi.config import parse_config
 from mkosi.distributions import Distribution, detect_distribution
 
-from . import Image
+from . import Image, ci_group
 
 
 def pytest_addoption(parser: Any) -> None:
@@ -50,3 +51,9 @@ def config(request: Any) -> Image.Config:
         tools_tree_distribution=cast(Distribution, request.config.getoption("--tools-tree-distribution")),
         debug_shell=request.config.getoption("--debug-shell"),
     )
+
+
+@pytest.fixture(autouse=True)
+def ci_sections(request: Any) -> Iterator[None]:
+    with ci_group(request.node.name):
+        yield
index 6df167ec52617445d1433a24dc7390c92b4cfc2a..38ae1135473e6cda4fac59efab9ac665bca22286 100644 (file)
@@ -8,6 +8,7 @@ import textwrap
 import time
 from collections.abc import Iterator
 from pathlib import Path
+from typing import Any
 
 import pytest
 
@@ -20,7 +21,7 @@ from mkosi.types import PathString
 from mkosi.user import INVOKING_USER
 from mkosi.versioncomp import GenericVersion
 
-from . import Image
+from . import Image, ci_group
 
 pytestmark = pytest.mark.integration
 
@@ -39,14 +40,17 @@ def passphrase() -> Iterator[Path]:
 
 
 @pytest.fixture(scope="module")
-def initrd(config: Image.Config) -> Iterator[Image]:
-    with Image(
-        config,
-        options=[
-            "--directory", "",
-            "--include=mkosi-initrd/",
-        ],
-    ) as initrd:
+def initrd(request: Any, config: Image.Config) -> Iterator[Image]:
+    with (
+        ci_group(f"Initrd image {config.distribution}/{config.release}"),
+        Image(
+            config,
+            options=[
+                "--directory", "",
+                "--include=mkosi-initrd/",
+            ],
+        ) as initrd
+    ):
         if initrd.config.distribution == Distribution.rhel_ubi:
             pytest.skip("Cannot build RHEL-UBI initrds")