[AWS]Codepipeline-テストソースと導入手順の自動化
7183 ワード
AWS Codepipelineは、ソフトウェア発行プロセスのモデリングと可視化に使用されます.
これは、コードが変更されるたびにコードを自動的に構築、テスト、導入できる継続的な配信サービスです.
これは、開発者が導入スクリプトを手動でトリガーすることなく、アプリケーションの新しい機能とエラー修復を迅速かつ安全に公開できることを意味します.
ここでは、SourceフェーズでCodecompit、DeployフェーズでCodeDeployを使用します.
変更をCodecompitにプッシュするとパイプラインがトリガーされ、パイプラインはCodeDeployを使用して自動的に変更をEC 2に配布するロジックを実行します.
(次のリンクのAWSチュートリアルを参照).
https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/tutorials-simple-codecommit.html
パイプラインの実行時にソースコードをインポートするライブラリを作成します.レポートの作成>名前の設定> の作成
AWSチュートリアルのサンプルコードをダウンロードし、Codecompit Repositoryにファイルをアップロードします.
SampleApp Linuxファイルリンク
上のリンクのファイルをローカルにダウンロードして解凍すると、MyDemoRepoディレクトリには合計3つのファイル、1つのフォルダ(scripts)、scriptsフォルダの下の3つのファイルがあります.
まず、次の手順に3つのファイルを追加します.で生成されたレポート>Add File>Upload File>Choose File>ファイルの選択>作成者名とメール>Commit Changes の選択
以上の3つのファイルをアップロードすると、スクリプトフォルダの下にあるファイルが次のようにアップロードされます.ファイルの作成>ファイルの内容のコピー+貼り付け>ファイル名にフォルダ/ファイル名を順番に記入(scripts/install dependencies)>作成者名とメールボックスを記入>Commit changes 残りの2つのファイルも同じ操作を実行します.
すべてのファイルをアップロードすると、repositoryに次のように表示されます.
これで、サンプルアプリケーションを配置するためにEC 2インスタンスを作成できます.
EC 2インスタンスにcodeployエージェントをインストールし、Codeployデプロイメントでインスタンスを使用します.
さらに、IAMロールをインスタンスに接続して、CodeDeployエージェントがアプリケーションの配備に使用するファイルをインポートできるようにすることもできます.
次の図に示すように、AmazonEC 2 RoleforAWSCodeDeployポリシーを接続するIAMロールを作成します.
インスタンスを作成するときに、次の項目を確認して入力します.
詳細については、リンク[1]の手順3を参照してください. Auto-assign Public IP > Enable. の前に作成されたIAMロール選択 詳細>ユーザーデータ>下表 Tag > Name/MyCodePipelineDemo セキュリティグループ>(1)SSH:MYIP/(2)HTTP:MYIP このとき、指定されたタグは、CodeDeployで分散ターゲットEC 2インスタンスを検索するために使用されます.
インスタンスの構成後にリビジョンを展開するには、Codeeployでアプリケーションを作成する必要があります.
アプリケーションはCodeDeployです.CodeDeployは、デプロイメント中に正しいリビジョン、デプロイメント構成、およびデプロイメントグループの名前またはコンテナが参照されるようにします.
まず、CodeDeployの導入を許可する役割を作成します.
CodeDeployRoleという名前のロールが作成されました.
CodeDeploy > Applications > Create application
EC 2で実行されるので、EC 2/On-presentsとしてCompute Platformを選択します.
配置グループを作成します.
デプロイ・グループには、デプロイ中に使用される設定と構成が含まれます.ほとんどのデプロイ・グループの設定は、アプリケーションが使用するコンピューティング・プラットフォームに依存します.
前に作成したCodeDeployサービスロールを選択します.
In-place > Amazon EC2 instances > Key:Name/Value:MyCodePipelineDemo
=value値は、前に作成したEC 2インスタンスにタグ名を保持します. CodeDeployDefault.OneAttime>ロードバランサはここでは使用されないため、選択したEnablelロードバランシングボックスを解放できます.
SourceとCodeDeployの構成が完了しました.
コードがプッシュされたときに自動的に実行されるパイプラインがCodeCommit Repositoryに作成されます. Pipeline > Create pipeline
ソース・プロバイダとしてAWS CodeCommit>Repositoryを選択し、前に作成したCodecompit Repository名>Branch nameをmain>その他default>Next を選択します.
Buildフェーズはここではテストしないので、Skipでしょう.
Skip build stageを選択すると、次のメッセージが表示されます.Skipをクリックします.
deployステップでは、以前に作成したリソース>Next>Create Pipelineの順に選択します.
これにより、パイプラインを作成してから一定時間が経過すると、ソース→配置ステップが次のようにSucceedに変更されます.
先に作成したEC 2インスタンスのPublic DNSを使用してアクセスすると、アプリケーションが正常に導入されたことを示す画面が表示されます.
次に、コードがCODECommit Repositoryで実際に変更されたときに、パイプラインが前の構成に従って動作しているかどうかを見てみましょう.
ここで、Codecompit repositoryのhtmlファイルを変更します.
htmlファイルでページの背景色や一部を変更して変更をコミットします.
変更後すぐにCodepelineをチェックし、ライブラリ内の変更を検出してパイプラインをトリガーします.
以前に配備されたsourceとdeployとは異なる実行IDを持つパイプラインが作成されていることがわかります.
パイプラインの各ステップのステータスがSuccededに変更されると、前のテストページがリフレッシュされます.
次のように更新されたページが表示されます.
ここでは、単純な「ソースと導入」(Source and Deploy)パイプラインを作成しました.
必要に応じて、より複雑な「4ステップ」(Source、Build、Test、Deploy)パイプラインを構成することもできます.
次の投稿では、ここで作成した2つのステップパイプラインを使用して、パイプラインのステータスを変更します.
CloudWatch Eventsルールの設定をテストし、Eメール通知を受信します.
これは、コードが変更されるたびにコードを自動的に構築、テスト、導入できる継続的な配信サービスです.
これは、開発者が導入スクリプトを手動でトリガーすることなく、アプリケーションの新しい機能とエラー修復を迅速かつ安全に公開できることを意味します.
ここでは、SourceフェーズでCodecompit、DeployフェーズでCodeDeployを使用します.
変更をCodecompitにプッシュするとパイプラインがトリガーされ、パイプラインはCodeDeployを使用して自動的に変更をEC 2に配布するロジックを実行します.
(次のリンクのAWSチュートリアルを参照).
https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/tutorials-simple-codecommit.html
1.Codecompitリポジトリの作成
パイプラインの実行時にソースコードをインポートするライブラリを作成します.
2.サンプルコードをCodecompit Repositoryに追加
AWSチュートリアルのサンプルコードをダウンロードし、Codecompit Repositoryにファイルをアップロードします.
SampleApp Linuxファイルリンク
上のリンクのファイルをローカルにダウンロードして解凍すると、MyDemoRepoディレクトリには合計3つのファイル、1つのフォルダ(scripts)、scriptsフォルダの下の3つのファイルがあります.
/tmp
└-- MyDemoRepo
│-- appspec.yml
│-- index.html
│-- LICENSE.txt
└-- scripts
│-- install_dependencies
│-- start_server
└-- stop_server
コンソールを使用して、これらのファイルをリポジトリにアップロードします.まず、次の手順に3つのファイルを追加します.
以上の3つのファイルをアップロードすると、スクリプトフォルダの下にあるファイルが次のようにアップロードされます.
すべてのファイルをアップロードすると、repositoryに次のように表示されます.
3.EC 2 Linuxインスタンスを作成し、Codedeeployエージェントをインストールする
これで、サンプルアプリケーションを配置するためにEC 2インスタンスを作成できます.
EC 2インスタンスにcodeployエージェントをインストールし、Codeployデプロイメントでインスタンスを使用します.
さらに、IAMロールをインスタンスに接続して、CodeDeployエージェントがアプリケーションの配備に使用するファイルをインポートできるようにすることもできます.
3-1. IAMロールの作成
次の図に示すように、AmazonEC 2 RoleforAWSCodeDeployポリシーを接続するIAMロールを作成します.
3-2. インスタンスの作成
インスタンスを作成するときに、次の項目を確認して入力します.
詳細については、リンク[1]の手順3を参照してください.
#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./install auto
4.CodeDeployでのアプリケーションの作成
インスタンスの構成後にリビジョンを展開するには、Codeeployでアプリケーションを作成する必要があります.
アプリケーションはCodeDeployです.CodeDeployは、デプロイメント中に正しいリビジョン、デプロイメント構成、およびデプロイメントグループの名前またはコンテナが参照されるようにします.
4-1. CodeDeploy Serviceロールの作成
まず、CodeDeployの導入を許可する役割を作成します.
CodeDeployRoleという名前のロールが作成されました.
4-2. CodeDeployでのアプリケーションの作成
4-3. グループ設定の設定
配置グループを作成します.
デプロイ・グループには、デプロイ中に使用される設定と構成が含まれます.ほとんどのデプロイ・グループの設定は、アプリケーションが使用するコンピューティング・プラットフォームに依存します.
前に作成したCodeDeployサービスロールを選択します.
=value値は、前に作成したEC 2インスタンスにタグ名を保持します.
5.CodePipelineでパイプを作成する
SourceとCodeDeployの構成が完了しました.
コードがプッシュされたときに自動的に実行されるパイプラインがCodeCommit Repositoryに作成されます.
Buildフェーズはここではテストしないので、Skipでしょう.
Skip build stageを選択すると、次のメッセージが表示されます.Skipをクリックします.
deployステップでは、以前に作成したリソース>Next>Create Pipelineの順に選択します.
これにより、パイプラインを作成してから一定時間が経過すると、ソース→配置ステップが次のようにSucceedに変更されます.
先に作成したEC 2インスタンスのPublic DNSを使用してアクセスすると、アプリケーションが正常に導入されたことを示す画面が表示されます.
6.コードをCodeCommitライブラリで修正する
次に、コードがCODECommit Repositoryで実際に変更されたときに、パイプラインが前の構成に従って動作しているかどうかを見てみましょう.
ここで、Codecompit repositoryのhtmlファイルを変更します.
htmlファイルでページの背景色や一部を変更して変更をコミットします.
変更後すぐにCodepelineをチェックし、ライブラリ内の変更を検出してパイプラインをトリガーします.
以前に配備されたsourceとdeployとは異なる実行IDを持つパイプラインが作成されていることがわかります.
パイプラインの各ステップのステータスがSuccededに変更されると、前のテストページがリフレッシュされます.
次のように更新されたページが表示されます.
ここでは、単純な「ソースと導入」(Source and Deploy)パイプラインを作成しました.
必要に応じて、より複雑な「4ステップ」(Source、Build、Test、Deploy)パイプラインを構成することもできます.
次の投稿では、ここで作成した2つのステップパイプラインを使用して、パイプラインのステータスを変更します.
CloudWatch Eventsルールの設定をテストし、Eメール通知を受信します.
Reference
この問題について([AWS]Codepipeline-テストソースと導入手順の自動化), 我々は、より多くの情報をここで見つけました https://velog.io/@squirrel/AWS-Codepipeline-Source-및-Deploy-단계-자동화-테스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol