CodePipeline#GitHub森田力2021.06.09この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。この記事では、CodePipelineを実践するにあたってCodeCommit、CodeBuild、CodeDeployを順に行います。最後にそれぞれをCodePipelineから呼び出します。CodeCommitIAMユーザの作成リポジトリをcloneするユーザを作成します。認証情報を生成します。生成されたユーザ名、パスワードをメモします。リポジトリの作成CodeCommitのリポジトリより新規のリポジトリを作成します。HTTPSクローンを選択し、URLをコピーします。コマンドラインにて下記を実行します。コピーしたURLすると、認証情報が求められますので、先ほどメモした認証情報を入力します。認証後リポジトリがクローンされます。pushするクローンしたリポジトリ内にappspec.yml、buildspec.yml、main.py、build.py、env_create.sh、run.shを準備します。ファイルは、下記より利用しました。下記コマンドで追加します。githubリポジトリのURLその後、下記コマンドを実行し、各リポジトリにpushを行います。masterすると、CodeCommitのリポジトリにファイルが追加されていることが確認できます。CodeBuild続いてCodeBuildを行います。ビルドプロジェクトを作成します。ソースには先ほど作成したCodeCommitのリポジトリを指定します。Linux2を使用します。他の設定はデフォルトとして作成を行います。作成後以下の画面となるので、ビルドの開始を選択します。ビルドが始まるとログが表示され、ステータスが成功となれば問題ありません。CodeDeployIAMロールの作成AWSCodeDeployRoleをアタッチしたCodeDeploy用のIAMロールを作成します。続いて、デプロイ対象であるEC2用のIAMロールを作成します。Linuxを指定しインスタンスの作成を行います。IAMロールは先ほど作成したものを指定します。ユーザデータには、CodeDeployエージェントをインストールするようにこちらにあるコードを貼ります。タグでNameを任意の名前で設定します。セキュリティグループについては、ssh接続ができるように指定し、作成まで進めます。CodeDeployの設定アプリケーションの作成を行います。今回はEC2を指定します。続いて、デプロイグループの作成を行います。サービスロールには、CodeDeploy用のIAMロールを指定します。デプロイタイプはインプレースとします。環境設定では、先ほど作成したEC2インスタンスのNameを指定します。Loadバランサーは無効にし、作成をします。下記のような画面となるので、デプロイを作成を選択します。リビジョンタプをGitHubで指定し、GitHubでのメールアドレスを入力します。その後、GitHubのリポジトリ名、コミットIDを入力し、デプロイの作成を行います。するとデプロイが開始され、成功すると以下のような画面となります。CodePipeline最後に、今までのCodeCommit、CodeBuild、CodeDeployを繋げます。新しいサービスロールを指定し、次に進みます。ソースには、先ほどCodeCommitを指定します。ビルドも作成したプロジェクトを指定します。デプロイも先ほどのアプリケーションを指定し、パイプラインの作成を行います。すると、このようにパイプラインが実行されていきます。正常に進むと以下のようになります。再度内容を変更しpushするmain.pyを以下のように変更します。soup.find('title').textprint(title)変更後下記コマンドを実行し、再度pushします。masterすると、CodePipelineも再度実行が始まります。EC2に接続し、ログ(scripts.log)を確認すると、正常に変更されていることが確認できます。最後にコードをホスティングし、自動的にビルド、テストして、AWSにデプロイという流れを一通り体験しましたが、非常に便利だと感じました。今回は、EC2にデプロイを行なってみましたが、他にLambdaやECSにもデプロイ可能です。