AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

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)

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@:/home/slave-user/ ssh slave-user@

ここからSlave

cat id_rsa.pub >> ~/.ssh/authorized_keys rm id_rsa.pub exit [/bash]

Slaveの追加

  1. Jenkinsの管理→ノードの管理→新規ノード作成
  2. リモートFSルートにリモートのワークスペースのパスを入力
  3. 起動方法を「SSH経由でUnixマシンのスレーブエージェントを起動」に変更
  4. ホストにIPを入力
  5. 認証情報を追加
  6. 種類をSSHユーザ名と秘密鍵
  7. ユーザ名をリモートのログインユーザに変更
  8. 秘密鍵を「Jenkinsマスター上の~/.sshから」に変更
  9. 保存

おわりに

Android開発のビルドはかなりCPUとメモリを使うので、スペックが低いとビルド中に何もできないことがあった。デバッグ中はAndroid Studioを使うでビルドする必要があるが、それ以外のビルドはSlaveを使うことでかなりリソースを節約できると思う。3万くらいで買えたマシンだったので有効活用していきたい。