10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CircleCI、CodeDeploy、S3を使って、GitHubにpushしたらEC2にデプロイされる仕組みを作る

Last updated at Posted at 2016-03-10

備忘録。
かなり適当なので、ツッコミ大歓迎です。

1. IAMでEC2用ロール作成してEC2に設定

  • 作成するロールのタイプはEC2、ポリシーはAmazonS3ReadOnlyAccessのみ。
  • EC2インスタンス作成時でないとロールは設定できない。
  • なので既にEC2インスタンスが存在する場合は、作りなおす必要がある。

2. EC2インスタンスにCodeDeploy Agentをインストール

EC2インスタンスにログインして下記コマンド実行

bash
sudo yum update
sudo yum install aws-cli -y
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1
chmod +x ./install
sudo ./install auto

3. IAMでCodeDeploy用ロール作成

設定するタイプはCodeDeploy、ポリシーは下記URL参照。
http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-service-role.html

よくわからない場合は、とりあえずAWSCodeDeployFullAccessを設定すれば動く。

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

  • 新しいアプリケーションを作成する
  • タグはEC2インスタンスを指定
  • デプロイ設定は任意のものを選ぶ
  • サービスロールには前述のCodeDeploy用ロールを指定

5. GitHubでリポジトリ作成

プライベートリポジトリでもOK。

6. circle.yml設定

  • リポジトリのルートにcircle.ymlを追加して下記のように設定(コメント要削除)
circle.yml
machine: # タイムゾーンや言語バージョン設定など
    timezone: Asia/Tokyo
    node:
        version: 5.2.0
    post:
        - npm install -g npm@3.3.12
dependencies: # 依存ライブラリ等のインストール、ビルド
    post:
        - npm run build
deployment: # デプロイ設定
    staging: # 任意の文字列
        branch: master # ブランチ名
        codedeploy:
            app_app_app: # CodeDeployで作成したアプリケーション名
                deployment_group: group_group_group # CodeDeployで作成したデプロイグループ名
                application_root: /public # デプロイしたいディレクトリ
                region: ap-northeast-1
                revision_location:
                    revision_type: S3
                    s3_location:
                        bucket: xxxxxx # バケット名
                        key_pattern: '{BUILD_NUM}_{COMMIT}.zip'

7. appspec.yml設定

  • デプロイしたいディレクトリのルートにappspec.ymlを追加して下記のように設定(コメント要削除)
appspec.yml
version: 0.0
os: linux
files:
   - source: / # ファイル参照元ディレクトリパス
     destination: /var/www/dest_dest_dest/ # ファイルコピー先ディレクトリパス
hooks:
    BeforeInstall: # ファイルコピー前に実行する内容
        - location: before_install.sh # ファイル削除とか

8. IAMでCircleCI用ユーザー作成

設定するタイプはCodeDeploy、ポリシーは下記URL参照。
http://jedipunkz.github.io/blog/2015/11/15/circleci-codedeploy/

よく分からない場合は、とりあえずAWSCodeDeployFullAccessAmazonS3FullAccessを設定すれば動く。

9. CircleCIでプロジェクト追加

  • Add Projectsをクリックしてプロジェクト一覧画面に遷移
  • GitHubアカウントを選択する
  • Build Projectをクリックするとプロジェクトを追加できる

10. CircleCIにIAMユーザーを紐付け

  • Buildsをクリックしてビルド一覧画面に遷移
  • さっき作ったプロジェクトを選択
  • Project Settingsをクリックしてプロジェクト設定画面に遷移
  • AWS PermissionsをクリックしてAWS権限設定画面に遷移
  • さっき作ったCircleCI用ユーザーのアクセスキーとシークレットアクセスキーを入力(ユーザー名ではないので注意)
  • Save AWS Keysをクリックして保存

11. GitHubのリポジトリにpush

pushすると一連のデプロイが実行されるのでCircleCIで確認する

12. 完了

デプロイされているか確認する

10
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?