怠慢プログラマーの備忘録

怠慢でナマケモノなプログラマーの備忘録です。

【iOS】最新fastlane導入[備忘録]

f:id:ka0in:20200306114454p:plain

fastlaneとは

  • iOSのリリース作業を自動化するCUIツール
  • Ruby
  • Fastfileという設定ファイルのLane毎にアクションを記述する

公式サイト引用

fastlane導入

# Using RubyGems
$ sudo gem install fastlane -NV

# Alternatively using Homebrew
$ brew install fastlane

あとは対象のプロジェクトのルートで$ fastlane initをすることでfastlaneディレクトリ内にFastfileやAppfileが生成されます。

Bundler導入

Bundlerとは?

Rubygemsは個別で手動インストールすることが可能ですが、互換性の問題や複数人開発で各環境で使用するライブラリの名前やバージョンを統一する必要が出てきます。
こういった場合に、gem同士の互換性を保ちながら各gemの導入・管理を行ってくれるのがBundlerです。

  • Bundler install
    $ gem install bundler

Gemfileとは

Gemfileとはるgemの一覧を管理する設定ファイルです。 bundlerによってインストールされるgemをGemfileで管理を行います。

  • Gemfileの作成
    $ bundler init

  • Gemfile編集

source "https://rubygems.org"
 
gem 'fastlane' <-追加
gem "cocoapods" <- cocoapodsもここで管理すると便利 
  • PATHを指定してインストール
# そのプロジェクト内でのみ、bundle install実行時のインストール先をvendor/bundleに設定する(local install)
$ bundle config set --local path 'vendor/bundle'  
$ bundle install


- $ bundle install --path vendor/bundleはBundler3では使用できなくなるためBundler 2.1で[DEPRECATED]となりました。 - PATHを指定しない$bundle installだと後々fastlaneのplugin周りでsuperuser権限でないと実行できない事象に遭遇したためPATH指定しました。

  • bundle経由でfastlane設定
    $ bundle exec fastlane init

これで$ fastlane init 同様にFastfileなど生成されます。

Appfile記述例

team_id "TEAM ID"
team_name "TEAM NAME"

app_identifier "BUNDLE IDENTIFIER" # The bundle identifier of your app
apple_id "ACCOUNT MAIL" # Your Apple email address

Fastfile記述例

# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  desc "Generate ipa"
  lane :generate do
  
    # add actions here: https://docs.fastlane.tools/actions

    gym(
      workspace: "hoge.xcworkspace",
      configuration: "Debug",
      scheme: "hoge-ios-release",
      silent: true,
      clean: true,
      output_directory: "./build/ipa/distribution/" + Time.new.strftime("%Y%m%d%H%M"),
      output_name: "AppDistribution.ipa",
      export_method: "ad-hoc",
      export_options: {
        provisioningProfiles: { 
          "com.fuga.hoge-ios" => "hoge-adhoc"
        },
        signingStyle: "manual"
      }
    )

    slack(      
      message: "App successfully Generated!",
      slack_url: "WEB HOOK URL"
    )
  end

SlackのWebhook URL は以下のURLから生成・取得できます。

slack.com

ひとまずipaを生成して完了通知をSlackに投げるといったものです。

  • fastlane実行
    $bundle exec fastlane generate

2段階認証対応

Appleのアカウントにアクセスする際は2段階認証を要求されます。 fastlaneでAppStoreへipaをアップロードする際もこれに該当するのでその対処方法です。

1. Appパスワード生成

appleid.apple.com 上記Appleのリンクにサインイン後にセキュリティセクションの「App用パスワード」を生成します。 任意のラベル名を設定後にパスワードが表示されますのでそれを環境変数FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORDに保存します。

$ export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD={App用パスワード}

2. ログインセッションの保存

CLIではログインセッションを保存しておきます fastlane spaceauth -u user@email.com  ※メールアドレスはAppleIDで使用しているもの

上記コマンドを入力するとSuccessfully logged in to App Store Connectが表示されその下にPass the following via the FASTLANE_SESSION environment variable:と表示されます。 そこに記載のある長い文字列を環境変数FASTLANE_SESSIONに保存します。

一番簡単なのはExample:と表示されているところをコピー/ペーストでもいいです。

$ export FASTLANE_SESSION={長い文字列}

$ envで保存した環境変数が表示されていれば問題ありません。

詳解 Swift 第5版

詳解 Swift 第5版