JenkinsってWeb系のひとだけが使って便利なやつだろー?組込みだから関係ないもんねー?なんて思っていませんか。
そんなことはありません。組込みだって活用は可能なんです。だって組込みは、
- クロスコンパイルが当たり前
- 開発環境(有料)のライセンスの都合で、ビルドPCをみんなで使いまわしている
……負荷状況に応じてビルドするマシンを選択してくれたらいいのに! - 開発環境の都合で、OSごとにビルドマシンを用意している
……マシンが多くて管理が面倒くさい! - 開発環境に新しくアプリをインストールするのは嫌だ
なんてこと、ありますよね。Jenkinsならこれを楽に解決できちゃうるんです。
Jenkinsの特徴
ざっくり言ってしまうと、Jenkinsはちょっと賢いcrontabです。 ちょっと賢い部分というのは、
- 処理を開始するトリガに指定した時刻、周期が設定できる
(…cronに似た書式で設定可能) - 処理を開始するトリガにgitやsubversionが更新されたタイミングを簡単に設定できる
(…git hookスクリプトを使用) - 手動でブラウザのUIから処理を開始することができる
- Master-Slave構成が容易に構築できて、分散ビルドもできちゃう
(…Slaveにはインストール不要!) - ビルドマシンがWindowsでも大丈夫
(…Javaが動けばOK) - 複数のマシンのうち、特定のマシンでビルドする設定も簡単(…※1)
- ビルド結果をブラウザで簡単に確認できる
- ビルドした成果物をブラウザで取得できる
- Slaveノード(ビルドマシン)にgitやsubversionがインストールされていなくても、git/subversionの連携が可能!
(…Jenkinsのプラグインを使えば)
というところです。
※1:Slaveノードに「ラベル」を設定でき、処理(ジョブ)を動作させるノードをラベルで指定可能です。 ラベルを使うことでWindowsでなくLinuxで処理をするとか、 特定のマシンを指定して処理をさせることも可能になります。
組込み用ビルドマシンをJenkinsで活用する
Jenkinsは、Master-Slave構成を取ることが出来ます。 MasterノードにはJenkinsをインストールする必要がありますが、Slaveノードにはインストールの必要がありません。 Slaveノードとして動作させるには、
- MasterノードからSlaveノードにSSHで接続ができる(NAT環境は不可)
- SlaveノードでJavaアプリケーション(Java Web Start)が実行できる。(NAT環境もOK)
のどちらかの条件さえ満たしていればよいのです。 Windowsマシンの場合は、Java Web Startを使えばOKです。特に設定は不必要で(※)Jenkinsのブラウザの設定画面から、「jlnp」とかかれたリンクをクリックするだけで起動できます。
(※:環境によってはNATのポート開放や、Firewall設定は必要です)
Jenkinsを使うのに必要なことって?
先に書いたように、「Jenkinsはちょっと賢いcrontab」です。 そのため、ビルドしたり、自動テストしたり、組込み基板に焼きこんだり、したいというならば、それを実行するコマンド/バッチファイルを作成する必要があります。 逆に言えば、コマンドを叩いてできることなら、なんでも連携できちゃいます。
まとめ
というわけで、組込み系でもJenkinsは活用可能です。どんどん活用しましょうよ!!お願いします、、、
インストール方法は他のサイトにお任せいたします…