Я нашел 2 способа сделать это:
- Использование Hex-пакета JUnit formatter вместе с junit шаг после конвейера
- Использование covertool вместе с Cobertura Jenkins pluing
Option 1
Это решение работает и довольно приятно.Это заставляет меня изменить test_helper.exs
, но это незначительное неудобство в целом.Это хорошо, но он предлагает только самые основные отчеты, и для меня это то, где он терпит неудачу.
Опция 2
Опция, с которой я решил пойти.Да, создание Jenkinsfile
работы для Кобертуры было кошмаром, особенно потому, что в предыдущих версиях это было даже невозможно и потому что повсюду разбросана противоречивая информация.
Однако, как только вы начнете это Jenkinsfile
, вы сможете разорвать эти сладкие сообщения из Кобертуры.Cobertura был создан с учетом Java, в этом нет двух способов.В отчетах вы видите такие вещи, как покрытие класса и тому подобное, но вы можете легко перевести, что делают модули.Интерфейс предлагает намного больше информации и отслеживает охват с течением времени, что я действительно хочу.
Для дальнейшего уведомления, вот мое Jenkinsfile
:
pipeline {
agent any
environment {
SOME_VAR = "/home/deployer"
}
stages {
stage("Build") {
steps {
sh "MIX_ENV=test mix do deps.get, deps.compile"
}
}
stage("Test") {
steps {
sh "mix test --cover"
}
}
stage("Credo"){
steps{
sh "mix credo --strict"
}
}
stage("Deploy"){
when{
expression{
env.BRANCH_NAME == "master"
}
}
steps{
sh '''
echo "Deploy with AWS or GCP or whatever"
'''
}
}
}
post{
always{
cobertura coberturaReportFile: "coverage.xml"
}
}
}
Из уведомления: 1Я очень нацистский со своим кодом, поэтому я также использую Credo.Вы также можете настроить его так, чтобы не разрывал весь конвейер, потому что вы пропустили новую строку в конце файла, но, как я уже сказал, я довольно нацистский со своим кодом.2. Этап развертывания выполняется только в том случае, если выдвинутая ветвь имеет значение Master.Есть и другие способы сделать это, но я обнаружил, что такой способ для небольшого проекта был достаточно хорош.
В целом мне пока нравятся covertools, но я не знаю, имеет ли первое решение такой же потенциал.По крайней мере, я этого не видел.
Надеюсь, этот пост поможет!
Оригинальная тема: