Maven i Java w Jenkins Docker

0

Mam Windows 10 i w nim Jenkinsa z obrazu docker uruchomiony tak:

docker container run -d 
    -p 8080:8080
    -p 50000:50000 
    -v jenkins_home:/var/jenkins_home 
    --name jenkins-local 
    jenkins/jenkins:lts

Stworzyłem pipeline i mam script, który w step ma min.:

def artifact(String repo, String branch, List<String> artifacts, Map remote){
    String projectName = extractProjectNameFromRepo(repo)
    gitCheckout(repo, branch, projectName)
    withEnv(["MAVEN_OPTS=-XX:TieredStopAtLevel=1"]) {
       sh "mvn clean install -U -T4 -Dmaven.test.skip=true -f ./${projectName}"
    }

w tym momencie mam problem ponieważ moj docker Jenkins nie ma Mavena oraz Javy i dostaje blad mvn not found. Moje pytanie czy mogę w jakiś sposób połączyć ten obraz z moim Maven i Java ze zmiennych środowiskowych Windows ? Czy jest jakiś inny sposób żeby dorzucić Mavena i Jave do Jenkinsa i żeby to zadziałało.

1

Wydaje mi się że powinieneś zainstalować Mavena i Jave wewnątrz kontenera dockerowego i następnie zrobić commita na obrazie. Możesz to zrobić z palucha przez dockera, exec jakieś apt-get albo w jenkinsie masz chyba narzędzie do instalowania narzędzi / pluginów.

Edit:

  1. Ewentualnie dorzucić komendę instalacji mvn i javy w dockerfile o ile używasz.
  2. Użyć obrazu do tworzenia kontenera który już zawiera jenkinsa-jave-mvn.
0

Nie próbowałem z palucha ale sprawdzę.Natomiast jak dodaje przez Global Tool Configuration w ten spsob:

mav.JPG

to dostaje przy uruchomieniu builda taki błąd:

java.io.EOFException: SSL peer shut down incorrectly
	at sun.security.ssl.InputRecord.read(InputRecord.java:505)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
Caused: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167)
	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:863)
Caused: java.io.IOException: Failed to install https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip to /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/M3
	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:937)
	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:850)
	at hudson.tools.DownloadFromUrlInstaller.performInstallation(DownloadFromUrlInstaller.java:77)
	at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69)
	at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
	at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
	at hudson.tasks.Maven$MavenInstallation.forNode(Maven.java:662)
	at hudson.tasks.Maven$MavenInstallation.forNode(Maven.java:491)
	at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:152)
	at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

0

Wydaje mi się że ten błąd z SSH może wynikać z dwóch rzeczy:

  1. Certyfikatu: https://howtodoinjava.com/security/tls12-sslhandshakeexception/
  2. Może jakiegoś braku deamona wewnątrz kontenera: https://forums.docker.com/t/how-to-login-to-a-container-through-ssh-putty-from-another-host/43705
    Pytanie brzmi: jakiego obrazu bazowego używasz do utworzenia kontenera? Jenkinsa instalujesz palucha czy masz go z dostarczonego z obrazem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1