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の時などで実行するテストを分けたかったのですが、それは次回取り込みます)
テストの結果をSlackに通知させる
次にGitlabとSlackの連携を行います
Slack側の設定
Slack APIにアクセスし、MessagingのIncoming Webhooksを選択。
Create your Slack app に遷移し、
アプリ名
を設定し、通知させたいチャンネル名
を選択する (まだSlackのアプリなどでワークスペースを作成していない場合は、この段階で作成しておく)作成が完了すると該当のアプリの画面に遷移するので、Activate Incoming WebhooksをONに設定し、Webhook URLをコピーしておく。ここでSlack側の設定は完了
GitLab側の設定
- 対象のプロジェクトのSettingsのIntegrationsに遷移する。
- 遷移先のページのSlack notificationsに遷移する。
- ページ内で通知の対象としたい契機を選択する。
- Test settings and save changesを選択すると無事設定完了です。この段階で前項で設定したSlackのチャンネルに通知が行きます。
まとめ
以上でアプリのCI設定が完了しました。 テストが失敗した際も通知が行くので、テスト実行に時間がかかって、他の作業に取り掛かっている時などは便利ですね。