Объединение результатов покрытия C ++ от параллельных этапов в конвейере Дженкинса - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующий Jenkinsfile:

pipeline{
   stages
   {
      stage ("Compile Everything") {/**/} // Code coverage flags turned on
                                          // Stashes compiled test binaries. 
      stage ("Parallel Tests"){
         parallel{
            stage ("Run Tests A-L") {/**/} // These stages unstash and run groups of tests,
            stage ("Run Tests L-Z") {/**/} // causing coverage files to be created.
                                           // I analyze those coverage files via
                                           // gcovr and stash the results as xml.
         }
      }

      stage ("Combine and Publish Coverage") {/**/} // Here I can unstash all of the xml
                                                    // code coverage files, but don't know
                                                    // how to combine them.
   }
}

На последнем этапе «Объединить и опубликовать покрытие» можно ли объединить все xml-файлы, созданные gcovr?

Кто-нибудь решил проблему параллельного тестирования и полностью комбинировал результаты покрытия?

1 Ответ

0 голосов
/ 14 декабря 2018

Следующее решение не так элегантно, как хотелось бы, но лучшее, что я могу придумать.

Используйте lcov вместо gcovr для первоначального создания отчетов о покрытии.Это создает файлы .info, которые lcov могут объединять в один файл .info.

Распакуйте все .info файлы с предыдущих этапов, затем используйте lcov -a, чтобы объединить их в один .info файл.( Ссылка )

Далее, используйте конвертер lcov-to-cobertura, чтобы преобразовать этот файл .info в файл xml, о котором можно сообщить в SonarQube.

...