2017-03-31 61 views
1

我有一个Makefile:詹金斯管道不打印完整的日志

.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 

与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']])]) 
} 

它工作正常一起,但由于某些原因,管道只打印第一测试ubuntu14输出,但不打印其余部分。虽然他们肯定被执行。不幸的是,这使调试过程变得复杂。

UPDATE:作为一种替代方法我用这个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']])]) 
} 

不管怎样,我还是想知道如何打印make的一个测试的输出。

回答

1

尝试获得输出到一个变量: 结果= sh脚本:“让测试ubuntu14”,returnStdout:真

刚刚打印可变 打印结果