2017-03-01 3 views
1

同時は独自のエージェントに基づいています。私の目標は、複数のプロジェクトビルドを並行して実行することです。各プロジェクトビルドは専用コンテナ内で実行されます。私Jenkinsfileは、次のようになります。ジェンキンスパイプライン&ドッカープラグイン - 私は一緒にドッカープラグインで、Jenkinsfileでパイプラインを実装するためのプラグインのパイプライン・スイートでジェンキンスバージョン2.7.1を使用してい

node('docker-agent') { 
    stage('Checkout') { 
     checkout scm 
    } 

    stage('Setup') { 
     build(job: 'Some External Job', node: env.NODE_NAME, workspace: env.WORKSPACE) 
    } 
} 

私は、外部ジョブを呼び出すための要件が​​ありますが、私はcheckout scmステップがnodeworkspaceパラメータしたがって、コードをチェックアウトした同じワークスペース上で実行するために、これを必要とします。私はnodeブロック内build呼び出しをラップすることにより、効果的に執行を浪費することを理解しますが、エージェントはドッカークラウド上のコンテナであり、実際にすべてのリソースを無駄にされていないので、私はそれで大丈夫ですよ。

私のアプローチの一つの問題は、このプロジェクトのビルドの別のインスタンスが2つの段階の間の時間間隔で異なる実行中のインスタンスからの執行を盗むことができたということです。

(1)プロジェクトビルドは同時に実行できますが、(2)各ビルドはdocker-agentというラベルのエージェントの新しいインスタンス上で実行されることを基本的に確認できますか?

私はロックのプラグインを試してみたが、新しいビルドが単純ではなく、独自のエージェントをスピンアップよりも、既存のエージェントのロックを取得するために待機します。

+0

それぞれ1人のエグゼキュータで複数のエージェントを使用するとどうなりますか?ビルドは何をしていますか?私は通常、私のパイプラインにドッカーの作成を使用しています。これは、「私の目標は、複数のプロジェクトビルドを並行して実行することです。各プロジェクトは専用コンテナ内でビルドされます。 –

答えて

0

(そのラベル用ドッキングウィンドウを設定するときには、設定です)あなたのドッキングウィンドウのクラウド環境内の各エージェントの1にエグゼキュータの数を制限し、他は同じエージェント上で実行されているビルドを防ぐため。これにより、エグゼキュータごとに新しいコンテナを開始する必要があります。私はこのようなパイプラインを設計しないだろう、と述べた

。代わりに、stashunstashを使用してチェックアウトとノード間のその他の小さなアーティファクトをコピーし、ノードを実行しないで実行を一時停止できるようにします。

関連する問題