JenkinsでSlaveを作ってビルドする
久々にデスクトップを買ったのでUbuntuを入れてビルドマシンとして設定してみる。
Slave(Ubuntu14.0.4)
まずJenkinsをインストールする。
[bash] wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’ sudo apt-get update sudo apt-get install jenkins [/bash]
次にMaster-slave間でssh通信するために、公開鍵を受け取る必要があるので、一旦パスワード認証を有効にする。
[bash]
PasswordAuthentication yesに変更
sudo vim /etc/ssh/sshd_config sudo /etc/init.d/ssh restart [/bash]
Host(Mac)
- MacBook Air (11-inch, Mid 2012)
- OS X El Capitan 10.11.6
- brew 1.1.0
Jenkinsのインストール
[bash] brew install jenkins brew services start jenkins [/bash]
brewで楽々インストール・・・と思ったらサービス開始のところで躓いた。
[bash] /Users/phicdy/Library/LaunchAgents/homebrew.mxcl.jenkins.plist: Operation not permitted [/bash]
どうやらtmuxから実行したのが原因らしい。 brew servicesは中でlaunchctlを使っていて、tmux上ではnamespaceが変わってしまうため、launchctlをうまく実行できないとのこと。
参考: launchctl load で Operation not permitted(解決?)
[bash] brew install reattach-to-user-namespace [/bash]
~/.tmux.confに以下を追加
[bash] set-option -g default-command “reattach-to-user-namespace -l bash” [/bash]
鍵設定
scpで鍵を送って登録する。鍵送信後はパスワード認証を無効に戻しておく。
[bash]
ssh-keygen
scp .ssh/id_rsa.pub slave-user@
ここからSlave
cat id_rsa.pub >> ~/.ssh/authorized_keys rm id_rsa.pub exit [/bash]
Slaveの追加
- Jenkinsの管理→ノードの管理→新規ノード作成
- リモートFSルートにリモートのワークスペースのパスを入力
- 起動方法を「SSH経由でUnixマシンのスレーブエージェントを起動」に変更
- ホストにIPを入力
- 認証情報を追加
- 種類をSSHユーザ名と秘密鍵
- ユーザ名をリモートのログインユーザに変更
- 秘密鍵を「Jenkinsマスター上の~/.sshから」に変更
- 保存
おわりに
Android開発のビルドはかなりCPUとメモリを使うので、スペックが低いとビルド中に何もできないことがあった。デバッグ中はAndroid Studioを使うでビルドする必要があるが、それ以外のビルドはSlaveを使うことでかなりリソースを節約できると思う。3万くらいで買えたマシンだったので有効活用していきたい。