[iOS] fastlaneの導入

# 関連資料
- [公式ドキュメント](https://github.com/fastlane/fastlane#fastlane)
- [iOSアプリのリリースフロー自動化ツールfastlaneの導入](http://qiita.com/ToraDady/items/4c6ab9f6bd2fde83f82d)
- [これから始めるfastlane](http://qiita.com/econa77/items/d81a392d6b195cfb7316)
- [iOSアプリの継続的デリバリーに便利なfastlaneのご紹介](http://qiita.com/gin0606/items/162d756dfda7b84e97d4)
- [fastlane で build/version number をインクリメントする](http://qiita.com/takecian/items/1b33c8dcb26db70e917e)

# 導入
fastlane インストール

```
$ gem install fastlane
```

関連資料には、上記のコードが書いてあるものが多かったが、エラーがでた。
下記のようにすると成功した。(公式ドキュメントと同じ)

```
$ sudo gem install fastlane --verbose
```

Xcode command line toolsをインストール

```
$ xcode-select --install
```

自分のアプリのプロジェクトのディレクトリに移動。

```
$ fastlane init
```

色々、質問されるので逐次回答する。
[iOSアプリのリリースフロー自動化ツールfastlaneの導入](http://qiita.com/ToraDady/items/4c6ab9f6bd2fde83f82d#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97)のセットアップを参照。

# iTunesConnectにアップロード
gymでipaファイルを作成
　　　　↓
deliverでアップロード

自分のアプリのディレクトリ内にfastlaneディレクトリが生成されている。

fastlaneに移動し、Deliverfileを開く。
以下をDeliverfileに記入。

```:Deliverfile
###################### More Options ######################
# If you want to have even more control, check out the documentation
# https://github.com/fastlane/fastlane/blob/master/deliver/Deliverfile.md


###################### Automatically generated ######################
# Feel free to remove the following line if you use fastlane (which you should)

app_identifier "com.*****.******" # The bundle identifier of your app
username "*******@gmail.com" # your Apple ID user

# アプリ名称
name({
  'ja' => "AppName"
})

# アプリバージョン
app_version "1.0"

#######
#設定値#
#######

# そのまま申請する場合はtrue しない場合はfalse
submit_for_review false

# HTMLで内容確認を行う場合はfalse 確認を行わずアップロードを行う場合はtrue
force false

# スクリーンショットのアップロードをスキップする場合はtrue
skip_screenshots true

# メタデータのアップロードをスキップする場合はtrue
skip_metadata false

# バイナリーデータ(ipa,pkg)のアップロードをスキップする場合はtrue
skip_binary_upload false
```

Fastfileを開く。
以下をFastfileに記入。

```:Fastfile
# Customise this file, documentation can be found here:
# https://github.com/fastlane/fastlane/tree/master/docs
# All available actions: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md
# can also be listed using the `fastlane actions` command

# Change the syntax highlighting to Ruby
# All lines starting with a # are ignored when running `fastlane`

# If you want to automatically update fastlane if a new version is available:
# update_fastlane

# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "1.80.0"

default_platform :ios

platform :ios do
  before_all do
    # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
    cocoapods
    
  end

  desc "Runs all the tests"
  lane :test do
    scan
  end

  desc "Submit a new Beta Build to Apple TestFlight"
  desc "This will also make sure the profile is up to date"
  lane :beta do
    # match(type: "appstore") # more information: https://codesigning.guide
    cert
    sigh(force: true)
    gym(
      workspace: "******.xcworkspace",
      configuration: "Release",
      scheme: "********",
    ) 
    pilot

    # sh "your_script.sh"
    # You can also use other beta testing services here (run `fastlane actions`)
  end

  desc "Deploy a new version to the App Store"
  lane :appstore do
    # match(type: "appstore")
    # snapshot
    cert
    sigh(force: true)
    gym(
      workspace: "******.xcworkspace",
      configuration: "Release",
      scheme: "********",
    ) 
    deliver(force: true)
    # frameit
  end

  # You can define as many lanes as you want

  after_all do |lane|
    # This block is called, only if the executed lane was successful

    # slack(
    #   message: "Successfully deployed new App Update."
    # )
  end

  error do |lane, exception|
    # slack(
    #   message: exception.message,
    #   success: false
    # )
  end
end
```

```
$ fastlane appstore
```

でipaファイルを作成し、iTunesConnectにアップロードするのを自動でしてくれる。

AppStoreにアップロードするときの処理は、lane :appstore内に書く。

最初、appstore内にgymとdeliverのみ書いていると、証明書関係のエラーが発生し困った。
そこで、gymの前に

```
cert
sigh(force: true)
```
を記入するとうまくipaファイルを作成できた。