2017-03-31 1 views
1

J'ai un Makefile:pipeline Jenkins n'imprime pas le journal complet

.PHONE: test 
REMOVE_IMG_ON_FAIL=true 
REMOVE_IMG_WHEN_DONE=true 
DOCKER_OPTS = --rm -t 
test: test-ubuntu14 test-ubuntu16 test-centos6 test-centos7 

test-ubuntu14: 
     $(eval ID:=$(shell docker build -f tests/Dockerfile-ubuntu14.04 . | tee /dev/stderr | awk 'END {print $$NF}')) 
     docker run ${DOCKER_OPTS} -v ${PWD}/tests/hosts:/etc/hosts ${ID} \ 
       /ansible-role-this/tests/test.sh || { ${REMOVE_IMG_ON_FAIL} && docker rmi ${ID} && exit 1 ; } 
     { ${REMOVE_IMG_WHEN_DONE} && docker rmi ${ID} ; } || true 

test-ubuntu16: 
     $(eval ID:=$(shell docker build -f tests/Dockerfile-ubuntu16.04 . | tee /dev/stderr | awk 'END {print $$NF}')) 
     docker run ${DOCKER_OPTS} -v ${PWD}/tests/hosts:/etc/hosts ${ID} \ 
       /ansible-role-this/tests/test.sh || { ${REMOVE_IMG_ON_FAIL} && docker rmi ${ID} && exit 1 ; } 
     { ${REMOVE_IMG_WHEN_DONE} && docker rmi ${ID} ; } || true 

test-centos6: 
     $(eval ID:=$(shell docker build -f tests/Dockerfile-centos6 . | tee /dev/stderr | awk 'END {print $$NF}')) 
     docker run ${DOCKER_OPTS} -v ${PWD}/tests/hosts:/etc/hosts ${ID} \ 
       /ansible-role-this/tests/test.sh || { ${REMOVE_IMG_ON_FAIL} && docker rmi ${ID} && exit 1 ; } 
     { ${REMOVE_IMG_WHEN_DONE} && docker rmi ${ID} ; } || true 

test-centos7: 
     $(eval ID:=$(shell docker build -f tests/Dockerfile-centos7 . | tee /dev/stderr | awk 'END {print $$NF}')) 
     docker run ${DOCKER_OPTS} -v ${PWD}/tests/hosts:/etc/hosts ${ID} \ 
       /ansible-role-this/tests/test.sh || { ${REMOVE_IMG_ON_FAIL} && docker rmi ${ID} && exit 1 ; } 
     { ${REMOVE_IMG_WHEN_DONE} && docker rmi ${ID} ; } || true 

avec Jenkinsfile

node { 
    stage 'Checkout' 
    checkout scm 

    stage 'test' 
    catchError { 
    wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) { 
     sh 'make test' 
    } 
    } 
    step([$class: 'Mailer', 
     notifyEveryUnstableBuild: true, 
     recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], 
             [$class: 'RequesterRecipientProvider']])]) 
} 

Il fonctionne très bien, mais pour quelques impressions de pipeline seul le premier test ubuntu14 sortie, mais n'imprime pas le reste. Bien qu'ils soient définitivement exécutés. Malheureusement, cela complique le processus de débogage.

MISE À JOUR: Pour contourner ce problème, j'utilisé ce Jenkinsfile:

node { 
    stage 'Checkout' 
    checkout scm 

    stage 'test' 
    catchError { 
    wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) { 
     sh 'make test-ubuntu14' 
     sh 'make test-ubuntu16' 
     sh 'make test-centos6' 
     sh 'make test-centos7' 
    } 
    } 
    step([$class: 'Mailer', 
     notifyEveryUnstableBuild: true, 
     recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], 
             [$class: 'RequesterRecipientProvider']])]) 
} 

Quoi qu'il en soit, je veux toujours savoir comment imprimer la sortie du test de marque unique.

Répondre

1

essayer d'obtenir la sortie dans une variable: résultat = script sh: 'make test-ubuntu14', returnStdout: true

juste imprimer la variable résultat d'impression