Coveralls плагин для Дженкинс CI? - PullRequest
0 голосов
/ 18 декабря 2018

Фон

После большой кропотливой работы мы наконец-то получили CI Jenkins, извлекающий код из репозиториев GitHub, и теперь выполняем непрерывную интеграцию, а также развертывание.

Мы получаем код и разворачиваем его, только если все тесты пройдены, как обычно.

Теперь я проверил, что есть ряд плагинов для Java, которые помимо выполнения тестов также делают тестовое покрытие , как Cobertura .

Но мы не используем Java.Мы используем Elixir.

В мире Elixir у нас есть excoveralls , который является фасадом для API комбинезона.API комбинезонов поддерживает jenkins , поэтому вполне понятно, что я нашел бы плагин Coveralls для Jenkins.

Я был не прав.Там нет ничего.

Вопросы

Так что теперь у меня есть тестовая метрика покрытия, которая в принципе бесполезна, потому что я не могу интегрировать ее с Дженкинсом.

Есть ли Erlang /Плагины Elixir, которые можно использовать с Jenkins для покрытия кода?

Я также создал проблему в проектах (которая, похоже, заброшена ...) https://github.com/parroty/excoveralls/issues/167

Ответы [ 2 ]

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

Я нашел 2 способа сделать это:

  1. Использование Hex-пакета JUnit formatter вместе с junit шаг после конвейера
  2. Использование 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, но я не знаю, имеет ли первое решение такой же потенциал.По крайней мере, я этого не видел.

Надеюсь, этот пост поможет!

Оригинальная тема:

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

У меня есть сцена для публикации репортажа в моем Jenkinsfile.Я не уверен, что это метрика, которую вы хотите, но ...

stage('Publish Coverage') {
  when{
    branch 'master'
  }

  steps {
    publishHTML target: [
      allowMissing: true,
      alwaysLinkToLastBuild: true,
      keepAll: true,
      reportDir: 'cover',
      reportFiles: 'excoveralls.html',
      reportName: 'Coverage Report'
    ]
  }
}
...