iOSユーザーはfastlaneを使うと、testやipaファイルを作るのが自動で出来ると聞いたので早速利用してみることにしました。
ここでは、jenkinsからfastlaneを実行するまでを解説いたします。
jenkinsのセットアップ
自分は、macでhomebrewを使ってインストールしました。
homebrewを使ってインストールした場合は、PCにjenkinsのユーザーが作られず、ログイン中のユーザーに作成されます。
homebrew でインストール
brew install jenkins
今回は、fastlaneで実行するのでjenkinsにgitのpluginが入っていれば、他は特に必要ありません。
・jenkinsがインストールされる場所
/usr/local/opt/jenkins
自動起動の設定
cp -p /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
を実行することで、/usr/local/opt/jenkins/に作成された、homebrew.mxcl.jenkins.plistファイルを~/Library/LaunchAgentsにコピーすることができます。
・自動起動の設定
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
・自動起動の解除
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
を実行することで、PCを立ち上げると自動で起動したり解除したりできます。
再起動方法
launchctl stop homebrew.mxcl.jenkins
launchctl start homebrew.mxcl.jenkins
他に、 webからも実行することができます。
http://localhost:8080/safeRestart
gitからリポジトリをcloneする
jenkinsの左上にある、新規ジョブ作成を選択します。
以下のような画面になるので、
Enter an item name にジョブの名前を入力 -> フリースタイル・プロジェクトのビルド を選択 -> OK
を選択します。
するとジョブの設定画面になるので、
ソースコード管理 -> git
を選択して、リポジトリURLを入力します。
今回はbitbucketを利用して非公開リポジトリを設定したので、ssh接続が必要でした。
のようなエラーが出たら、ssh接続が出来ていないようです。
ssh接続が出来ていても、初めてssh接続する場合は、ここに書かれている
"git ls-remote -h git@bitbucket.org:ユーザー/sample.git HEAD"
のコマンドを実行するとエラーが出なくなります。
エラーが出なければ保存して、ジョブの画面に戻ります。
ジョブの画面からビルド実行を選択します。
エラーが発生せずに完了したら、gitからプロジェクトがクローンされます。
・リポジトリがクローンされる場所
/Users/ユーザー/.jenkins/workspace
workspaceの中にプロジェクトがクローンされます。
jenkinsでfastlaneを実行する
ジョブの画面に戻り、
設定 -> ビルド -> ビルド手順の追加 -> シェルの実行
を選択します。
シェルスクリプトの所に、
fastlane test
もしくは、bundlerを使用してfastlaneを利用している場合は、
bundle exec fastlane test
と設定すれば動き出すはずですが、コンソールを確認すると以下のようなエラーが発生します。
+ bundle exec fastlane beta
/var/folders/md/xg9wzwvj04s8_cv48zg72v0h0000gp/T/jenkins6293955055621288425.sh: line 2: bundle: command not found
Build step 'シェルの実行' marked build as failure
Finished: FAILURE
PATHの設定
原因はbundleのコマンドが無いと言っていますので、PATHが通っていないことが考えられます。
そこで、PATHを通す設定をします。
export PATH=/usr/local/bin:$PATH
これで実行すると、次はまた別のエラーが発生します。。
+ export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+ PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+ bundle exec fastlane beta
/Library/Ruby/Gems/2.0.0/gems/fastimage-2.1.0/lib/fastimage.rb:67: warning: already initialized constant URI::DEFAULT_PARSER
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/uri/common.rb:545: warning: previous definition of DEFAULT_PARSER was here
Looking for related GitHub issues on fastlane/fastlane...
➡️ [33mcharacter encoding: US-ASCII and UTF-8[0m
https://github.com/fastlane/fastlane/issues/8234 [[32mclosed[0m] 5 💬
2 weeks ago
➡️ [33mincompatible character encodings: UTF-8 and US-ASCII in a Jenkins Pipeline[0m
https://github.com/fastlane/fastlane/issues/8680 [[32mclosed[0m] 3 💬
4 weeks ago
➡️ [33mfastlane not working after updating ruby.[0m
https://github.com/fastlane/fastlane/issues/8529 [[32mclosed[0m] 7 💬
4 weeks ago
and 3 more at: https://github.com/fastlane/fastlane/search?q=incompatible%20character%20encodings:%20US-ASCII%20and%20UTF-8&type=Issues&utf8=✓
🔗 You can ⌘ + double-click on links to open them directly in your browser.
ローケルを設定
上記エラーにあるfastlaneのissues:8234を確認するとローケルが設定されていない等のことが書かれています。
そのため以下のようにローケルの設定を追加します。
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
シェルスクリプトの内容
最終的には、シェルスクリプトに以下を設定することになります。
export PATH=/usr/local/bin:$PATH
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
bundle exec fastlane test
これでjenkinsでfastlaneを実行することが出来ました!