2017-06-12 1 views
0

私はこのようになり、宣言ジェンキンスパイプライン、作成しています:入力時にタイムアウトが発生した場合、Mark Jenkinsが成功するか? (宣言型パイプライン)

pipeline { 
    agent { 
     label 'mylabel' 
    } 
    stages { 
     stage('Install dependencies') { 
      milestone() 
      steps { 
       sh "yarn install" 
      } 
     } 
     stage('Lint files') { 
      steps { 
       sh "eslint src" 
      } 
     } 
     stage('Create bundle') { 
      steps { 
       sh "yarn run build:server" 
       sh "yarn run build:client" 
      } 
     } 
     stage('Publish') { 
      steps { 
       timeout(time: 15, unit: 'SECONDS') { 
        input(message: 'Deploy this build to QA?') 
       } 
       // deployment steps 
      } 
     } 

    } 
} 

をタイムアウトステップが失敗した場合、我々は、このビルドを展開したくないので(ただし、素晴らしい作品、または誰もボタンを押していないなど)、ビルドにはステータス「中断」がマークされます。残念なことに、これは、例えばGithubがプルリクエストを「チェックに失敗しました」とマークすることを意味します。

timeout()ステップの前にあったステータスでビルドを宣言する方法はありますか?例えば。ビルドがタイムアウトステップまで成功した場合は、タイムアウトが発生しても成功とマークされます。

答えて

1

ユーザーコミットがない場合、ビルドを開始したくないという状況があります。メッセージまたはユーザーに対するscmトリガー防止のバグが原因です。 次に、NOT_BUILTの結果でビルドに失敗します。

多分これはまた、あなたの状況のた​​めに働くだろう

この構文は、宣言型のパイプラインのために使用することができるようにそれはいないようです

try { 
    stage ('wait') { 
     timeout(time: 15, unit: 'SECONDS') { 
      input(message: 'Deploy this build to QA?') 
     } 
    } 
} catch (err) { 
    def user = err.getCauses()[0].getUser() 
    if('SYSTEM' == user.toString()) { //timeout 
     currentBuild.result = "SUCCESS" 
    } 
} 
+0

スクリプトで次のように試してみてください、私は 'WorkflowScriptを取得:38:ステージ@行38、列9を期待する。 38行目はtryブロックです。 –

+0

私は宣言的なパイプラインでtryがstageブロック内にあるべきだと思います。 このスニペットは、パイプラインジョブでインラインパイプラインスクリプトとしてテストされました –

+0

ステージ内、ステップ内、それらのどれも動作していないようです。 –

関連する問題