CodePipelineとGitLabの使い方

CodePipelineとGitLab

本記事では、Amazon Web Serviceが提供するCodePipelineとGitLabについて、それぞれのサービスがどういったものか説明した後、利用方法やこの2つのサービスを活用していく方法について紹介させていただきます。

CodePipelineとは

CodePipelineとは、Amazon Web Serviceが提供するフルマネージド型の継続的デリバリーサービスです。アプリケーションの継続的デリバリーや継続的インテグレーションを可能にするためのツールとなります。継続的ンインテグレーションとは、コードに生じた変更を頻繁に更新していくことで定期的かつ自動的にプログラムの諸要素のビルド・テストを行うプログラムの開発手法の1つです。変更の反映を頻繁に行うことで、複数人で作業を行う上で作業の衝突や競合の早期発見やエラーの早期発見といった効果が見込めます。継続的デリバリーとは継続的インテグレーションを拡張し、ビルド・テストが終了した後リリースを行う本番環境での反映までを行い、完全に自動化されたリリースプロセスを用いてプログラムを常に本番環境でリリース可能な状況とすることで、迅速なリリースを継続的に行う開発手法です。

では、こういった継続的デリバリーや継続的インテグレーションに対してCodepipelineはどのようなアプローチが出来るのでしょうか?CodePipelineはあらかじめソースコードの取得先として、Amazon Web ServiceのSimple Storage Service通称S3かGitHubを指定することが可能です。指定した取得先からソースコードを取得し、設定したテスト、環境を用いてプログラムのテストとデプロイを自動的に実行します。どのようなパイプラインを構築するかは自由で、テストやデプロイプロセスを外部のアプリケーションを用いてパイプラインに組み込むことも可能です。フルマネージド型なので、管理などはAmazon Web Serviceが行ってくれます。各ステージにおける開発プロセスを可視化し、かつビルド・テストを自動で実行できるプロセスを構築できるため簡単に継続的デリバリー、継続的インテグレーションを実現できます。

GitLabとは

GitLabはGitHubと同様、Gitのリポジトリをホスティングすることが出来るサービスです。出来ることとして、ソースコードをレビューしたり、課題の管理を行うなど、おおよそ開発に必要な機能は実装されています。GitLabにはオープンソースの無料版のものと、有償版の製品の2種類があります。そこまで機能面などに違いは無いものの有償版ではPremiumグレード以上でGitLab本社からのサポートが受けられる、新たに追加された機能を先行して使用することが出来る、といったメリットがあります。現在でもGitLabは頻繁に開発が行われており、少し前ではあくまでGitLabはGitHubの後追いというイメージだったのですが、最近ではGitHubには搭載されていないような便利な機能がGitLabに実装されていることなどもありGitLabの方が良い、という声もあります。しかしながら開発が頻繁な側面、セキュリティ面での更新などが頻繁に行われており、インターネット上にGitLabを公開する場合はセキュリティ面で独自に対策を講じる必要があります。

CodePipeLineとGitLab

GitLabを用いて継続的インテグレーションや継続的デリバリーが可能な環境を構築することも出来ますが、CodePipelineと組み合わせることでより効率的に継続的インテグレーション、継続的デリバリーを実現することが出来ます。よくある実用例の一例を挙げると、Amazon Web ServiceのSimple Storage ServiceへのソースコードのアップロードまでGitLabで管理を行い、Simple Storage Serviceからのプログラムのテスト、本番環境への反映をCodePipelineを用いて自動化して実行する、というプロセスを構築することで継続的インテグレーション、継続的デリバリーを実現する形が多いです。CodePipeLineとSimple Storage Serviceの間の接続ですが、Amazon Web Serviceの提供するCodeCommitを用いて行います。具体的には、GitLabリポジトリをCodeCommitリポジトリにミラーリングすることで接続をスムーズに行います。実際に導入する上では、プロジェクトに適した開発手法なのか、といったことやコストパフォーマンス等を鑑みて検討する必要があったり、環境を構築する上で別途サーバーやアカウントなどを他に準備する必要などがありますが、継続的インテグレーションや継続的デリバリーを導入することで得られるメリットは支払うコストに対して十分得られるものがあります。

終わりに

ここまでお読みいただきありがとうございます。いかがだったでしょうか。開発プロセスを講じる上でその手法については、色々な手法があるため十分考える必要があります。継続的インテグレーションや継続的デリバリーといった手法を取り入れることでより効率的かつ迅速に開発を行うことが出来るようになります。是非、ご一考ください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です