1. CI/CDツール
CI/CDツール(継続的インテグレーションツール)には代表的なものとして、Github Actions , GitLab , CircleCI等がありますがAtlassian等も含めると、多くのツールが乱立しています。
また各クラウドプラットフォーム毎(AWS/Azure/GCP)にもCIツールが準備されており、Githubと連携できるようになっている等、学習コストはそれほど必要ありません。
FORRESTERの調査資料からLeadersに位置するサービスを確認したところ、クラウドベンダ(GCP/Azure/AWS)とCIメインのサービス(GitLab, CircleCI)の存在感が大きいようです。
2. サービスの概要と利用イメージ
2.1. サービスの概要
各サービスのどれかを選択する場合、大まかに利用クラウドとの親和性を重視する必要があるか、他利用環境との連携するか、一通りの機能が統合されている方が良いのかといった考え方に依るところが大きいと感じました。
サービス名 | 概要 |
---|---|
AWS/Azure/GCP | ラウドエコシステムで利用する場合に親和性が高くストレスなく利用可能。 基本的な考え方はSaaSとして利用する。(OutpostsやCloud Service Platformを除く。) |
GitLab | SaaS/Self-Managedから選択。Gitのオフィシャルサイトでも紹介されています。 OSSでありCircleCIと比べると、プロジェクト管理としてCIを利用する思想が強い。 |
CircleCI | SaaS/Self-Managedから選択。GitHubやAWS等、他サービスとの連携を意識している。 |
コストの考え方にも違いは出ており、例えばGCPのCloud BuildではCIサービスを実現するためのGKEやストレージ、ネットワーク利用として課金するのに対し、GitLabやCircleCIではプラン毎にCIパイプラインを実行する上限時間や同時パイプラインの実行に対し課金しています。
Freeプランで比べると、circleCIではgithubのコードを読み込んで実行するためにコードが分散されない(Gitリポジトリの場所は変更されない)のに対し、GitLabではGitリポジトリをコピーし利用するため、更新すべきGitリポジトリはGitLabに変更されます。(有料プランではGitHubとの同期も可能)
GitLabでは問題管理やブラウザ上でコードを更新できるエディタ機能等も準備されているため、開発スタイルに合わせて選択するのが良さそうです。
2.2. 利用イメージ
各サービスを利用する際の大まかなフローは以下の様なイメージです。
- コードをgitブランチへpush
- gitブランチの変更を検知し、CIサービスが自動でビルド
- 予め定義されたテスト(若しくはデプロイ)を自動で実行
3. GitLabの始め方
GitLabのWebサイトより、Freeプランを開設する。30日の期間試用プランもあるので、好きな方のアカウントで開設するのが良いでしょう。アカウントはメールアドレスから登録、もしくはGoogle,Githubアカウント等からSSOでも開設可能です。
ログインできたら、先ずはプロジェクトを作成しましょう。”Create a project”から作成可能です。
GitLabで新たにプロジェクトを作成する場合は、”Blank Project”から作成しましょう。
今回は既存のGitからインポートし利用しました。
既存のGitを取り込むには、Import projectタブを選択し、その中からGitHubを選択します。
インポートしたい対象のリポジトリを選択してImportするか、”Import all repositories”から全てのリポジトリをインポートします。ImportしてからTop画面(https://gitlab.com)へ移動すると、プロジェクトが作成されている事が確認できます。
インポートしたGitリポジトリを開き、Set up CI/CDをクリックします。
“Apply a template”からGitHubから読み込んだリポジトリの言語と同じ言語を選択すると、対象言語向けにカスタマイズされたYAMLファイルが自動生成されます。
ソースコードに合わせ、例えばyamlファイルを以下の様に修正の上、target branchを選択し保存します。
その後、GitLabリポジトリのソースコードを修正すると、自動でyamlファイルに従いpipelineが稼働します。
pipelineの実行結果は左側のメニューからPipelinesを選択し、
該当のPipeline->Jobsから詳細を確認することができます。