Подключить карьерный бегун к Jenkins CI

Помогите мне понять, как соединить мой стек Angular -Jasmine-Karma с Дженкинсом. У меня есть веб-приложение Angular.js, которое я тестирую с помощью Karma (né Testacular) и Jasmine. Он выглядит так же, как Angular Tutorial. Я хочу проверить его с помощью непрерывной интеграции Jenkins.

До сих пор я установил Angular, Jasmine и Karma согласно учебнику. Я установил Дженкинса. Я могу заставить каждого работать независимо. Из того, что я побледнел, кажется, что Карма должна выводить XML файл, который глотает Дженкинс, но Карма не выводит файл последовательно, и я не понимаю этого концептуально. В какой момент Дженкинс называет Карму?

Хороший ответ набросал бы фрагменты, необходимые для тестирования Кармы в Дженкинсе.

На всякий случай, вот мой конфиг Karma. Он был искалечен во имя отладки.

module.exports = function(config){
  config.set({
    basePath : '../',

    files : [
      'app/lib/angular/angular.js',
      'app/lib/angular/angular-*.js',
      'app/js/**/*.js',
      'test/unit/**/*.js'
    ],

    exclude : [
      'app/lib/angular/angular-loader.js',
      'app/lib/angular/*.min.js',
      'app/lib/angular/angular-scenario.js'
    ],

    autoWatch : true,

    frameworks: ['jasmine'],

    browsers : ['Chrome'],

    plugins : [
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-script-launcher',
            'karma-jasmine'
            ],

    reporters : ['dots', 'junit', 'coverage'],

    junitReporter : {
      outputFile: 'test_out/unit.xml',
      suite: 'unit'
    }

    coverageReporter : {
      type: 'cobertura',
      dir: 'coverage/',
      file: 'coverage.xml'
    }

  });
};

Ответы

Ответ 1

Сначала вам нужен файл karma.conf.js, в котором указано следующее:

reporters: ['progress', 'coverage', 'dots', 'junit'],

junitReporter: {
    outputDir: 'karma-results',
    outputFile: 'karma-results.xml'
},

browsers: ['PhantomJS'],

singleRun: true

Наиболее важным элементом под клавишей reporters является junit. Это надстройка, которая будет транслировать выходы Karma в файл XML. Ваши тестовые выходы должны быть в определенном формате XML, чтобы Дженкинс разбирал его. Вы настраиваете местоположение вывода этого XML файла с помощью клавиши junitReporter. В ключе browsers убедитесь, что вы указываете PhantomJS, поскольку, скорее всего, ваш сервер Jenkins не будет иметь экземпляр Chrome или Firefox. Клавиша singleRun гарантирует, что сервер Karma запускается до запуска тестов и завершения работы после завершения тестов.

Затем убедитесь, что все следующие модули node установлены на вашем сервере, выполнив следующие команды:

npm install -g karma-cli
npm install -g karma --save-dev
npm install -g phantomjs 
npm install -g karma-jasmine --save-dev 
npm install -g karma-phantomjs-launcher --save-dev
npm install -g karma-coverage

Посетите ваш сервер Jenkins через браузер. Вы можете связаться с вашим сервером Jenkins на

http://server-ip-address:8080

Прежде чем двигаться вперед, убедитесь, что у вас есть "Environment Injector Plugin" и "Junit Plugin". После этого нажмите New Item в левой части домашней страницы Jenkins. Для вашей работы задайте следующие параметры:

введите описание изображения здесь

"Содержимое свойства" позволяет назначить Jenkins PATH на вашем сервере и позволяет использовать ключевое слово karma в разделе "Команда" под ним. Раздел "Команда" указывает Дженкинсу на компакт-диск в папку, в которой находится ваш файл karma.conf.js, и запускать Карму.

Если вы используете значения outputDir и outputFile в приведенном выше примере karma.conf.js, вы можете сохранить входное значение "Test report XMLs". В противном случае измените это, чтобы отразить новый путь к тому, где будет создан ваш файл результатов XML.

Теперь, всякий раз, когда вы запускаете это задание в Jenkins, вы сможете узнать, прошел ли он, а также результаты кампании из ваших тестов.

Ответ 2

Используете ли вы maven как инструмент построения? Если да, взгляните на: https://github.com/eirslett/frontend-maven-plugin. Он запускает тесты, поэтому Дженкинс может показать результаты.