Bitriseでビルド完了時にSlackに投稿するまで

タイトルどおりです
Bitriseへのアプリ登録からBitriseでビルド完了したらSlackに投稿されるようになるまでを記録します
基本的には[公式](https://devcenter.bitrise.io/jp/getting-started/adding-a-new-app/)通りにしました
*今回はすでにBitriseへの登録はされていたので、Bitriseへアプリを追加するところから

## アプリを追加
Bitriseを開いたらDashboard内にある`Add New App`を選択

![スクリーンショット 2019-08-30 16.02.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/a7801e35-863e-0432-d974-b8b9a3fb2da6.png)


画像のような画面が開かれます
![スクリーンショット 2019-08-30 16.04.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/08c6ec9c-e4cb-f0a6-4368-dd61283b9219.png)


### CHOOSE ACCOUNT
Github・GitLabのようなgitホスティングサービスで今回Bitriseと連携するレポジトリがあるアカウントとそのプライバシー設定を選択します
ここではどちらもプライベートを選択します

### Connect your repository

今回Bitriseと連携するホスティングサービスとレポジトリを選択します

### Setup repository access

![スクリーンショット 2019-08-30 16.17.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/67536708-c3b7-13de-d725-57d76ce2ff1f.png)

Bitriseがプライベートリポジトリをクローンする際にはSSH通信を行います
その際アクセス権が必要になるのでSSHキーを受け渡すことになります
なので、Bitrise側に秘密鍵をもたせて、Github側に公開鍵をもたせる必要がある？？？
それはここでは`No, auto-add SSH key`を選択して自動的に行なってもらいますが、非公開ライブラリを使うような場合は`I need to`を選択して手動で設定する必要があるようです
詳しくはこちら: https://qiita.com/ktanaka117/items/1241afe53e2246444353

'No, auto-add SSH key'を選択して設定が終わるとGithubではリポジトリ > Settings > Deploy keys に公開鍵を登録されていることを確認できはずです

### Choose branch

ブランチを入力します
おそらくここで入力したブランチが実行対象になります
![スクリーンショット 2019-08-30 16.34.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/714c9809-5abb-e9af-980a-5f0b9f8ecde2.png)


### Validating repository
リポジトリのバリデーションが行われます
このときにBitriseは設定したSSHキーを使って、指定されたブランチへアクセスするらしいです
完了すると次に進みます


### Project build configuration

画像のような画面が表示されるはずなので、選択する
ここはipaを書き出すのがad-hoc版のためなのか、app-Storeなのか、developmentなのかenterpriseなのかといったところなのかを選択すればおｋ
![スクリーンショット 2019-08-30 16.46.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/01f67ceb-92db-ff9f-8a9f-cae02ea8ab82.png)


### App icon
アイコンを設定する場合はアイコンを設定してください

### Webhook setup
例えばビルド完了したらSlackへ通知するなどの場合はここで`Register a Webhook for me!`を選択して設定していくみたいです

![スクリーンショット 2019-08-30 17.16.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/ff56fa33-a346-5852-7528-c3379618c2f9.png)


ただ私はここでSkipしたので別の方法での設定を書きます


## slackに投稿されるようにする
ここから先は[この記事](https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008)を見ました

slackに登録されている状態で https://slack.com/services/new/incoming-webhook にアクセスします

画像のような画面が表示されるので通知先チャンネルを選択し、`Add Incoming WebHooks integration`を選択します
![スクリーンショット 2019-08-30 17.22.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/8d6ff107-8f80-36bb-fcdc-ed160b292b78.png)


このときWebhook URLに表示されるURLをコピーします
![スクリーンショット 2019-08-30 17.23.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/dd0bc7b5-cfc1-f7ae-fe9f-7fea06f832e9.png)

Bitriseに戻り、先程登録したことでWorkFlowができてるので画面左一番下の＋ボタンを選択肢、検索画面でSlackと入力し出てくるSend a Slack messageを選択肢します
![スクリーンショット 2019-08-30 17.20.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/18e8a643-ca3f-f9c5-1ae9-b8b1361cd05c.png)

Slack Webhook URLの入力欄を選択すると画像のような画面が出てくるので適当なKeyを入力してValueに先程コピーしたURLをペーストして間違いなければ`command + S`して終了

![スクリーンショット 2019-08-30 17.29.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/7fd70379-7cca-800f-df9d-82146834244e.png)


試しにBuildsタブの`Start/Schedule a Build`でビルドしてみると指定したSlackのチャンネルに通知が来るはずです

## 追記
`Xcode Archive & Export for iOS`の`Scheme Name`に入力する環境変数で該当のWorkflowではどのスキームのビルドを走らせるから決めることができる
また全Workflowで同じ環境変数を利用していても、`Env Vars`で各環境ごとにその値を変更できる

|Workflow|Env Vars|
|-------|-------|
| <img width="1439" alt="スクリーンショット 2020-01-01 17.59.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/a3a127b7-0c4f-a07d-433a-802c66824a77.png"> | <img width="428" alt="スクリーンショット 2020-01-01 18.05.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261386/2a21892c-1d2c-d906-ad9e-39136ead53ab.png"> |
*ここでは`App Environment Variables`でもBITRISE_SCHEMEを定義して、全体としての値を決めつつも、staging環境では別の値にした




# 参考
https://devcenter.bitrise.io/jp/getting-started/adding-a-new-app/
https://qiita.com/ktanaka117/items/1241afe53e2246444353
https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008
bitrise.ioでcodesigningを管理する
https://devcenter.bitrise.io/jp/code-signing/ios-code-signing/ios-auto-provisioning/