📘
JenkinsでNodeがオンラインかどうかを確認する方法
概要
- JenkinsのNodeが時々勝手に途切れてオフラインになることがある
- オフラインを検知して再起動や通知をしたい
- そのための検知方法がないか調べた
内容
RestAPIを使用する方法
以下のようにnodeのJson情報を取ってきてjqで要素だけ取ってくるのがいい
curl --silent $JENKINS_URL/computer/$JENKINS_NODENAME/api/json | jq .offline
返ってくるJsonは以下記事が参考になる。
また認証が必要な場合は-u
オプションでユーザ名とAPIトークンを付与するといい。
JenkinsCLIではだめ
JenkinsCLIで該当のものがないか調べてみたがオンラインかどうかをピンポイントで取得するものはなさそう?(多分)
「Jenkinsをオンライン(またはオフライン)にする」といったコマンドや「JenkinsNodeを再接続する」というコマンドは与えられる。このあたりを使えば再接続するといったことは可能かもしれないが未検証。
実行で失敗取ればいいんじゃない?
実行してみて失敗内容を読み取ればDisconnect読み取れるんじゃない?というラジカルな方法もありそう。以下コード転記する。
online_nodes = nodesByLabel label: "jenkins-slave-3", offline: false
if (online_nodes) {
echo "online"
} else {
echo "offline"
}
参考リンク
Discussion