[AWS]Codepipeline-テストソースと導入手順の自動化


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

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つのファイルを追加します.
  • で生成されたレポート>Add File>Upload File>Choose File>ファイルの選択>作成者名とメール>Commit Changes
  • の選択



    以上の3つのファイルをアップロードすると、スクリプトフォルダの下にあるファイルが次のようにアップロードされます.
  • ファイルの作成>ファイルの内容のコピー+貼り付け>ファイル名にフォルダ/ファイル名を順番に記入(scripts/install dependencies)>作成者名とメールボックスを記入>Commit changes
  • 残りの2つのファイルも同じ操作を実行します.



    すべてのファイルをアップロードすると、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を参照してください.
  • Auto-assign Public IP > Enable.
  • の前に作成されたIAMロール選択
  • 詳細>ユーザーデータ>下表
  • #!/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
  • Tag > Name/MyCodePipelineDemo
  • セキュリティグループ>(1)SSH:MYIP/(2)HTTP:MYIP
  • このとき、指定されたタグは、CodeDeployで分散ターゲットEC 2インスタンスを検索するために使用されます.

    4.CodeDeployでのアプリケーションの作成


    インスタンスの構成後にリビジョンを展開するには、Codeeployでアプリケーションを作成する必要があります.
    アプリケーションはCodeDeployです.CodeDeployは、デプロイメント中に正しいリビジョン、デプロイメント構成、およびデプロイメントグループの名前またはコンテナが参照されるようにします.

    4-1. CodeDeploy Serviceロールの作成


    まず、CodeDeployの導入を許可する役割を作成します.


    CodeDeployRoleという名前のロールが作成されました.

    4-2. CodeDeployでのアプリケーションの作成

  • CodeDeploy > Applications > Create application
  • EC 2で実行されるので、EC 2/On-presentsとしてCompute Platformを選択します.

    4-3. グループ設定の設定


    配置グループを作成します.
    デプロイ・グループには、デプロイ中に使用される設定と構成が含まれます.ほとんどのデプロイ・グループの設定は、アプリケーションが使用するコンピューティング・プラットフォームに依存します.

    前に作成したCodeDeployサービスロールを選択します.
  • In-place > Amazon EC2 instances > Key:Name/Value:MyCodePipelineDemo
    =value値は、前に作成したEC 2インスタンスにタグ名を保持します.
  • CodeDeployDefault.OneAttime>ロードバランサはここでは使用されないため、選択したEnablelロードバランシングボックスを解放できます.

  • 5.CodePipelineでパイプを作成する


    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を使用してアクセスすると、アプリケーションが正常に導入されたことを示す画面が表示されます.

    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メール通知を受信します.