2017-10-22 7 views
0

のない私は、次のことを達成しようとしている:ジェンキンス:ファイル名を指定して実行セレニティ受け入れテスト失敗

  1. 実行セレニティ(プラスキュウリ)のセットは、ビルドパイプライン
  2. の一環として、テストは関係なく、レポートを収集
  3. テスト失敗の場合のみ、寄稿者に電子メールを送信
  4. このパイプラインがコミットのために受け入れテストに失敗したために、ビルドに失敗しないでください(すべてのテストが合格したかどうかは不明です) CI。ナイトリーで受け入れテストが壊れている場合にだけ失敗したい。心の中のすべてのものとそう

私はビルドを構成しようとオフに設定:

stage ('Serenity') { 
     steps { 
      // For the Delivery CI build don't fail on regression failure 
      sh 'mvn clean verify -pl regression -DskipCuke=false' 
     } 
     post { 
      always { 
       publishHTML([allowMissing: true, alwaysLinkToLastBuild: true, 
       keepAll: true, reportDir: 'regression/target/site/serenity', 
       reportFiles: 'index.html', reportName: 'Serenity', 
       reportTitles: '']) 
      } 
      failure{ 
       echo 'There are regression suite failures.' 
       script { 
        currentBuild.result = 'SUCCESS' 
       } 
       emailext attachLog: true, body: 'Find Attached', 
        compressLog: true, recipientProviders: [[$class: 
        'CulpritsRecipientProvider']], subject: 'Broken Regression Tests', 
        to: '[email protected]' 
      } 
     } 
    } 

私は「成功」にcurrentBuild.resultの値をリセットすることができないとして、それは動作しませんが。だから、私はすべて|| truemvnコマンドにすることができましたが、それは壊れた回帰テストについて電子メールで送ることができないことを意味します。

だから、他の誰かがこれを何らかの巧みな方法で処理しているのだろうかと思っています。ジェンキンスのデフォルトのシェルパラメータをオーバーライドする必要がありますか?

ご迷惑をおかけして申し訳ございません。

答えて

1

私はシェルの周りにtry/catchを置く必要があると思うので(script{}ブロックで実行してください)、あなたの電子メールをキャッチしてください。その後、SUCCESSに設定されたビルドを維持することができます。

1

これは実際には@ Robの提案と少し違った方法で解決されましたが、その鍵はscriptブロックをreturnStatusフラグで使用する必要があることを理解していることでした。私は実際に(不運にも)これが時々失敗することを期待しているので、これをtry-catchにすることを好むので、これを下に分けたいと思うでしょう。

stage ('Serenity') { 
     steps { 
      script{ 
      // For the Delivery CI build don't fail on regression failure 
      def bddPassed = (sh (returnStatus:true, script:'mvn clean verify -pl regression -DskipCuke=false') == 0) 
      if(!bddPassed){ 
       echo 'There are regression suite failures.' 
       def mySubject = "Regression Test Failure: ${env.JOB_NAME} - Build# ${env.BUILD_NUMBER}" 
       def myBody = "Hi<br/>Please go to <a href='${env.BUILD_URL}Serenity'>the Serenity Report</a> to see more<br/>"; 

       emailext attachLog: true, 
       mimeType: 'text/html', 
       body: myBody, 
       compressLog: true, 
       recipientProviders: [[$class: 'CulpritsRecipientProvider']], 
       subject: mySubject, 
       to: 'xxxxxxx' 
      } 
      publishHTML([allowMissing: true, alwaysLinkToLastBuild: true, 
       keepAll: true, reportDir: 'regression/target/site/serenity', reportFiles: 'index.html', 
       reportName: 'Serenity', reportTitles: '']) 
      } 
     } 
    } 
関連する問題