Qiitaで技術ネタを一元管理したいのでブログから移っただけ。相当古いネタなのでご注意ください。
Jenkinsのslave nodeを作ってみたのでメモ。設定方法を書いた記事は多いので省略。
前提
- masterが存在していて、git-scm等のプラグインがすでにインストールされてる
- slave nodeとして追加するマシンはmacosx
やりたいこと
- Jenkins自体のインストール・設定・メンテはしない(他のプロジェクトと一元で管理)
- ビルドをスレーブノード上で実行、成果物履歴をスレーブに残す。
- 他のプロジェクトのジョブと競合したくない、マスターのディスク容量が限られているから食わない
- できればビルド結果をわかりやすくチームメンバに知らせる
Slave Node用マシンの用意
- macって本当にいいかをまじめに検討すべき
- jenkinsのmasterがjenkinsユーザとしてslaveノードにコマンドを送るので、jenkinsユーザでslaveにログインする
- 開発マシンがlinuxでログ等は/home以下のどっかにアクセスする場合(例として/home以下をmkdirする)、macマシンにもjenkinsユーザに/home以下のmkdir権限を与えたい。しかしデフォルトではmacの/home以下にmkdirしちゃいけない(sudo権限も)
- 解決策:http://stackoverflow.com/questions/1362703/how-can-i-use-the-home-directory-on-mac-os-x
- 特別な事情がなければjenkins serverもdev serverと同じosでいい気がする
- slave nodeマシンに入れるもの以外と多い
- 基本的にdevマシンと揃えるべき(ソフトのバージョンまで)
- たまーにsleepしてslave-agentが落ちる
- 対策はよくわからない。sleepさせないようにcaffineを入れている。
ビルド失敗した場合メンバに伝える方法
- もちろんemail飛んできます
- が、メールだと緊急感を伝えられないみんないちいちメール見ない
- 物理的になんか見えるものがあるといいなーと思ったのでこんなの作った(チームの島においてある{と言っても僕のディスプレーの上})
Jenkins Visualizer
- どういうもの
- 写真左上のLED電球が最新ビルドの状態を示す
- 写真右下のLEDバー(10灯)が最近10ビルドの履歴を示す
- それぞれ4色がある
赤:FAIL
緑:RUNNING
青:SUCCESS
黄:UNSTABLE
- コードはこちら
https://github.com/nerocrux/maid-mayuyu/tree/master/jenkins-status
- 使ったもの
- 数年前に買った Arduino Duemilanove
- 評価ボードだけのってるシールド
- フルカラーLEDとLEDバー
http://akizukidenshi.com/catalog/g/gI-00729/
http://akizukidenshi.com/catalog/g/gI-04761/
- 事前準備
- 配線。ものすごく簡単なので省略。基本的にスケッチを書いてLEDを赤・黄・青・緑の4色に点灯できるだけでOK。
- 更にスケッチをもっとまじめに書いて、シリアル通信で、特定のコマンドが送られて来たら、特定の色に切り替えられるようにする
- 運用
- トリガーで使うプログラムを用意(write-jenkins-status-serial.rb)
- Jenkinsのビルド開始時の完了時にwrite-jenkins-status-serial.rbを実行する
- そのスクリプトがjenkinsのAPIをアクセスし、ビルド結果を取得して整形し、シリアル通信でarduinoに送る
- Arduinoのシリアルポートにコマンド(基本的に文字列)が入ってきたらLEDの色を切り替える
- 感想
- LEDが明るく過ぎて眩しい
- 履歴は多分見ない