GitlabでCI/CDを動かしてみた
概要
今参画しているプロジェクトでは、CI/CDが実現できていません。。
デプロイの作業が結構面倒なので、導入したい!と以前から思っており、GitLab CI/CDを動かしてみたので記事に残します。GitLabを選んだのは、現プロジェクトで使用しているからです。(Githubの方がキャラクターがかわいいので好きです)
この記事を読むことで、GitLab CI/CDの動かし方と、CI/CDをどのようなものなのかを知ることができます。
CI/CDとは?
CI/CDってコードのマージ後のテストとデプロイを自動化してくれるんでしょ?ってイメージしかなかったので、意味を調べてみました。
CI(継続的インテグレーション)の概念は、ソフトウェア開発手法であるエクストリームプログラミング(以下XP)の中でKent Beckらによって提唱されています。
XPではソフトウェア開発をより効率的に行うためのプラクティスが提示されています。(ここでのプラクティスは、習慣的な取り組みのことを指していると思っています。)
私は、エクストリームプログラミングの書籍を読み、CIは開発チームがコードを頻繁に更新し、自動でテストを行うプラクティスと考えました。
具体的な取り組みの内容は、下記3点だと思っています。
1.開発者が頻繁に自分のコードをメインブランチに統合する
2.統合されるたびに、自動でビルドを行う
3.自動ビルドのプロセス内で自動テストが行い、統合による影響が即座に確認する
CIによるメリットは主に下記の2つだと思います。
1.自動でテストを行うことにより安全にリリースを行える
2.統合による問題を早期に発見することで、開発の効率を向上させる
CDは継続的デリバリーと継続的デプロイの二つの意味を持った言葉です。CDは、Jez Humble と David Farleyにより広められました。彼らの著「Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation」を読み、私は継続的デリバリーを「CIでビルドとテストの成功した後、ステージング環境へのデプロイを自動で行い、リリースへの承認を行うことで、いつでもソフトウェアをリリースできる状態に保つプラクティス」、継続的デプロイを「継続的デリバリーをさらに進め、継続的デリバリーでの確認を終えた後、本番へのリリースを自動で行うプロセス」と考えました。
以上から、CI/CDは、コードの変更の統合後のビルド、テスト、ステージング環境へのデプロイ、デプロイ後のテスト、本番環境へのリリースを行うことにより、ソフトウェア開発の効率を向上させる開発手法だと判断しました。
CI/CDの概念を調べてみると、現在のプロジェクトでは、手動でやっている工程が多く、工数もかけているので、挑戦する価値はありそうだなと感じました。
具体的な手順
※公式サイト翻訳サイトのチュートリアルを参考に実施しました。
1.ディレクトリの作成
2.「.gitlab-ci.yml」ファイルを作成
※ファイルの中身は公式サイト翻訳サイトを参照
3.Build → Pipelines からjobの実行を確認
感想
CI/CDの考え方は、現プロジェクトで工数削減に貢献する開発手法であると思いました。しかし、実際に導入するには、知識が足りなさすぎるので、引き続き学習を進めていきます。
参考文献
Kent, Beck. :Cynthia, Andres.『エクストリームプログラミング』. オーム社. 2015/6/26
Jez, Humble. ;David, Farley. 『継続的デリバリー 信頼できるソフトウエアリリースのためのビルド・テスト・デプロイメントの自動化』. ドワンゴ. 2017/8/9
クリエーションライン株式会社 GitLab日本語マニュアル
「チュートリアル最初の GitLab CI/CD パイプラインの作成と実行」
2024年8月11日取得,https://gitlab-docs.creationline.com/ee/ci/quick_start/
Discussion