LoginSignup
1
1

More than 3 years have passed since last update.

iOSアプリCI構築メモ_Jenkins+rbenv+bundler+fastlane

Last updated at Posted at 2020-06-29

はじめ

本メモは、業務でiOSアプリをテスト実行などができるように、CI構築について書いたものです。
実際に会社のMac miniで構築したが、コロナウイルスにより在宅ワークをすることになったので頓挫しました。
せっかく調べた物なので、メモだけでもアウトプットします。

各種ツール

Jenkinsとは

Jenkinsは、CIツールの一つで設定したジョブを実行することでShellを動かすことができます。
例えば、以下のことができます。

  • Gitでpushしたタイミングでジョブを実行することができる
  • 指定したGitリポジトリをクローン、特定のブランチをチェックアウトしてshellを実行することができる

rebenvとは

Rubyのバージョンを切り替えることができるツールです。
ここでは、Bundlerと呼ばれるコマンドを実行させるために、Rubyのバージョンを柔軟に指定します。

bundlerとは

Bundlerとは、gem専用のパッケージ管理ツールです。
Gemfileに記載されたパッケージをインストールする時に使用しています。

fastlaneとは

 fastlaneでは、iOSアプリの自動リリース、自動テスト、スクリプトの実行など色々できます。

セットアップ

Jenkinsのセットアップ

Jenkinsをインストールします。

brew install jenkins

Jenkinsを常時起動して欲しので設定します。

ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

jenkinsの初期設定はhttp://localhost:8080/なのでブラウザで開いて下さい。
もし、httpアドレスを変更したい際は、homebrew.mxcl.jenkins.plistの中身を編集すればいいです。

Admin権限のユーザを生成します。
特別な操作はなくて、以下の文献通りすればできると思います。
Jenkinsを使ってiOSの自動ビルドおよびテストをする(Jenkins準備編)

jenkinsが各種コマンドを実行できるように、環境変数を設定します。
スクリーンショット 2020-03-12 12.18.25.png

スクリーンショット 2020-03-12 12.21.23.png

次にJenkins上でRubyのバージョンが変更できるようにrebenvのプラグインを入れます。
Jenkins > Jenkinsの管理 > プラグインの管理でプラグインの画面が開けます。
以下のプラグインをインストールしてください。

  • rbenv plugin

ジョブの作成

 新規ジョブ作成を選択してジョブを作成しましょう。
スクリーンショット 2020-03-09 18.26.26.png
適当名前を付けてフリースタイル・プロジェクトのビルドを選択して下さい。

ジョブの管理画面が表示されると思うので、動作確認を行なってみます。
私の場合は以下のように設定して保存しました。

  • ソースコード管理 Gitを選択
     リポジトリURL:https://hoge.com/hoge/hoge-test.git
     ブランチ指定子:*/develop
     ※説明の便宜上、架空のGitリポジトリを指定しています。
  • ビルド環境  rbenv build wrapperにチェック
     ※rebenvのプラグインがインストールされていたら、追加されるはずです。
     The Ruby version:2.7.0
     Preinstall gem list:bundler
  • ビルド  シェルの実行を選択
     ※bundlerの設定とfastlaneの設定を後にやります。今はビルド確認したいだけなので空でも問題ありません。

ビルド実行

 ジョブの設定が完了したらビルド実行しましょう
ビルドが成功すると青のマーカーが着きます。
ビルド内容を詳しく知る方法としてコンソールがあるので確認することができます。
もし、ビルドに失敗したら設定を見直して下さい。
スクリーンショット 2020-03-12 15.57.35.png

rbenvのセットアップ

jenkinsとは別に手元の環境でrbenvを動かしたいので準備します。

# Jnekinsと同様rbenvをinstalします。
brew install rbenv ruby-build
# rubyのバージョンもJnekinsに合わせます。
rbenv install 2.7.0
rbenv global 2.7.0

rubyのバージョンが切り替わっているか確認します。

$ rbenv versions
  system
* 2.7.0
$ ruby -v
ruby 2.7.0

rbenv上ではバージョンが切り替わったが、rubyではバージョンが変更されない場合があるかもしれません。
Rubyコマンドの参照先を変更する必要があるかもしれないので、以下の記事を参考にして下さい。
Rubyのバージョンが切り替わらない時の対処法!

bundlerのセットアップ

bundlerをインストールします。

$ gem install bundler

Gitリポジトリにbundlerで実行するGemfileを生成して設定を書きます。

# Gemfileの雛形ファイルを生成する
$ rbenv exec bundle init
Gemfile
source "https://rubygems.org"

gem 'fastlane',  '2.143.0'
gem 'fastlane-plugin-xcodegen', '0.1.0'
gem 'cocoapods', '1.9.0'

Gemfileから一括でインストールします。

$ rbenv exec bundle install --path=vendor/bundle

fastlaneのセットアップ

fastlneを導入しましょう

$ rbenv exec bundle exec fastlane init

Fastfileが生成されるので、設定を書きましょう。
なお、このファイルはRubyの構文が書けます。

fastlane/Fastfile
default_platform(:ios)
platform :ios do
  # fastlaneの処理が開始される前に一度だけ実行する
  before_all do
   # ファイルパスや各種設定のパラメータを定義するときに書きます。
  end
  desc "動作確認用"
  lane :operation_test do
   # cartahge、xcodegen、cocoapods、test実行、ipaファイルの生成など書いていきます
  end

Fastffileのoperation_testを指定して動作確認してみましょう。

rbenv exec bundle exec fastlane operation_test

動作がうまくことが確認できたら、これらのことをJenkinsで行いたいので、Gitリポジトリに反映させましょう。
Gemfileとfastlaneディレクトリ内のだけでいいです。

Jenkinsでfastlaneを動作させる

前回作成したジョブを使ってfastlaneを動かしてみましょう。
ビルド> シェル実行に以下のようなスプリプトを記述して保存して下さい。

# fastlaneは内部でrubyを使っているので、文字コードがUTF-8に設定
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
rbenv exec bundle install --path=vendor/bundle
rbenv exec bundle exec fastlane operation_test

次にjenkinsでビルド実行を行なって、動作確認を行なって下さい。
多分、ビルド成功になると思います。

まとめ

多分今年の後半あたりにGitHub Enterprise ServerにGitHub Actionsが追加されると思います。
https://github.blog/jp/2019-08-21-github-actions-now-supports-ci-cd/

そのタイミングに構築できたらなと思っています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1