From 5489be42e7143330d898703e9603c9a5dc0d5e42 Mon Sep 17 00:00:00 2001 From: tamarleviCm Date: Tue, 30 Apr 2024 13:50:00 +0300 Subject: [PATCH] AST-41922 fix the installer to get the envVars from the global Jenkins object to support running from a jenkins slave --- .../jenkins/tools/CheckmarxInstaller.java | 19 ++++++++++--------- .../jenkins/tools/ProxyHttpClient.java | 7 +++++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/checkmarx/jenkins/tools/CheckmarxInstaller.java b/src/main/java/com/checkmarx/jenkins/tools/CheckmarxInstaller.java index d2762d3..636d1c8 100644 --- a/src/main/java/com/checkmarx/jenkins/tools/CheckmarxInstaller.java +++ b/src/main/java/com/checkmarx/jenkins/tools/CheckmarxInstaller.java @@ -1,6 +1,7 @@ package com.checkmarx.jenkins.tools; import com.checkmarx.jenkins.CxLoggerAdapter; +import com.checkmarx.jenkins.exception.CheckmarxException; import com.checkmarx.jenkins.tools.internal.DownloadService; import hudson.EnvVars; import hudson.Extension; @@ -14,6 +15,7 @@ import hudson.tools.ToolInstallation; import hudson.tools.ToolInstaller; import hudson.tools.ToolInstallerDescriptor; +import jenkins.model.Jenkins; import jenkins.security.MasterToSlaveCallable; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -109,7 +111,7 @@ private FilePath installCheckmarxCliAsSingleBinary(FilePath expected, Node node, Platform platform = nodeChannel.call(new GetPlatform(node.getDisplayName())); try { - String proxyStr = getProxy(node); + String proxyStr = getProxy(); URL checkmarxDownloadUrl = DownloadService.getDownloadUrlForCli(version, platform); expected.mkdirs(); @@ -128,8 +130,8 @@ private FilePath installCheckmarxCliAsSingleBinary(FilePath expected, Node node, return expected; } - private String getProxy(Node node) { - EnvVars envVars = getEnvVars(node); + private String getProxy() { + EnvVars envVars = getEnvVars(); String httpProxyStr = envVars.get(HTTP_PROXY); if (StringUtils.isNotEmpty(httpProxyStr)) { log.info("Installer using proxy: " + httpProxyStr); @@ -137,11 +139,10 @@ private String getProxy(Node node) { return httpProxyStr; } - private static EnvVars getEnvVars(Node node) { + private static EnvVars getEnvVars() { EnvironmentVariablesNodeProperty environmentVariablesNodeProperty = - ((Hudson) node).getGlobalNodeProperties().get(EnvironmentVariablesNodeProperty.class); - EnvVars envVars = environmentVariablesNodeProperty != null ? environmentVariablesNodeProperty.getEnvVars() : new EnvVars(); - return envVars; + Jenkins.get().getGlobalNodeProperties().get(EnvironmentVariablesNodeProperty.class); + return environmentVariablesNodeProperty != null ? environmentVariablesNodeProperty.getEnvVars() : new EnvVars(); } public String getVersion() { @@ -208,7 +209,7 @@ public Void call() throws IOException { extract(downloadedFile.getAbsolutePath(), downloadedFile.getParent()); } catch (ArchiveException | CompressorException e) { throw new IOException(format("Could not extract cli: %s", downloadedFile.getAbsolutePath())); - } catch (URISyntaxException e) { + } catch (CheckmarxException | URISyntaxException e) { throw new RuntimeException(e); } @@ -224,7 +225,7 @@ public Void call() throws IOException { return null; } - public static void copyURLToFile(URL source, String proxyStr, File destination, int connectionTimeoutMillis, int readTimeoutMillis) throws IOException, URISyntaxException { + public static void copyURLToFile(URL source, String proxyStr, File destination, int connectionTimeoutMillis, int readTimeoutMillis) throws IOException, URISyntaxException, CheckmarxException { OkHttpClient client = new ProxyHttpClient().getHttpClient(proxyStr, connectionTimeoutMillis,readTimeoutMillis); Request request = new Request.Builder().url(source).build(); Response response = client.newCall(request).execute(); diff --git a/src/main/java/com/checkmarx/jenkins/tools/ProxyHttpClient.java b/src/main/java/com/checkmarx/jenkins/tools/ProxyHttpClient.java index de5a0e2..fa2e639 100644 --- a/src/main/java/com/checkmarx/jenkins/tools/ProxyHttpClient.java +++ b/src/main/java/com/checkmarx/jenkins/tools/ProxyHttpClient.java @@ -8,6 +8,7 @@ import java.net.URISyntaxException; import java.util.concurrent.TimeUnit; +import com.checkmarx.jenkins.exception.CheckmarxException; import okhttp3.*; import org.apache.commons.lang.StringUtils; @@ -16,7 +17,7 @@ public class ProxyHttpClient { - public OkHttpClient getHttpClient(String proxyString, int connectionTimeoutMillis, int readTimeoutMillis) throws URISyntaxException { + public OkHttpClient getHttpClient(String proxyString, int connectionTimeoutMillis, int readTimeoutMillis) throws URISyntaxException, CheckmarxException { OkHttpClient.Builder okClientBuilder = new OkHttpClient.Builder() .connectTimeout(connectionTimeoutMillis, TimeUnit.MILLISECONDS) .readTimeout(readTimeoutMillis, TimeUnit.MILLISECONDS); @@ -39,12 +40,14 @@ public Request authenticate(Route route, Response response) throws IOException { } else { return okClientBuilder.proxy(_httpProxy).build(); } + } else { + throw new CheckmarxException("Invalid proxy configuration"); } } return okClientBuilder.build(); } private static boolean isValidProxy(String proxyHost, int proxyPort) { - return (!proxyHost.isEmpty()) && (proxyPort >= 10) && (proxyPort <= 65535); + return StringUtils.isNotEmpty(proxyHost) && (proxyPort >= 10) && (proxyPort <= 65535); } }