CI環境の構築
少し遅くなりましたが、アプリのCI環境がある程度整ったのでまとめます。
前回までで作成した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設定が完了しました。
テストが失敗した際も通知が行くので、テスト実行に時間がかかって、他の作業に取り掛かっている時などは便利ですね。
自分が参画しているプロジェクトのクオリティにはまだまだ届きませんが、一連の流れは一旦理解できたかと...
次はCD環境の構築を行います。