LoginSignup
14
8

More than 5 years have passed since last update.

[Bitrise][iOS] GitHubのPull RequestをBitriseでフックしてUnit Testする

Last updated at Posted at 2018-04-04

今までtarget branchにmergeされた時点でUnit Testを行いArchiveしてFabric配布していたのだが、そもそも開発フロー的にUnit Testが成功していることが前提でtarget branchにmergeされるべきなのでなんとかしたい、と同僚からごもっともなご意見があったので、Pull Request作成時点およびsource branchにpushされたらUnit Testを行うようにしてみた。

設定箇所のYAML

Unit Testだけ行う単純なworkflowの追加。

bitrise.yml
...
workflows:
  unit_test:
    steps:
    - activate-ssh-key@3.1.1:
        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    - git-clone@3.5.2: {}
    - cache-pull@1.0.0: {}
    - certificate-and-profile-installer@1.8.8: {}
    - cocoapods-install@1.7.1: {}
    - carthage@3.1.3:
        inputs:
        - carthage_options: "--platform iOS --cache-builds"
    - set-xcode-build-number@1.0.5:
        inputs:
        - plist_path: "$BITRISE_INFO_PLIST_PATH"
        - build_version: "$BITRISE_BUNDLE_VERSION"
    - xcode-test@1.18.10:
        inputs:
        - project_path: <WORKSPACE_NAME>.xcworkspace
        - scheme: "$BITRISE_SCHEME"
...

develop ブランチがターゲットのプルリクをフックしてunit_test workflowを実行する。

bitrise.yml
...
trigger_map:
- pull_request_source_branch: "*"
  pull_request_target_branch: develop
  workflow: unit_test
...

作業

Webhook追加

まずはGitHub 側にPull Request and PushのWebhookを用意する。
GitHubプロジェクト > Settingsタブ > Webhooks
github_webhook.png

既に https://hooks.bitrise.io から始まるURLでpull_request and push のフックがあればスキップ。
無い場合は以前書いた記事1-1 を行い追加してください。

Workflow追加

BitriseにUnit Testだけ行うworkflowを作る。
既存の配布workflowをベースにして作ると楽。
add_worflow.png

不要なステップを削除して最後にUnit Testを行うようにする。
unit_test_workflow.png

Trigger追加

Bitriseの Workflow Editor > Triggers > Pull Request に追加する。
SOURCE BRANCH は * にしておく。
workflowは上で作成したものを指定する。
trigger_pull_request.png

配布用のworkflowからUnit Testを外しておく

target branchにmergeされた後に発動する配布workflowがある場合、もうそこではUnit Test不要なのでステップを外しておく。これで少し早くなる。

Pull Request

プルリクしてみるとGitHubにもこのような形で表示される。
workflowの実行が終わるまで待つ。
pull_request_checking.png

テストが失敗した場合、mergeできない。
pull_request_failed.png

テストが成功した場合、merge 可。
pull_request_succeed.png

感想

Bitriseの稼働が若干増えるが、プルリクした時やそれに変更を加えるごとにテスト実行してくれるようになったのでかなり安心。
mergeされてから「Unit Test通らないんですけどー」とかなくなるので、少なくともUnit Testだけ修正しないとならないチケットはもう作らなくて済むし、それを防ぐために毎回レビュー時にテスト実行しなくても良くなるのですごく楽になる!!はず!
あと配布時のビルドも数分早くなるので嬉しい。
ありがとう同僚!


                              MMMMMMMMMMMM                                
                              MMMMddddNMMM                                
                              MMMM    mMMM                                
                              MMMMssssNMMM                                
                              MMMMMMMMMMMM                                
                                 sMMMMd                                   
                                 yMMMMd                                   
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
      MMMMdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdMMMM      
      MMMM                                                      MMMM      
      MMMM                                                      MMMM      
     MMMMM                                                      MMMMMM    
  MMMMMMMM                                                      MMMMMMMM  
 MMM' MMMM           .yy.                        .yy.           MMM  'MMM 
MMMh  MMMM         .MMMMMMl.                  .lMMMMMMM.        MMM   hMMM
MMM   MMMM       .MMMMMmNMMMl.               .MMMMNmMMMM.       MMM    MMM
MMMs  MMMM       .hhhh   yhhh.               .hhhh   hhh+       MMM   sMMM
 MMM. MMMM                                                      MMM  .MMM 
  MMMNMMMM                                                      MMMMNMMM  
    MMMMMM                                                      MMMMMM    
      MMMM                                                      MMMM      
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
      MMMM                                                      MMMM      
      MMMM                                                      MMMM      
      MMMM                                                      MMMM      
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8