備忘録。
かなり適当なので、ツッコミ大歓迎です。
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/
よく分からない場合は、とりあえずAWSCodeDeployFullAccess
とAmazonS3FullAccess
を設定すれば動く。
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. 完了
デプロイされているか確認する