継続的インテグレーションについてのメモ
参考資料
少し古いが、テストの分類など以下のスライドがよくまとまっている。
www.slideshare.net
また、CircleCIでチュートリアル+αをやりました。 circleci.com
(CircleCIのドキュメント、Orbs・ジョブ・アーティファクトといった用語の具体例がなかなか出てこないので、初心者には分かりづらいような・・)
その他、以下の書籍を参考にしました。
- 継続的デリバリー 信頼できるソフトウエアリリースのためのビルド・テスト・デプロイメントの自動化
https://www.amazon.co.jp/dp/B074BQQ96X - 継続的インテグレーション入門
https://www.amazon.co.jp/dp/482228395X - チーム開発実践入門──共同作業を円滑に行うツール・メソッド
https://www.amazon.co.jp/dp/B07JLQD763
継続的インテグレーションとは?
定義は上記文献や継続的インテグレーション - Wikipediaを参照。
私の理解では、常に「クリーン」な状態を保ちながら開発するために、ソースコードのバージョン管理とテスト・ビルド・デプロイを自動化して接続すること。CIと略記される。
CIサーバ
継続的インテグレーションを行うために、以下のCIサーバと呼ばれるサービスがある。
CIサーバでは、以下の設定を行うことになる。
- ビルド、テストといったジョブを定義する
設定ファイルはyamlなどで記述する - トリガーを指定する
Pushされたとき、プルリクエストが送られたときなど、ジョブを起動するトリガーを指定する
APIを叩くなどで手動実行もできる - GitHubやBitBucketなどと連携設定をする
CIサーバは、以下の機能を持つ。
- トリガーとなるイベントが発生すると、上記のジョブを実行する
ジョブは、docker imageを用いて行われる。また、並列や依存関係を考慮して実行が行われる - テストに失敗するとそのジョブは失敗する。
- アーティファクトと呼ばれるビルド時生成物を保存する仕組みがある
アーティファクトの例は、テストのカバレッジやビルドされたバイナリなど - ジョブの状況、テスト結果やアーティファクトをWeb画面から見ることができる