DevOps на Openshift: Использование SonarQube из Jenkins pipeline

Эта статья является продолжением DevOps на Openshift: Автоматизация создания проектов Openshift из Jenkins Pipeline

SonarQube - незаменимый инструмент для проверки чистоты и правильности исходного кода. Продукт не только проводит глубокий анализ кода, но и предоставляет подробные отчёты с рекомендациями по исправлению. Результаты обработки можно отправлять заинтересованным пользователям на электронную почту. Прямо из коробки доступны большое количество дефолтных расширяемых профилей с правилами для различных языков программирования.

Благодаря API анализ кода можно осуществлять через удалённые вызовы, например сборкой Maven. Для проведения анализа кода из pipeline и получения его результатов в Jenkins и SonarQube потребуется сделать ряд настроек:

  • В Jenkins установить плагин SonarQube Scanner for Jenkins

  • Настроить установленный плагин, оставив поле Server authentication token пустым. В качестве Server URL использовать адрес сервиса в Openshift (в случае если Jenkins и SonarQube установлены в одном проекте)

  • В SonarQube добавить WebHook. В качестве URL использовать имя сервиса в Openshift.

  • Вызов из pipeline можно делать следующим образом
stage('Code Analysis') {
      steps {

            withSonarQubeEnv('Sonar') {
                sh "${mvnCmd} sonar:sonar -Dsonar.host.url=http://sonarqube:9000 -DskipTests=true"
            }


      }
    }
    stage("Quality Gate") {
        steps {
            timeout(time: 1, unit: 'HOURS') {
            script {
                withSonarQubeEnv('Sonar') {
                    sleep 20
                    println("QG: start")
                    def qg = waitForQualityGate()
                    println("QG: ${qg.status}")
                    if (qg.status != 'OK') {
                      error "Pipeline aborted due to quality gate failure: ${qg.status}"
                    }
                }
            }
          }
        }
    }

Обратите внимание, что в этой строчке withSonarQubeEnv('Sonar') мы используем имя экземпляра SonarQube, настроенного выше в Jenkins.

Всё это даёт нам возможность детальной проверки кода и прерывание pipeline, если проверка провалилась.

Как итог мы получаем мощный инструмент для детального разбора кода, который запускается прямо на платформе Openshift и достаточно легко интегрируется с CI/CD процессами предприятия.

Благодарности автору этой статьи.

Дальше-больше...

05.12.2018