2017-10-17 26 views
0

J'ai regardé quelques messages, mais je ne pouvais pas trouver une solution à mon problème. Dans Jenkins, j'ai un pipeline configuré avec un projet maven. Je peux exécuter les tests en local sans problème et le résultat du test est généré dans le dossier cible. Le problème est que les tests ne passent pas le processus de construction de Jenkins car la structure des dossiers est différente dans jenkins. Dans le message d'erreur que je vois qu'il ne pas utiliser le bon chemin:Jenkins Maven Build -> Changer le répertoire

[ERROR] Command was /bin/sh -c cd /var/lib/jenkins/jobs/test/workspace 

Le chemin doit être quelque chose comme

/var/lib/docker/volumes/jenkins-data_var_lib_jenkins`/_data/jobs/test/workspace# 

Sur le serveur où Jenkins est en cours d'exécution est-il pas de dossier de jenkins sous le répertoire lib dossier. J'ai fait une recherche et j'ai découvert que le dossier jenkins est en dessous de lib/docker/volumes. Mais d'une certaine manière tout le processus de construction de la console dit

Running on master in /var/lib/jenkins/jobs/test/workspace 

Où puis-je faire ce changement? Toute aide est très appréciée. Mon Jenkinsfile a été générée à partir du cadre que je me sers et ressemble à ceci:

#!/usr/bin/env groovy 

node { 

    stage('checkout') { 
     checkout scm 
    } 

    stage('check java') { 
     sh "java -version" 
    } 

    stage('clean') { 
     sh "chmod +x mvnw" 
     sh "./mvnw clean" 
    } 

    stage('install tools') { 
     sh "./mvnw com.github.eirslett:frontend-maven-plugin:install-node-and-yarn -DnodeVersion=v6.11.3 -DyarnVersion=v1.1.0" 
    } 

    stage('yarn install') { 
     sh "./mvnw com.github.eirslett:frontend-maven-plugin:yarn" 
    } 


    stage('backend tests') { 
     try { 
      sh "./mvnw test" 
     } catch(err) { 
      throw err 
     } finally { 
      junit '**/target/surefire-reports/TEST-*.xml' 
     } 
    } 

    stage('frontend tests') { 
     try { 
      sh "./mvnw com.github.eirslett:frontend-maven-plugin:yarn -Dfrontend.yarn.arguments=test" 
     } catch(err) { 
      throw err 
     } finally { 
      junit '** /target/test-results/karma/TESTS-*.xml' 
     } 
    } 

    stage('packaging') { 
     sh "./mvnw package -Pprod -DskipTests" 
     archiveArtifacts artifacts: '**/target/*.war', fingerprint: true 
    } 

} 

Le rapport d'erreur dans le processus de construction est la suivante (comme je l'ai dit plus haut, il n'y a pas de dossier de jenkins sous var/lib/I. pense qu'il ya un problème avec deux espaces de travail différents, mais comment pourrais-je adapter ce?

 Started by an SCM change 
     Obtained Jenkinsfile from git https://github.com/....git 
     [Pipeline] node 
     Running on master in /var/lib/jenkins/jobs/test/workspace 
     [Pipeline] { 
     [Pipeline] stage 
     [Pipeline] { (checkout) 
     [Pipeline] checkout 
     > git rev-parse --is-inside-work-tree # timeout=10 
     Fetching changes from the remote Git repository 
     > git config remote.origin.url https://github.com/.....git # timeout=10 
     Fetching upstream changes from https://github.com/.......git 
     > git --version # timeout=10 
     using GIT_ASKPASS to set credentials 
     > git fetch --tags --progress https://github.com/........git +refs/heads/*:refs/remotes/origin/* 
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 
     Checking out Revision ..... 
    (refs/remotes/origin/master) 
     > git config core.sparsecheckout # timeout=10 
     > git checkout -f ........ 
     Commit message: "Merge branch 'master' of https://github.com/......" 
     > git rev-list ....... # timeout=10 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] stage 
     [Pipeline] { (check java) 
     [Pipeline] sh 
     [workspace] Running shell script 
     + java -version 
     openjdk version "1.8.0_112" 
     OpenJDK Runtime Environment (build 1.8.0_112-b15) 
     OpenJDK 64-Bit Server VM (build 25.112-b15, mixed mode) 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] stage 
     [Pipeline] { (clean) 
     [Pipeline] sh 
     [workspace] Running shell script 
     + chmod +x mvnw 
     [Pipeline] sh 
     [workspace] Running shell script 
     + ./mvnw clean 
     [INFO] Scanning for projects... 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Building Test 0.0.1-SNAPSHOT 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] 
     [INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ test--- 
     [INFO] Deleting /var/lib/jenkins/jobs/test/workspace/target 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] BUILD SUCCESS 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Total time: 1.181 s 
     [INFO] Finished at: 2017-10-18T11:32:15Z 
     [INFO] Final Memory: 12M/106M 
     [INFO] ------------------------------------------------------------------------ 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] stage 
     [Pipeline] { (install tools) 
     [Pipeline] sh 
     [workspace] Running shell script 
     + ./mvnw com.github.eirslett:frontend-maven-plugin:install-node-and-yarn -DnodeVersion=v6.11.3 -DyarnVersion=v1.1.0 
     [INFO] Scanning for projects... 
     [INFO] 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Building Test 0.0.1-SNAPSHOT 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] 
     [INFO] --- frontend-maven-plugin:1.6:install-node-and-yarn (default-cli) @ test--- 
     [INFO] Node v6.11.3 is already installed. 
     [INFO] Yarn 1.1.0 is already installed. 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] BUILD SUCCESS 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Total time: 3.126 s 
     [INFO] Finished at: 2017-10-18T11:32:20Z 
     [INFO] Final Memory: 14M/106M 
     [INFO] ------------------------------------------------------------------------ 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] stage 
     [Pipeline] { (yarn install) 
     [Pipeline] sh 
     [workspace] Running shell script 
     + ./mvnw com.github.eirslett:frontend-maven-plugin:yarn 
     [INFO] Scanning for projects... 
------------------------------------------------------------------------ 
     [INFO] Building Test 0.0.1-SNAPSHOT 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] 
     [INFO] --- frontend-maven-plugin:1.6:yarn (default-cli) @ test--- 
     [INFO] Running 'yarn ' in /var/lib/jenkins/jobs/test/workspace 
     [INFO] yarn install v1.1.0 
     [INFO] [1/5] Validating package.json... 
     [INFO] [2/5] Resolving packages... 
     [INFO] success Already up-to-date. 
     [INFO] Done in 2.39s. 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] BUILD SUCCESS 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Total time: 4.316 s 
     [INFO] Finished at: 2017-10-18T11:32:27Z 
     [INFO] Final Memory: 12M/106M 
     [INFO] ------------------------------------------------------------------------ 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] stage 
     [Pipeline] { (backend tests) 
     [Pipeline] sh 
     [workspace] Running shell script 
     + ./mvnw test 
     [INFO] Scanning for projects... 
     ------------------------------------------------------------------------ 
     [INFO] Building Test 0.0.1-SNAPSHOT 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] 
     [INFO] --- maven-resources-plugin:3.0.1:copy-resources (default-resources) @ test--- 
     [INFO] Using 'UTF-8' encoding to copy filtered resources. 
     [INFO] Copying 19 resources 
     [INFO] Copying 11 resources 
     [INFO] 
     [INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ test--- 
     [INFO] Using 'UTF-8' encoding to copy filtered resources. 
     [INFO] Copying 19 resources 
     [INFO] Copying 11 resources 
     [INFO] 
     [INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-versions) @ test--- 
     [INFO] 
     [INFO] --- maven-resources-plugin:3.0.1:copy-resources (docker-resources) @ test--- 
     [INFO] Using 'UTF-8' encoding to copy filtered resources. 
     [INFO] Copying 2 resources 
     [INFO] 
     [INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (pre-unit-tests) @ test--- 
     [INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/jobs/test/workspace/target/test-results/coverage/jacoco/jacoco.exec -Djava.security.egd=file:/dev/./urandom -Xmx256m 
     [INFO] 
     [INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ test--- 
     [INFO] Changes detected - recompiling the module! 
     [INFO] Compiling 94 source files to /var/lib/jenkins/jobs/test/workspace/target/classes 
     [INFO] 
     [INFO] --- maven-resources-plugin:3.0.1:testResources (default-testResources) @ test--- 
     [INFO] Using 'UTF-8' encoding to copy filtered resources. 
     [INFO] Copying 4 resources 
     [INFO] 
     [INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ test--- 
     [INFO] Changes detected - recompiling the module! 
     [INFO] Compiling 22 source files to /var/lib/jenkins/jobs/test/workspace/target/test-classes 
     [INFO] 
     [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ test--- 
     [INFO] Surefire report directory: /var/lib/jenkins/jobs/test/workspace/target/surefire-reports 

     ------------------------------------------------------- 
     T E S T S 
     ------------------------------------------------------- 
     Error: Invalid or corrupt jarfile /var/lib/jenkins/jobs/test/workspace/target/surefire/surefirebooter78063794178.....jar 

     Results : 

     Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

     [INFO] ------------------------------------------------------------------------ 
     [INFO] BUILD FAILURE 
     [INFO] ------------------------------------------------------------------------ 
     [INFO] Total time: 13.856 s 
     [INFO] Finished at: 2017-10-18T11:32:43Z 
     [INFO] Final Memory: 49M/334M 
     [INFO] ------------------------------------------------------------------------ 
     [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project test: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? 
     [ERROR] Command was /bin/sh -c cd /var/lib/jenkins/jobs/test/workspace && /usr/lib/jvm/java-8-openjdk/jre/bin/java -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/jobs/test/workspace/target/test-results/coverage/jacoco/jacoco.exec -Djava.security.egd=file:/dev/./urandom -Xmx256m -jar /var/lib/jenkins/jobs/test/workspace/target/surefire/surefirebooter7806379417818082153.jar /var/lib/jenkins/jobs/test/workspace/target/surefire/surefire6244578096780428228tmp /var/lib/jenkins/jobs/test/workspace/target/surefire/surefire_09182258098509539166tmp 
     [ERROR] -> [Help 1] 
     [ERROR] 
     [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
     [ERROR] Re-run Maven using the -X switch to enable full debug logging. 
     [ERROR] 
     [ERROR] For more information about the errors and possible solutions, please read the following articles: 
     [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 
     [Pipeline] junit 
     Recording test results 
     [Pipeline] } 
     [Pipeline] // stage 
     [Pipeline] } 
     [Pipeline] // node 
     [Pipeline] End of Pipeline 
     ERROR: No test report files were found. Configuration error? 
     Finished: FAILURE 
+0

Pourriez-vous partager votre Jenkinsfile si vous en avez utilisé? – arifCee

+0

J'ai édité ma question et j'ai partagé mon fichier jenkins. Toute aide est très appréciée. – curlie

Répondre

0

Difficile à dire sans voir votre travail, mais vous pouvez probablement faire référence à la variable workspace $ pour obtenir le haut de votre espace de travail.

+0

Je suis désolé de cette question, mais où devrais-je faire cette référence? J'ai également partagé mon fichier jenkins. Voulez-vous dire que je dois faire un changement là-bas? – curlie

+0

Partout où vous utilisez des chemins codés en dur dans un fichier, utilisez $ WORKSPACE/[fichier]. $ WORKSPACE pointera vers le niveau supérieur de votre espace de travail. Je ne vois pas dans votre Jenkinsfile où vous faites référence à des chemins absolus. Faites-vous quelque chose comme ça dans votre script de construction? Si vous utilisez docker, votre espace de travail dans le docker peut être différent de ce que vous voyez sur votre machine agent. D'où cela vient-il:/bin/sh -c cd/var/lib/jenkins/jobs/test/espace de travail "? –

+0

Il provient du rapport d'erreur dans jenkins en essayant de construire les tests. Le problème est que, lorsque je recherche un dossier jenkins dans le fichier vm où jenkins est en cours d'exécution, il n'y a pas de chemin comme mentionné ci-dessus Le dossier jenkins dans le vm a un chemin différent vers l'espace de travail. Je ne sais pas comment résoudre cela, respectiely où faire les changements. – curlie