16

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

オムニバス gitlab 8.6.6-ee インストールがあり、2 つのランナーが構成されています。ランナーは、異なるコンピューターで実行されていることを除いて、同一です (docker イメージ、構成など)。

それらが両方ともアイドル状態で、どちらかが実行できるジョブが入ってきた場合、どちらが実行されますか?

4

2 に答える 2

9

Rubinum の回答に追加すると、「最初の」ランナーは、最初にチェックインし、すべての基準を満たすランナーになります。たとえば、特定のジョブが実行されるランナーをラベルで制限できます。

ランナーは X 秒ごとに gitlab サーバーにクエリを実行し、ビルドがあるかどうかを確認します。キューに入れられたビルドがあり、複数の条件を満たしている場合、最初に尋ねたものが勝ちます

コメントに回答するための更新:

ランナーは CI API http://docs.gitlab.com/ce/ci/api/builds.htmlを介して通信し、ビルド ステータスを取得します。これは最終的に、最後のジョブがいつ終了したか、およびチェックを待機しているx量に基づいて、多かれ少なかれランダムにランナーが選択されることを意味します。ms

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

コードを掘り下げ、thisおよびthisに基づいてその秒数を見つけた後、クレジットはBM5kに送られます。また、次のこともわかりました。x = 3

そのランナーが選択されると、docker+machine runner がどのマシンを使用するか) は、マシンの選択も多かれ少なかれ (事実上) ランダムであることを明らかにします

于 2016-05-16T22:15:49.347 に答える