2016-04-18 8 views
6

プロジェクトに利用可能なランナーが複数ある場合、gitlab ciはどのランナーを使用するかをどのように決定しますか?gitlabはジョブに使用するランナーをどのように決定するのですか

私はomnibus gitlab 8.6.6-eeをインストールしており、2人のランナーが設定されています。ランナーは、異なるコンピューター上で実行されていることを除いて、同じです(ドッカー画像、設定など)。

両方ともアイドル状態で、いずれかのジョブが実行できるジョブがある場合は、どちらが実行されますか?

+0

多かれ少なかれ(事実上)にランダムであることが明らかになったのはなぜテストを作成しませんプロジェクトをビルドし、いくつかのビルドを実行しますか?私はそれが最初に利用可能なランナーを選ぶと思います、そして、複数のランナーがアイドルであるなら、それはランダムに選びます。 – BrokenBinary

答えて

2

Rubinumの回答に追加するには、「最初の」ランナーは、すべての条件を満たす最初にチェックインするランナーになります。たとえば、ラベルによって特定のジョブが実行されているランナーが制限される可能性があります。

ランナーは、X秒ごとにgitlabサーバーに問い合わせて、ビルドがあるかどうかをチェックします。ビルドキューに入れられ、複数の出会いの基準があるかどう、最初はコメントに答えるために

アップデートを勝つ依頼する:

ランナーは、ステータスを構築得るためにCIのAPI http://docs.gitlab.com/ce/ci/api/builds.htmlを介して通信します。これは最終的にジョブが最後の仕事を終えたときとそれが確認するためにmsxの量に基づいて走者の多かれ少なかれランダムな選択になることを暗に意味するでしょう。

は完全に質問に答えるために:

クレジットは、コードを掘りとx = 3thisthisに基づいていることを発見した後BM5kに行きます。また、ことがわかった:

そのランナーが選択された後、ドッキングウィンドウ+マシンランナーが使用するマシン

)はmachine selectionが同様

+0

興味深い。コード内でどこが起こるか知っていますか? – BM5k

+0

そして、あなたが正しく理解しているかどうかを確認するために、サーバーは実際にどのランナーを使用するのかを「決定」していないと言っています。そのランナーが投票する次のランナーに、 )。 – BM5k

+0

上記のコメントに合わせて編集された回答。私はコードで 'x'の数が設定されている場所を見つけませんでしたが、これは設定されているプロジェクトですhttps://gitlab.com/gitlab-org/gitlab-ci-multi-runner/tree/master 。 –

1

Gitlab CIは、利用可能なランナーにジョブを割り当てます。ランナーが忙しいために利用できない場合、Gitlab CIは利用可能な他のランナーにジョブを割り当てます。あなたの場合、それは常に最初のランナー(それが誰であれ)にジョブを割り当てます。あなたが特定のランナー/ mashineの実行を指定する場合は

その後、私の意見では私のポストhere.

を見て、そのあなたはthatsのため、ドッキングウィンドウを使用している場合は、ビルドを実行するランナーか分からないことが良いです走者/ドッカーのアーキテクトの利益。

+0

が「最初」のランナーですか? – BM5k

関連する問題