fastlaneでリリースノートが追加できずに最後の最後でFabric Crashlytics Betaの配信に失敗する

## はじめに
`fastlane` 便利ですよね。
[`fastlane` 勉強会](https://fastlane.connpass.com) に参加してから CI/CD に興味を持ち始め，
帰宅後早速個人アプリのプロジェクトに導入・運用してみて
今では多くは使いこなせてはいないもののかなり楽させてもらっています。
先日業務で，新規のプロジェクトで取り入れてみることにしました。
その際に起こったちょっとしたエラーについて書きます。
エラー内容は下記です。多分頻繁には起きていないと思う。

```
2018-03-15 21:33:30.573 submit Crashlytics: Unable to add release notes: Project ��������������� is inactive
2018-03-15 21:33:30.573 submit Crashlytics: Failed to add notes to the release
```

## 開発環境

* macOS High Sierra ver 10.13.3
* Xcode 9.2
* Target iOS 9.0 以上
* Cocoapods (1.4.0)
* Crashlytics (3.9.3)
* Fabric (1.7.2)
* fastlane (2.14.2)
* Configuration `Debug(DEV)`・`Stg(STG)`・`Release(RELEASE)` の 3 つ

リリース後に DEV 環境から STG 環境に移行すると聞いていて，
開発段階では，DEV と RELEASE 環境を構築していた。
でもやっぱりリリース前に作っておきたいと言われて，
**最後に STG 用の Configuration `Stg` を追加した。**

<details><summary>実行したFastfileの例(色々省略版)</summary><div>

```Fastfile

fastlane_version "2.14.2"

# Fabric Beta のリリースノート
RELEASE_MESSAGE = "◇ [STG]リリースノート #01\n・ほげほげ\n　\n※ STG環境向けのAdHoc版です。\n"

default_platform :ios
platform :ios do

  # この部分は最初に一回実行される
  before_all do
    # Slack のチャンネルを指定
    ENV["SLACK_URL"] = "https://hooks.slack.com/services/略"
    # Fabric Beta Settings
    ENV["CRASHLYTICS_API_TOKEN"] = "Fabricで確認して入力"
    ENV["CRASHLYTICS_BUILD_SECRET"] = "Fabricで確認して入力"
    # pod installをしてくれる
    cocoapods
  end

  desc "STG環境向けAdHoc版のipaファイルをFabric Betaに配信"
  lane :HOGE_STG_FabricBeta do
    gym(
      workspace: "HOGE-app-ios.xcworkspace",
      configuration: "Stg",
      scheme: "HOGE-app-ios",
      export_method: "ad-hoc",
      output_name: "HOGE_STG_FabricBeta",
      output_directory: "~/Downloads/"
    )
    # Crashlytics にipaをアップロードする処理を追加
    crashlytics(
      crashlytics_path: './Pods/Crashlytics/iOS/Crashlytics.framework',
      api_token: ENV['CRASHLYTICS_API_TOKEN'],
      build_secret: ENV['CRASHLYTICS_BUILD_SECRET'],
      notifications: true,
      notes: RELEASE_MESSAGE,
      # groups は Alias の方を入力
      groups: "Hoge-app-stg-test"
    )
    slack(message: "[STG] Latest version's App was delivered to Fabric Beta.\nLatest ipa file was exported to ~/Downloads/")
  end
end
```

</div></details>

## Cocoapods 周りでビルドが通らない
Configurarion を追加した際は `pod install` を実行しないとダメみたい。
無駄な Diff が出てしまった・・・


## STG版のlane実行時にリリースノートが追加できずに配信失敗

最初に DEV のエンタープライズ版・RELEASE の AdHoc 版の lane を実行して成功。
あとは さっき追加した STG 環境の AdHoc 版だけだなと実行してみたら，
最後の最後でエラー出て配信されてなかった。(下記のような感じ)

<img width="768" alt="qiita_fastlane_releasenote.png" src="https://qiita-image-store.s3.amazonaws.com/0/88266/968645fa-b8bb-4079-5839-20db0b463a53.png">

`gym` は成功して ipa ファイルの書き出しは成功している。
Crashlytics に配信しようとしたがプロジェクトがアクティブではないため
リリースノートが追加できずに Crashlytics Beta への配信は失敗している。

ここでいう **プロジェクトがアクティブではない** というのはどういうことか。

Fabric.app を使うととてもわかりやすくい下記のような導入チュートリアルがある。


<img width="300" alt="qiita_fastlane_releasenote.png" src="https://qiita-image-store.s3.amazonaws.com/0/88266/83751c6d-c17a-ed57-c424-78112949f3d2.png">


`⌘+B` →コード・Run Script を追加→ `⌘+R` して起動した際に
実行時のバンドルIDのプロジェクトが fabric のダッシュボードに追加される。
一度このダッシュボードに表示されないとアクティブなプロジェクトではないということがわかった。

今回は Configuration を追加しただけで一度もバイナリを Export して，
実機で起動していないため STG のバンドル ID のプロジェクトが生成できていなかった。
(`AppDelegate` の `didFinishLaunchingWithOptions` を一度も通ってない。)
ないものにリリースノートを追加しようとしても失敗になるのは納得できるなー。

fabric のサイトからでもリリースノートは書けることは書けます。
編集・整形もしやすいのでこちらでもいいのですが，配信後にメールで
通知される際に文言が入らないので・・・それだけです。
ipa ファイルを書き出して fabric のサイト上でリリースノート書いたり，
テストユーザを招待したり GUI 的に処理するのとどっちが現場では多いのでしょうか？

## おわりに
今回は fastlane でリリースノートが追加できずに最後の最後で
Fabric Crashlytics Beta の配信に失敗する件について書きました。

気持ち良く配信をして早く帰りたかったのです。
いきなり AdHoc での書き出しをしようとしていたから起きたと思う。
Development で実機ビルドしてたらまず起きなかったと思う。
もっと慎重に物事に取り組まないといけないなと思いました。

乱文でしたが，ご覧いただきありがとうございました！