やるかやられるかブログ

現役IT社員YouTuberのブログ

GitLabを使用したCIの構築とSlackとの連携

CI環境の構築

Flutter Projectで作成したUnit,Widget,Integrationのテストコードを.gitlab-ci.yamlに記載することで、gitにpushしたときやMergeした時にテストが動くように設定します。

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "28"
  ANDROID_BUILD_TOOLS: "28.0.2"
  ANDROID_SDK_TOOLS: "4333796"


stages:
  - build
  - test
  - deploy


UnitTests:
  stage: build
  script:
    - pwd
    - ./unit_test.sh
  tags:
    - mac-ci-runner

WidgetTests:
  stage: test
  script:
    - ./widget_test.sh
  tags:
    - mac-ci-runner

IntegrationTests:
  stage: deploy
  script:
    - ./test.sh
  tags:
    - mac-ci-runner

この時、.gitlab-ci.yamlを実行するRunnerを実行しないと、実行した際にflutter : command not foundとなってしまうため、RunnerをflutterコマンドがインストールされているMac上に構築する必要があります。 その方法は、GitLab CI RunnerをMac上に構築する の記事をご参照ください。

以上の設定を完了するとCICD > Pipelines では以下のようになり、テストが実行されていることが分かります。 (本当はPush,Merge,tag pushの時などで実行するテストを分けたかったのですが、それは次回取り込みます)

スクリーンショット 2020-04-05 19.59.04.png

テストの結果をSlackに通知させる

次にGitlabとSlackの連携を行います

Slack側の設定

  1. Slack APIにアクセスし、MessagingのIncoming Webhooksを選択。 スクリーンショット 2020-04-05 20.03.49.png

  2. Create your Slack app に遷移し、アプリ名を設定し、通知させたいチャンネル名を選択する (まだSlackのアプリなどでワークスペースを作成していない場合は、この段階で作成しておく) スクリーンショット 2020-04-05 20.05.33.png

  3. 作成が完了すると該当のアプリの画面に遷移するので、Activate Incoming WebhooksONに設定し、Webhook URLをコピーしておく。ここでSlack側の設定は完了 スクリーンショット 2020-04-05 20.10.27.png

GitLab側の設定

  1. 対象のプロジェクトのSettingsIntegrationsに遷移する。
  2. 遷移先のページのSlack notificationsに遷移する。
  3. ページ内で通知の対象としたい契機を選択する。
  4. Test settings and save changesを選択すると無事設定完了です。この段階で前項で設定したSlackのチャンネルに通知が行きます。

スクリーンショット 2020-04-05 20.14.48.png

まとめ

以上でアプリのCI設定が完了しました。 テストが失敗した際も通知が行くので、テスト実行に時間がかかって、他の作業に取り掛かっている時などは便利ですね。