web-dev-qa-db-ja.com

KarmaRunnerをJenkinsCIに接続します

Angular-Jasmine-KarmaスタックをJenkinsに接続する方法を理解するのを手伝ってください。 Karma(néTestacular)とJasmineでテストするAngular.jsWebアプリがあります。 Angular Tutorial のように見えます。 Jenkins継続的インテグレーションを使用してテストしたいと思います。

これまでのところ、チュートリアルに従ってAngular、Jasmine、Karmaをインストールしました。 Jenkinsをインストールしました。それぞれを独立して動作させることができます。私が見たところ、KarmaはJenkinsが取り込んだXMLファイルを出力する必要があるように見えますが、Karmaは一貫してファイルを出力しておらず、これを概念的に理解していません。ジェンキンスはどの時点でカルマと呼んでいますか?

良い答えは、ジェンキンスでカルマテストを行うために必要な部分を概説するでしょう。

念のため、これが私の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'
    }

  });
};
17
user74305

まず、以下をリストしたkarma.conf.jsファイルが必要です。

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

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

browsers: ['PhantomJS'],

singleRun: true

reportersキーの下にある最も重要な項目は、junitです。これは、Karma出力をXMLファイルに変換するアドオンです。 Jenkinsがテスト出力を解析するには、テスト出力が特定のXML形式である必要があります。このXMLファイルの出力場所は、junitReporterキーを使用して構成します。 browsersキーで、PhantomJSを指定していることを確認してください。これは、JenkinsサーバーにChromeまたはFirefoxのインスタンスがない可能性が高いためです。singleRunキーは、テスト前にKarmaサーバーが起動されることを確認しますテストが終了すると実行され、シャットダウンされます。

次に、次のコマンドを実行して、次のすべてのノードモジュールがサーバーにインストールされていることを確認します。

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サーバーには次のURLでアクセスできます。

http://server-ip-address:8080

先に進む前に、「EnvironmentInjectorプラグイン」と「Junitプラグイン」がインストールされていることを確認してください。それが表示されたら、Jenkinsホームページの左側にあるNew Itemをクリックします。ジョブに次のパラメータを設定します。

enter image description here

「プロパティコンテンツ」を使用すると、サーバーでJenkinsにPATHを割り当てることができ、その下の「コマンド」セクションでkarmaキーワードを使用できます。 「コマンド」セクションは、karma.conf.jsファイルが存在するフォルダーにcdしてKarmaを起動するようにJenkinsに指示します。

上記のkarma.conf.jsの例でoutputDiroutputFileの値を使用する場合は、「テストレポートXML」の入力値を保持できます。それ以外の場合は、XML結果ファイルが生成される場所への新しいパスを反映するように変更します。

これで、Jenkinsでこのジョブを実行するたびに、合格したかどうかと、テストの結果である広告申込情報を確認できます。

19
Lloyd Banks

ビルドツールとしてMavenを使用していますか?もしそうなら、見てください: https://github.com/eirslett/frontend-maven-plugin 。テストを実行するため、Jenkinsは結果を表示できます。

3
Kamil R