2017-12-12 11 views
0

Jenkins Pipelineに問題があります。それが言うので、私は、それが動作する方法を正確に理解していないJenkins Pipelineでステージのディレクトリを並行して実行する問題

pipeline { 
    agent none 
    stages { 
     stage('Build') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo "checkout first app" 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "checkout second app" 
        } 
       } 
      } 
     } 
     stage('Test') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo 'test First app' 
        } 
        post { 
         always { 
          junit 'build/*.xml' 
         } 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "test second app" 
        } 
        post { 
         failure { 
          echo "failure" 
         } 
        } 
       } 
      } 
     } 
     stage('Deploy') { 
      echo "Deploy all 
     } 
    } 
} 

[First app] Running on maître in /var/lib/jenkins/workspace/My Project 
[Second app] Running on maître in /var/lib/jenkins/workspace/My [email protected] 

しかし、テスト段階のワークスペーススイッチでは、私は私が並行してチェックアウトし、テストしたい2つのアプリケーションがあります。

[Second app] Running on maître in /var/lib/jenkins/workspace/My Project 
[First app] Running on maître in /var/lib/jenkins/workspace/My [email protected] 

私のテストの段階は関係ありません。

この問題を解決するにはどうすればよいですか?

答えて

1

各パラレルステップについて、実行中に、自分のJenkinsが、あなたが見たようにワークスペースを複製します。

コードをチェックアウトするためのパラレルステップとテスト後のパラレルステップを同時に行うことはできません。 2つの並行することなく、チェックアウトとテストを同じ手順で試すことができます。一つだけ並列:

agent none 
    stages { 
     stage('Build&Test') { 
      parallel { 
       stage('First app') { 
        agent any 
        steps { 
         echo "checkout first app" 
         echo "test first app" 
        } 
       } 
       stage('Second app') { 
        agent any 
        steps { 
         echo "checkout second app" 
         echo "test second app" 
        } 
       } 
      } 

しかし、同じパイプラインの下のコードの異なるリポジトリをミックスすることをお勧めではありません。

+0

あなたの答えに感謝します。興味深いので、2つのパイプラインを作成し、複数のパイプラインで実行することをお勧めします。 –

+0

これは最適なオプションです。各リポジトリの個々のパイプラインです。並列に実行する場合は、親パイプラインを使用する必要がありますが、子プロセスにはまだ異なる作業領域があります。答えを検証することを忘れないでください;) –

関連する問題