ベースラインブランチに対してPowerShellを介してKarmaをEnvironment::Exit(1)
実行すると、結果に失敗したテストがある場合に実行された場合と同じようにPowerShellが反応します。これにより、残りのコンポーネントを実行せずにJenkinsビルドが途中で失敗します。これをバイパスして、正当な問題が発生した場合、ターゲットブランチ(コード変更を含むブランチ)に対してkarmaを実行したときに失敗したテストが見つかった場合、または新しい行のコードカバレッジパーセンテージが必要な最小値よりも低い場合にのみジョブが失敗するようにします。
私はJenkins、PowerShell、およびKarmaと協力して、Webアプリケーションのコードカバレッジテストを提供しています。Jenkinsには、カルマを次のように実行するPowerShellタスクがあります。
ジョブでは、2つのブランチをチェックアウトしています(1つはベースラインとして機能し、もう1つにはコード/テストの更新が含まれています)。すべてのNuGetパッケージを復元してから、ベースラインブランチのソリューションをビルドします。次に、カルマを実行して現在のカバレッジを取得します。次に、ターゲットブランチのソリューションを構築し、続いてKarmaを実行してコードカバレッジを取得します。SonarQubeを使用して、結果を比較し、新しいラインカバレッジを提供しています。
私がすでに試したこと:
-ErrorAction SilentlyContinue
karma start
| $true
します|| $true
karma start
& $nodePath $karmaPath start $karmaTest --log-level debug
$nodePath
node.exeへの単なるファイルパスです
$karmaPath
カルマへの単なるファイルパスです
$karmaTest
karma.conf.ci.jsファイルへのファイルパスです
失敗する理由は、返された終了コードが原因です。Jenkins bashスクリプトでコマンドを実行している場合、Jenkinsは残りのすべてのタスクをキャンセルします。ユニットテストに失敗した場合でも、とにかくビルドに合格するべきではありません。それらがもろい場合は、テストをリファクタリングすることをお勧めします。
この問題を回避するには、テストスクリプトの実行後にコマンドをパイプ処理します。例えば
次のように大まかに定義されたpackage.jsonでスクリプトが定義されているとします。
scripts:{
ng: ng;
install: npm install;
test-ci: ng test --karma-config karmaconfig --code-coverage
build: npm build
}
これで、package.jsonで定義されたスクリプトを利用することで、jenkinsbashスクリプトは次のようになります。
npm run install
npm run test-ci || echo "Tests Failed"
npm run build
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加