きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

Jenkinsのラベル式

どう使うのが良いのだろうか。


少しだけ触った印象では、
あるジョブを実行してよいノードを条件付けるために使うものに思える。制限するっていうのだから当たり前か。


細かく条件としてのラベルを書くこともできなくはない。
シェルを動かすから、ノードにLinuxラベルを付けて、ジョブのラベル式にもLinuxを入れておく、そんな感じだろうか。


でも、やればやるほどラベルが増える。
bashじゃなくてkshじゃないと動かない?
perl入ってないと正規表現のところ動きません?
やればやるほどてんやわんや。


仮にRHEL6.5ラベルを付けたノードがあり、バージョンアップ対応でRHEL7.1をこさえた別ノードで動作確認をさせるためには、ジョブのラベル式も書き換えないといけない。
なかなか面倒くさい。


ラベルを使い、負荷分散をするのには使える。
まるっきり同一構成の環境を複数ノード作り、それぞれのノードに同じラベルを付ける。
ジョブのラベル式には、その単一のラベルを書く。でも、どちらのノードも混雑してたら、どちらのキューに積まれるのだろうか、試したことがない。この使い方がわりとしっくり来る。


ラベルは、ノードのローリングメンテナンスに使えるかもしれない。


ラベルは、アクセス制御に使えるかもしれない。テストアプリの稼働環境が非スレーブで、そのテスト環境にリクエストを投げつけてよい唯一のスレーブに、それと分かるラベルを付けて制御する形式。
ああ、でも、その唯一のスレーブで動かなくてよいジョブには、どう書けばいいんだろう。ジョブのラベル式には否定を書けるんだっけかな。
なんだかんだ嫌になって、ノード=ラベルになってしまいそうだ。


とりあえず、細かくやればやるほど、直すところが増えるので、やり過ぎないようにしよう。

ノードのラベルは空白区切り、
ジョブのラベル式は&&や||を使って書く。
記号の前後に空白を付けても、裏で作られるラベル空白が取り除かれてるようだ。
試してないけど、A&&BとB&&Aは同じ意味を持つラベル式だけど、裏で作られるラベル式はそのままの文字列で作られるんだろうな、きっと。