From 4b6aa60d563fb3d2cb577662a3bd846578bd141e Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Tue, 27 Jan 2026 11:57:53 -0500 Subject: [PATCH 1/5] Added two new failure patterns to detect. Including test function to verify if the patterns are detected --- Jenkinsfile | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1a8be258bd..e882c50fb3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -34,16 +34,36 @@ def checkForPattern(pattern, log) { return [found: false, matchedLine: "", context: ""] } +def testLog() { + sh """ + echo "Error response from daemon: Head "https": unauthorized: your account must log in with a Personal Access Token (PAT) - learn more at docs.docker.com/go/access-tokens throwing error exception while building CK" + echo "test test sccache: error: Server startup failed: Address in use test test" + echo "sccache: error: Server startup failed: Address in use test test" + echo "sccache: error: Server startup failed: Address in use" + echo "GPU not found" + echo "test GPU not found test" + echo "test GPU not found" + echo "GPU not found test" + echo "docker login failed" + echo "test test docker login failed test test" + echo "docker login failed test test" + echo "test test docker login failed" + """ + error("Forcing failure to test notifications") +} + // Scan the build logs for failures and send notifications. def sendFailureNotifications() { // Error patterns to scan build logs for specific failure types and send detailed notifications. def failurePatterns = [ [pattern: /login attempt to .* failed with status: 401 Unauthorized/, description: "Docker registry authentication failed"], - [pattern: /(.*)docker login failed(.*)/, description: "Docker login failed"], + [pattern: /.*docker login failed.*/, description: "Docker login failed"], [pattern: /HTTP request sent .* 404 Not Found/, description: "HTTP request failed with 404"], [pattern: /cat: .* No such file or directory/, description: "GPU not found"], - [pattern: /(.*)GPU not found(.*)/, description: "GPU not found"], - [pattern: /Could not connect to Redis at .* Connection timed out/, description: "Redis connection timed out"] + [pattern: /.*GPU not found.*/, description: "GPU not found"], + [pattern: /Could not connect to Redis at .* Connection timed out/, description: "Redis connection timed out"], + [pattern: /.*unauthorized: your account must log in with a Personal Access Token (PAT).*/, description: "Docker login failed"], + [pattern: /.*sccache: error: Server startup failed: Address in use.*/, description: "Sccache Error"] ] // Get the build log. @@ -1290,6 +1310,7 @@ pipeline { script { env.SHOULD_RUN_CI = String.valueOf(params.FORCE_CI.toBoolean() || shouldRunCICheck()) echo "SHOULD_RUN_CI: ${env.SHOULD_RUN_CI}" + testLog() } } } From 9f5a38b946682d39fa0229376d2aef2929c802b5 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Tue, 27 Jan 2026 12:11:38 -0500 Subject: [PATCH 2/5] Modifying pattern match to detect docker login failure. Removed passing tests. --- Jenkinsfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e882c50fb3..083f47f449 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,14 +37,11 @@ def checkForPattern(pattern, log) { def testLog() { sh """ echo "Error response from daemon: Head "https": unauthorized: your account must log in with a Personal Access Token (PAT) - learn more at docs.docker.com/go/access-tokens throwing error exception while building CK" - echo "test test sccache: error: Server startup failed: Address in use test test" echo "sccache: error: Server startup failed: Address in use test test" echo "sccache: error: Server startup failed: Address in use" - echo "GPU not found" echo "test GPU not found test" echo "test GPU not found" echo "GPU not found test" - echo "docker login failed" echo "test test docker login failed test test" echo "docker login failed test test" echo "test test docker login failed" @@ -62,7 +59,7 @@ def sendFailureNotifications() { [pattern: /cat: .* No such file or directory/, description: "GPU not found"], [pattern: /.*GPU not found.*/, description: "GPU not found"], [pattern: /Could not connect to Redis at .* Connection timed out/, description: "Redis connection timed out"], - [pattern: /.*unauthorized: your account must log in with a Personal Access Token (PAT).*/, description: "Docker login failed"], + [pattern: /(.*)unauthorized: your account must log in with a Personal Access Token (PAT)(.*)/, description: "Docker login failed"], [pattern: /.*sccache: error: Server startup failed: Address in use.*/, description: "Sccache Error"] ] From f82f516b937576a2aa59a2f0e13ed7d89cd61d47 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Tue, 27 Jan 2026 12:18:24 -0500 Subject: [PATCH 3/5] Removing passing tests. Modifying docker pattern to detect failure --- Jenkinsfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 083f47f449..0f5a9a41e7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -37,12 +37,9 @@ def checkForPattern(pattern, log) { def testLog() { sh """ echo "Error response from daemon: Head "https": unauthorized: your account must log in with a Personal Access Token (PAT) - learn more at docs.docker.com/go/access-tokens throwing error exception while building CK" - echo "sccache: error: Server startup failed: Address in use test test" echo "sccache: error: Server startup failed: Address in use" - echo "test GPU not found test" echo "test GPU not found" echo "GPU not found test" - echo "test test docker login failed test test" echo "docker login failed test test" echo "test test docker login failed" """ @@ -59,7 +56,7 @@ def sendFailureNotifications() { [pattern: /cat: .* No such file or directory/, description: "GPU not found"], [pattern: /.*GPU not found.*/, description: "GPU not found"], [pattern: /Could not connect to Redis at .* Connection timed out/, description: "Redis connection timed out"], - [pattern: /(.*)unauthorized: your account must log in with a Personal Access Token (PAT)(.*)/, description: "Docker login failed"], + [pattern: /.*unauthorized: your account must log in with a Personal Access Token.*/, description: "Docker login failed"], [pattern: /.*sccache: error: Server startup failed: Address in use.*/, description: "Sccache Error"] ] From d251ea04c906a13f73b98e5c89f976a708143f87 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Tue, 27 Jan 2026 12:25:09 -0500 Subject: [PATCH 4/5] Removed passing tests --- Jenkinsfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0f5a9a41e7..56042993ba 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -36,11 +36,7 @@ def checkForPattern(pattern, log) { def testLog() { sh """ - echo "Error response from daemon: Head "https": unauthorized: your account must log in with a Personal Access Token (PAT) - learn more at docs.docker.com/go/access-tokens throwing error exception while building CK" - echo "sccache: error: Server startup failed: Address in use" - echo "test GPU not found" echo "GPU not found test" - echo "docker login failed test test" echo "test test docker login failed" """ error("Forcing failure to test notifications") From 8f791785d5bf93757ec75c4ddbdd56c0e69a9531 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Tue, 27 Jan 2026 12:30:10 -0500 Subject: [PATCH 5/5] Removing test logging function --- Jenkinsfile | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 56042993ba..93343461e0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -34,14 +34,6 @@ def checkForPattern(pattern, log) { return [found: false, matchedLine: "", context: ""] } -def testLog() { - sh """ - echo "GPU not found test" - echo "test test docker login failed" - """ - error("Forcing failure to test notifications") -} - // Scan the build logs for failures and send notifications. def sendFailureNotifications() { // Error patterns to scan build logs for specific failure types and send detailed notifications. @@ -1300,7 +1292,6 @@ pipeline { script { env.SHOULD_RUN_CI = String.valueOf(params.FORCE_CI.toBoolean() || shouldRunCICheck()) echo "SHOULD_RUN_CI: ${env.SHOULD_RUN_CI}" - testLog() } } }