2015年5月27日水曜日

組込み系こそJenkinsでちょっと便利なビルド環境をつくろう

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は活用可能です。どんどん活用しましょうよ!!お願いします、、、

インストール方法は他のサイトにお任せいたします…