Я вызываю Pylint в контейнере в шаге Jenkins
stage('Linting') {
sh "docker run -v $WORKSPACE:/workspace ${DOCKER_REGISTRY}/${DOCKER_TAG}:latest /workspace/lint.sh"
}
Проблема в том, что он печатает только результат, но никогда не дает сбой Дженкинсу.
Вот файл bash 'lint.sh' для вызова pylint внутри контейнера:
#!/bin/bash
awd=$(pwd)
for file in $(find . -name '*.py'); do
filename=$(basename $file)
if [[ ${file:(-3)} == ".py" ]] && [[ $filename = *"test"* ]] ; then
echo "perform PEP8 lint (python pylint blah) for $filename"
cd $awd && cd $(dirname "${file}") && pylint "${filename}"
fi
done
Ограничение: я должен вызвать docker и запустить тест, потому что я использую внешние Jenkins (Cloudbees) для получения библиотек пипсов.