2017-09-24 4 views
0

Je suis en train de mettre dans mon pipeline Jenkins une variable d'environnement avec le nom de « TEST_CONFIG_ROOT », je fais référence à des exemples ici:incapable de définir la variable d'environnement dans jenkinsfile

https://jenkins.io/doc/book/pipeline/jenkinsfile/#working-with-the-environment

Mais, quand j'exécute mon test, il apparaît que la variable d'environnement n'est pas définie, car mon test se plaint encore qu'il n'a pas obtenu la valeur de la variable "TEST_CONFIG_ROOT" qu'il était censé recevoir d'env.

S'il vous plaît voir mon jenkinsFile ci-dessous:

node('node1'){ 


     def buildInput; 

     echo 'Deploying my build' 
    if(!params.buildName) { 
     buildInput = input(
       id: 'userInput', message: 'What is the build name?', parameters: [ 
       [$class: 'StringParameterDefinition', defaultValue: 'abcd-1', description: 'Environment', name: 'buildName'] 
     ]) 
     } 
     buildToUse = params.buildName ? params.buildName : buildInput; 
     echo ("Env: "+buildToUse); 



    if ("${params.buildParam}" == 'prequal' || !params.buildParam){ 
     stage('Prequal') { 


     } 
    } 


    node('nodename'){ 

     if ("${params.buildParam}" == 'test' || !params.buildParam){ 
      withMaven(
        maven: 'M2Slave', 
        mavenSettingsConfig: 'MavenSettingsXML', 
        mavenLocalRepo: '${HOME}/.m2/repository') { 

       stage('Test') { 
        echo 'Testing my build' 
        echo " my work space is ${env.WORKSPACE}" 
        checkout scm 

        environment { 
         TEST_CONFIG_ROOT = '${env.WORKSPACE}/testsE2e/src/main/resources' 

        } 

    dir ('testsE2e'){ 
sh 'mvn clean verify surefire-report:report surefire-report:failsafe-report-only -Dtestngxml=testng.xml -Dhttp.proxyHost=proxy02.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy02.com -Dhttps.proxyPort=8080 -Djavax.xml.accessExternalSchema=all' 
         } 

       } 

      } 
     } 

    } 

} 

J'ai aussi essayé d'exécuter la commande d'exportation à l'aide du script shell comme ci-dessous, mais ce n'est pas non plus aider.

echo " my work space is ${env.WORKSPACE}" 
sh 'export TEST_CONFIG_ROOT="${WORKSPACE}/testsE2e/src/main/resources"' 

Trouvez ci-dessous extrait de journal lorsque le travail de pipeline est exécuté:

[Pipeline] echo 
my work space is /usr/home/nodename/Jenkins/workspace/workspace/someName-RCZ4A4MA3GRP4PSVYT4HTVVIKU4J7TW2667CKTZU22CHR2CBEM5Q 
[Pipeline] dir 
Running in /usr/home/nodename/Jenkins/workspace/workspace/someName-RCZ4A4MA3GRP4PSVYT4HTVVIKU4J7TW2667CKTZU22CHR2CBEM5Q/testsE2e 
[Pipeline] { 
[Pipeline] sh 
[testsE2e] Running shell script 
+ mvn clean verify surefire-report:report surefire-report:failsafe-report-only -Dtestngxml=testng.xml -Dhttp.proxyHost=proxy02.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy02.com -Dhttps.proxyPort=8080 -Djavax.xml.accessExternalSchema=all 
----- withMaven Wrapper script ----- 
Picked up JAVA_TOOL_OPTIONS: -Dmaven.ext.class.path="/usr/home/nodename/Jenkins/workspace/workspace/[email protected]p/withMaven00e87287/pipeline-maven-spy.jar" -Dorg.jenkinsci.plugins.pipeline.maven.reportsFolder="/usr/home/nodename/Jenkins/workspace/workspace/[email protected]p/withMaven00e87287" 
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00) 
Maven home: /opt/maven/apache-maven-3.3.9 
Java version: 1.8.0_111, vendor: Oracle Corporation 
Java home: /opt/oracle/jdk1.8.0_111/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "2.6.32-573.7.1.el6.x86_64", arch: "amd64", family: "unix" 
[jenkins-maven-event-spy] INFO generate /usr/home/nodename/Jenkins/workspace/workspace/[email protected]p/withMaven00e87287/maven-spy-20170924-225639-49.log ... 
[INFO] Scanning for projects... 
+1

Bienvenue dans StackOverflow, cher Mr. stackoverlfow. Veuillez reformater votre exemple de code pour une meilleure lisibilité. – StephenKing

Répondre

1

Alors, c'est ce qui a fonctionné dans mon cas, juste mentionner pour d'autres référence aussi.

withEnv(["TEST_CONFIG_ROOT=${env.WORKSPACE}/testsE2e/src/main/resources"]) { 
     dir ('testsE2e'){ 
    sh 'mvn clean verify surefire-report:report surefire-report:failsafe-report-only -Dtestngxml=testng.xml -Dhttp.proxyHost=proxy02.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy02.com -Dhttps.proxyPort=8080 -Djavax.xml.accessExternalSchema=all' 
     } 
} 
2

Je dirais que vous mélanger avec les pipelines déclaratives scriptées (voir Pipeline Syntax dans la documentation).

Le code suivant appartient à déclarative ceux, mais vous avez un script un:

environment { 
    TEST_CONFIG_ROOT = '${env.WORKSPACE}/testsE2e/src/main/resources' 
} 

Avec pipelines scriptées, il est en fait un peu plus facile:

env.TEST_CONFIG_ROOT = '${env.WORKSPACE}/testsE2e/src/main/resources' 
+0

Merci @StephenKing, j'ai essayé comme vous l'avez dit ci-dessus, mais toujours pas de chance. – stackoverflow

+0

Ensuite, je dirais que vous le gâcher d'une manière ou d'une autre. Dénudez votre pipeline à une version minimale pour voir si cela fonctionne alors. – StephenKing