From 9f802777fcc45d06788c4c0da32dcc5e1dde10db Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Tue, 27 Aug 2024 19:04:53 +0200 Subject: [PATCH 1/2] If amd64 tag fails creenshot test, mark CI run a "FAIL". --- ci/ci.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/ci/ci.py b/ci/ci.py index 10b10d8..b5ade29 100755 --- a/ci/ci.py +++ b/ci/ci.py @@ -326,7 +326,11 @@ def container_test(self, tag: str) -> None: return # Screenshot the web interface and check connectivity - self.take_screenshot(container, tag) + screenshot: bool = self.take_screenshot(container, tag) + if not screenshot and self.get_platform(tag) == "amd64": # Allow ARM tags to fail the screenshot test + self.logger.error("Test of %s FAILED after %.2f seconds", tag, time.time() - start_time) + self._endtest(container, tag, build_info, sbom, False, start_time) + return self._endtest(container, tag, build_info, sbom, True, start_time) self.logger.success("Test of %s PASSED after %.2f seconds", tag, time.time() - start_time) @@ -723,7 +727,7 @@ def _add_test_result(self, tag:str, test:str, status:str, message:str, start_tim "message":message, "runtime": runtime}.items()))) - def take_screenshot(self, container: Container, tag:str) -> None: + def take_screenshot(self, container: Container, tag:str) -> bool: """Take a screenshot and save it to self.outdir if self.screenshot is True Takes a screenshot using a ChromiumDriver instance. @@ -731,9 +735,12 @@ def take_screenshot(self, container: Container, tag:str) -> None: Args: container (Container): Container object tag (str): The container tag we are testing. + + Returns: + bool: Return True if the screenshot was successful, otherwise False. """ if not self.screenshot: - return + return True proto: Literal["https", "http"] = "https" if self.ssl.upper() == "TRUE" else "http" screenshot_timeout = time.time() + self.screenshot_timeout test = "Get screenshot" @@ -757,7 +764,7 @@ def take_screenshot(self, container: Container, tag:str) -> None: raise FileNotFoundError(f"Screenshot '{self.outdir}/{tag}.png' not found") self._add_test_result(tag, test, "PASS", "-", start_time) self.logger.success("Screenshot %s: PASSED after %.2f seconds", tag, time.time() - start_time) - return + return True except Exception as error: logger.debug("Failed to take screenshot of %s at %s, trying again in 3 seconds", tag, endpoint, exc_info=error) time.sleep(3) @@ -768,12 +775,18 @@ def take_screenshot(self, container: Container, tag:str) -> None: except (requests.Timeout, requests.ConnectionError, KeyError) as error: self._add_test_result(tag, test, "FAIL", f"CONNECTION ERROR: {str(error)}", start_time) self.logger.exception("Screenshot %s FAIL CONNECTION ERROR", tag) + self.report_status = "FAIL" + return False except TimeoutException as error: self._add_test_result(tag, test, "FAIL", f"TIMEOUT: {str(error)}", start_time) self.logger.exception("Screenshot %s FAIL TIMEOUT", tag) + self.report_status = "FAIL" + return False except (WebDriverException, Exception) as error: self._add_test_result(tag, test, "FAIL", f"UNKNOWN: {str(error)}", start_time) self.logger.exception("Screenshot %s FAIL UNKNOWN", tag) + self.report_status = "FAIL" + return False finally: try: driver.quit() From 611d43c8abb3515e83b2c4051561e29a9cc0cf2c Mon Sep 17 00:00:00 2001 From: GilbN <24592972+GilbN@users.noreply.github.com> Date: Tue, 27 Aug 2024 19:19:31 +0200 Subject: [PATCH 2/2] Add NODE_NAME env to readme example --- readme-vars.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme-vars.yml b/readme-vars.yml index ea28f55..51e2b7e 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -53,7 +53,8 @@ full_custom_readme: | -e CI_S6_VERBOSITY= \ -e CI_LOG_LEVEL= \ -e DOCKER_LOGS_TIMEOUT= \ - -e DRY_RUN= + -e DRY_RUN= \ + -e NODE_NAME= \ -t lsiodev/ci:latest \ python3 test_build.py ```