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.