Джест Дженкинс покрытие - PullRequest
0 голосов
/ 02 ноября 2018

Итак, я успешно провожу тест на шутку в Дженкинсе. Теперь у нас есть несколько старых проектов с нулевым покрытием, и я хотел бы начать собирать информацию об измененных файлах.

Итак, вот мой сценарий, сегодня у меня 0% покрытия по сравнению с разрешением 100 строк кода, завтра я добавляю 10 строк кода, теперь я хочу убедиться, что имеется 10 надлежащих покрытий для 10 вновь добавленных строк кода.

Если нет покрытия 10 новых строк, я хочу завершить сборку и заставить разработчика написать контрольный пример.

Если на уровне строки это невозможно, я мог бы также иметь дело с уровнем файла, поэтому, если файл изменился, он должен иметь покрытие, например.

Возможно ли что-то подобное?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я смог понять это.

Я настроил экземпляр sonarcloud и проверил свою ветку и PR на соответствие правилам установки.

От Дженкинса я теперь могу сделать вызов API для сонара, чтобы получить отчет об анализе только нового кода. Исходя из этого, я могу отказаться от сборки или сохранить ее работоспособной.

В Дженкинсе я впервые запускаю обычное сканирование сонарного облака,

затем со следующим шагом я получаю результаты проверки качества:

sh "cat .scannerwork/report-task.txt"
def props = readProperties file: '.scannerwork/report-task.txt'
def sonarServerUrl = props['serverUrl'].replaceAll('https://', '')
def ceTask
def analysisId
timeout(time: 1, unit: 'MINUTES') {
    waitUntil {
      def response = sh(script: """
          curl -v -X POST https://${SONAR}@${sonarServerUrl}/api/ce/task -d "id=${props["ceTaskId"]}"
        """, returnStdout: true)
        ceTask = readJSON text: response
        analysisId = ceTask["task"]["analysisId"]
        return "SUCCESS".equals(ceTask["task"]["status"])
    }
}

def response2 = sh(script: """
    curl -v -X POST https://${SONAR}@${sonarServerUrl}/api/qualitygates/project_status -d "analysisId=${analysisId}"
  """, returnStdout: true)

def qualitygate =  readJSON text: response2

Это оставит меня с массивом QualityGate, где я могу проверить статус, и мой последний шаг делает это:

if ("ERROR".equals(qualitygate["projectStatus"]["status"])) {
    error  "Quality Gate failure"
}

Это приведет к ошибке задания jenkins и будет проверять только что добавленный код с настройками правил в сонаре.

0 голосов
/ 07 ноября 2018

Да, вы можете, вы можете использовать плагин Cobertura Coverage Report в Jenkin, чтобы настроить пороговые значения, по которым вы не сможете выполнить сборку при выполнении действия после сборки в процессе сборки.

Доступны следующие пороговые значения:

  • пакет
  • строк
  • 1012 * условные *
  • Методы
  • файлы

Наша настройка настроена таким образом, что каждый приведенный ниже запрос на сборку создается отдельно, и если указанные ниже пороговые значения не выполняются, сборка завершится неудачно, поэтому мы не сможем объединить ее в разработке.

enter image description here

...