drone.io でagentごとに特定のビルドのみ実行するフィルタを設定する
この記事は drone.io Advent Calendar 2017 - Adventar の17日目の記事です。
drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。
特定ビルドを特定のagentに処理させたいということがあるかと思います。例えば重いテストを専用のagentに隔離させるであるとか、Trustedフラグが有効になっていて専用のデバイスが接続されているagentで実行させたいとかです。
agentには環境変数DRONE_FILTER
を設定することでフィルタを設定することができます。
environment: - DRONE_FILTER=repo IN ('drone', 'docker', 'foo', 'bar')
SQLっぽい独自の構文で条件は記述することができます。
DRONE_FILTER=repo == 'drone'
演算子は ==
, !=
, <
, <=
, >
, >=
, AND
, OR
, NOT
, IN
, GLOB
, REGEXP
, BETWEEN
が利用できます。
DRONE_FILTER=repo GLOB 'hoge/some-prefix-*' DRONE_FILTER=repo NOT GLOB 'hoge/some-prefix-*'
と、ここまで書いてなんですが、 drone v0.8ではfilterが動作しないバグがあります ので次のバージョンをお待ちください。