CodePipelineで開発プロセスを自動化しよう
今回はAWS(Amazon Web Service)にて提供されているサービス「CodePipeline」について解説していきます。
CodePipelineとは
CodePipelineはAWSで提供している、ソフトウェアの構築、テスト、デプロイを本番稼働用に自動化する環境を提供するためのサービスです。具体的には※継続的デリバリー(IT用語で「CD」(Continuous Delivery))、※継続的インテグレーション(IT用語で「CI」(Continuous Integration))と呼ばれる開発手法を取り入れたサービスで、開発、テスト、デプロイまでのプロセスを自動化することで、アプリケーションとインフラストラクチャを短時間でアップデートすることが可能です。これにより、生産性が向上し、デプロイする前にエラーやバグを発見、解消することが可能になる等、開発をより素早く正確に行うことを目指されています。
※継続的デリバリー:ビルドとテストを実行した後にテスト環境またはステージング環境にデプロイして、システムテストやUIテストを行うCIを拡張した手法
※継続的インテグレーション:ソフトウェア開発におけるビルドやテストを頻繁に繰り返し行うことで問題を早期に発見し、開発の効率化、省力化や納期の短縮を図る手法
CodePipelineの特徴
ここではCodePipelineの機能の特徴について、解説していきます。CodePipelineで用いられる用語も含まれておりますが、以降で解説するので簡単に読み進めてみてください。
1.ワークフローのモデル化
パイプラインでは、リリースプロセスのワークフローを定義することでリリースプロセスを通して新しいコード変更がどのように進行するかを記述されます。パイプライン、ステージの構成を作成、設定、管理するGUI(グラフィカルユーザーインターフェース)が用意されているので、ワークフローを視覚化し、モデル化が行えるようになっています。
2.AWSへ統合
CodePipelineは、パイプラインのソースコードをAWS CodeCommit、GitHub、Amazon ECR、Amazon S3 から直接取得でき、ビルドとユニットのテストはAWS CodeBuildで実行することができる等、AWSへの統合が可能です。上記以外にも、リリースプロセスとしてAWSのリソースを供給、更新、削除することやコードに定義されているカスタム関数をトリガーとすることもできます。
3.ビルド済みのプラグインを統合
GitHub または Jenkins といったサードパーティーの開発者用ツールを、クリック 1 回でリリースプロセスの任意のステージに統合することができます。利用可能なものはソース管理とビルド、テスト、デプロイになります。
4.カスタムプラグインを統合
CodePipelineのオープンソースエージェントをサーバーに統合して、ユーザー独自のカスタムアクションを登録することでユーザーが予め構築したカスタムシステムと統合することができます。
CodePipelineを扱う上で知っておくべきこと
ここではCodePipelineで定義されている用語について解説していきます。上記のCodePipelineの特徴で解説した用語がありますので、ぜひご確認ください。
パイプライン
ソフトウェアの変更がリリースプロセスをどのように通過するかを記述するワークフロー構造のことです。各パイプラインは一連のステージで構成されています。
ステージ
環境を分離し、環境での同時変更の数を制限するために使用できる論理ユニットの事を指します。各ステージに、アプリケーション※アーティファクトに対して実行されるアクションが含まれていて、連続または並列のアクションで構成されます。ステージには、テストが実行されるビルドステージである場合もあれば、デプロイするデプロイステージの場合もあります。
※AWS CodePipeline上でのアクションが実行される場合に対象となる1つまたは一連のファイルまたは集合のことを指す。詳細は後述。
アクション
アクションは、アプリケーションコードに対して実行される一連の操作のことを指し、パイプライン内で指定されたポイントで実行されるように設定されます。CodePipeline上で有効なアクションタイプはsource、build、test、deploy、approval、 invokeになります。
アーティファクト
アクションによって処理されるアプリケーションのソースコード、アプリケーション、定義ファイル、テンプレートなどのデータの集合のことを指します。いくつかのアクションによって生成され、他のアクションによって消費されていきます。
ソースリビジョン
ソースコードの変更によって作成される新しいバージョンのことを指します。実行はソースのリビジョンのみを処理します。GitHubとCodeCommitリポジトリの場合はコミットメッセージで行われます。
おわりに
CodePipelineの解説は以上になります。CodePipelineは開発、テスト、デプロイまでのプロセスを自動化することで、開発速度の底上げを目指したものです。これを利用して、開発プロセスを自動化し、生産性を上げて、アプリケーションをブラッシュアップしたい方はぜひ導入を検討してみてください。