本記事の目的
本記事はfastlaneの使い方や詳細を說明するものではなく、fastlaneの導入手順をまとめたものです。
fastlane・match・pemの導入にあたって記事を転々とすることが度々あったのでまとめてみました。
(※詳しいことは公式ドキュメントや参考になる記事を掲載させて頂いているのでそちらからご確認ください。)
本記事でわかること
以下の手順をまとめました
fastlaneの初期設定→fastlane match・pemの組み込み→基本的なfastlaneの使い方
細かい事は以下です。
- プッシュ通知の証明書周りの自動生成
- 証明書とプロビジョニングファイルの自動生成とチームでの共有
- ipaファイルの作成とAppleStoreへのデプロイ自動化
初期設定
Gemfileを作成しよう
cocoapodsのバージョン管理にも便利なGemfileを用いてfastlaneをインストールします。
Gemfileとは?って人はこちらのわかりやすい記事より
ディレクトリはプロジェクトがある階層です
bundle init
これでGemfileが生成されます。
そしてGemfileを修正します
Learn more or give us feedback
# frozen_string_literal: true
source "https://rubygems.org"
# git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# この行を追加
gem 'fastlane'
# gem "rails"
そしてインストールする
bundle install --path vendor/bundle
これで準備が整いました。
fastlaneを導入
ディレクトリは変わらず
bundle exec fastlane init
これで、/fastlaneができたので移動します
中には、AppfileとFastfileが作成されています。
ファイルの說明や詳しいことを知りたい人はこちらの記事を!
次に、Dev Portal と App Store Connect の両方に新しい iOS アプリを作成する必要があるので、以下のコマンドを使用します。
bundle exec fastlane produce -a アプリのBundleID(プロジェクトをXcodeでひらいいて確認できます)
他にもFastlaneでlaneを使用する方法もあるのですが、今回は直接作成しました。
これが成功したら、Appfileを開いて編集して保存します。
app_identifier("アプリのBundleID")
apple_id("AppleDeveloperに登録してあるメールアドレス")
Push通知の証明書周り
push通知を実装する場合に必要なAPNs証明書を周りもfastlaneで解決していきます
(関係ない人は飛ばしてオッケーです)
まず、そもそもAPNs証明書を手に入れるまでの工程を知らない人は下記のサイトなどをみてみてください。
色々ポチポチする場所やわかりにくい用語が多いと気づくはずです。(記事自体はめっちゃわかりやすいです!)
https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb
これをfastlane pemで解決していきます。
gem install pem
インストールを終えたら、以下のコマンドを
pem -a [app_identifier] -u [ Apple ID]
これが完了したら
fastlaneのディレクトリ内に「~.p12」ファイルができています!
また、Devcenterにいけば証明書もできていますし、IDとも紐付いているのが確認できると思います!!!!!!
このp12ファイルをプッシュ通知配信用サーバー、例えばFirebaseなどに配置してあげれば完成です。
ほかにもたくさんのオプションがあるようなので是非用途に合わせて使ってみて下さい。
https://docs.fastlane.tools/actions/pem/
fastlane matchで証明書の作成と管理を行う
次に、リリースの際やチーム開発において複雑な作業である
- コード署名証明書の作成・更新・共有
- プロビジョニングプロファイルの更新
を fastlane match で解決していきたいと思います。
こちらの記事が大変わかりやすかったので参考にさせて頂きました
fastlane match を使用して iOS の証明書管理を行う
####Xcode プロジェクト設定とプライベートリポジトリを作成
証明書作成に入る前に、
Xcode プロジェクト設定「 General > Automatically manage signing 」を無効にしておきます。
また、Gitでプライベートリポジトリーを作成しURLを取得しておいてください。
プライベートリポジトリ名は「プロジェクト名_Certificate」みたいな感じで良いと思います。
####fastlane matchの導入
初期設定を行います
fastlane match init
実行すると以下の質問があるので
1のgitを選択し、gitのURLを聞かれるので先程作成したプライベートリポジトリのURLを打ってください。
それが終ると、Matchfileが作成されるので以下の用に修正して下さい。
app_identifier("アプリのBundleID")
username("AppleDeveloperに登録してあるメールアドレス") # Your Apple Developer Portal username
そしてそれが完了したら、証明書とプロビジョニングファイルを作成します。
以下のコマンドをうつと
//以下のうち該当するものを使用してください
fastlane match development
fastlane match adhoc
fastlane match appstore
Git リポジトリへのパスフレーズが聞かれるので、パスワードを作成しメモしておきます
それが終われば、後は自動的に作成されリポジトリにもプッシュされています!!!!
これで面倒な作業をせずに証明書周辺を終えることができました。
リポジトリから証明書を取得したい場合などの方法はこちらを参考にしていただけますと可能です
fastlane match を使用して iOS の証明書管理を行う
AppleStoreへのデプロイ
次は、ipaファイルの作成・スクリーンショットの作成・AppleStoreへのデプロイなどを自動化させていきます。
といっても私がゼロから説明するよりも大変参考になる記事があるのでそちらを参照して下さい。
[iOSエンジニアならもはや必須になるつつあるfastlaneで自動テストしてみよう]
(https://qiita.com/tamappe/items/3d2c1e00344aef3082d2)
#####Applestoreにコネクトする際に認証エラーが起こった際には環境変数を設定して下さい
- https://qiita.com/koringo2/items/5ba4ba7b4bc0d8557bc0
- https://qiita.com/uhooi/items/b317c3a9af92f86f5c3b
slackとの連携
fastlaneでデプロイしたあとにSlackに通知がいくようにすると便利なのでそれの設定方法も記載します
まずは下記サイトを参考にwebhookのURLを取得して下さい
[slackのIncoming webhookが新しくなっていたのでまとめてみた]
(https://qiita.com/tamappe/items/3d2c1e00344aef3082d2)
https://qiita.com/kshibata101/items/0e13c420080a993c5d16
URLを取得ができたら環境変数を設定しておきます
//envの一覧を確認する
printenv
export SLACK_URL="webhookのURL"
.env.defaultにSLACK_URLの定義が追加されているか一覧で確認する。
そしてFastfileにlaneを追加します。なにをしているのかは見ればわかるはずです。
after_all do |lane, options|
slack(
default_payloads: [],
message: "#{lane} #{options} All OK!",
)
end
error do |lane, exception, options|
slack(
message: exception.message,
success: false
)
end
##おわりに
ということでfastlaneの導入手順をまとめてみました。
CI/CD系の環境構築は最初に組み込むべきですね、、、!