Contenu connexe
Similaire à CodePipeline入門 (20)
CodePipeline入門
- 10. 準備
• AMS CLI
必要なもの
• buildspec.yml
• appspec.yml
( localにインストール. commit時に必要なCredential情報の登録で使用 )
( Buildステージでの動作を定義するファイル. 必須 )
( Deployステージでの動作を定義するファイル. 必須 )
- 11. version: 0.1
phases:
build:
install:
runtime-versions:
php: 73
commands:
- aws deploy push --region
ap-northeast-1 --application-name
{ $your_application_name }
--s3-location
s3://{ $your_application_name }codebuild/app.zip
--source src
artifacts:
files:
- '**/*'
base-directory: src
name: app.zip
buildspec.yml
ランタイムのバージョンはbuildアプリ
ケーション作成時に選択するものを指定
アーティファクトの名称を指定。
srcディレクトリ以下を対象とする。
ymlファイルはsrcと同階層に設置。
- 12. version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/
appspec.yml
アプリケーションのルートディレクトリに配置します。
( 先ほどのsrcの例だとsrcの一階層下)
後にこちらのファイルへデプロイ時のhookなどの動作
を追加していきます
CodeCommitNext ...
- 14. $ aws configure
$ AWS Access Key ID : { ******************** }
$ AWS Secret Access Key : { ******************** }
$ Default region name : { e.g. ap-northeast-1 }
$ Default output format : { json | text | table }
IAMのクレデンシャル情報を使ってawsのリポジトリにcommitします
CodeCommit
- 15. $ git config --global credential.helper
'!aws —region { $region } codecommit
$ git config --global credential.UseHttpPath true
credential-helper $@'
Code BuildNext ...
AWS 認証情報プロファイルでGit認証情報ヘルパーを使用するように指定します
オプションにて一緒にリージョンの設定をしています。
$region = e.g. “ap-northeast-1”
CodeCommit
- 19. 1. EC2用にS3アクセス用のロールを作成
( CodeBuildで生成したアーティファクトを参照できるようにします )
2. 作成したロールをEC2インスタンスに割り当てる
( ec2 → インスタンスを選択 → アクション → インスタンスの設定 → ロールの割り当て )
3. EC2インスタンスにCodeDeployエージェントをインストール
4. CodeDeploy用のIAMロールを作成
5. CodeDeployアプリケーションを作成
( EC2インスタンスにSSHでログインしcurlなりwgetで導入します ※次ページで詳しく)
( AWSCodeDeployRoleをアタッチ )
( 名称はCodeBuildと合わせる )
6. デプロイグループを作成
( デプロイタイプは特に難しいことをしないのであればインプレースデプロイを指定 )
( 環境設定ではタグのキーと値をEC2インスタンスと一致させます )
CodeDeploy
- 20. $ curl -O https://aws-codedeploy-
$ wget https://aws-codedeploy-
wget
$region = e.g. “ap-northeast-1”
{ $region }.s3.amazonaws.com/latest/install && sudo
chmod +x ./install && sudo ./install auto
curl
{ $region }.s3.amazonaws.com/latest/install
CodeDeploy
EC2インスタンスに、CodeDeployエージェントをインストール
- 21. $ sudo service codedeploy-agent status
CodePipelineNext ...
正常にインストールできたか確認を行います
エージェントのインストールがうまくいかない場合
• appspec.ymlが正しく書かれているか?
• ロールの割り当てよりも前にCodeDeployエージェントをインストールしてしまった場合は
エージェントの再起動が必要
• エージェントのログを確認。(※以下のパスは私のCentOS7における環境です)
tail -f -n 200 /var/log/aws/codedeploy-agent/codedeploy-agent.log
デプロイがうまくいかない場合
CodeDeploy
- 22. ( サービスロールは新しいサービスロールを選択すると自動生成、割り当てが行われます )
1. マネジメントコンソールから新規Pipelineを作成
2. ソースステージを追加
3. ビルドステージを追加
4. デプロイステージを追加
(作成したCodeCommitとpusu時に動作させたいブランチを指定します)
( 作成したCodeBuildプロジェクトを指定します )
( 作成したCodeDeployアプリケーションとデプロイグループを指定します)
5. Pipelineは作成時に1度動作し、以後Push時に動作します
AWS公式 リファレンス : CodePipelineでパイプラインを作成する
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/pipelines-create.html
CodePipeline
- 24. version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/
appspec.yml
permissions:
- object: /var/www/html/auth
pattern: "**"
owner: root
group: root
mode: 606
type:
- file
- object: /path/to/log
pattern: “sample.log"
owner: root
group: root
mode: 606
type:
- file
ドキュメントルート
ワイルドカードで指定
ファイル名で指定
詳しくはAWS公式リファレンスを参照
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/
userguide/reference-appspec-file-example.html
- 27. appspec.yml
files: …
hooks:
BeforeInstall:
- location: script/clean.sh
runas: root
AfterInstall:
- location: script/destroy_session.sh
runas: root
ApplicationStart :
- location: script/clean_opcache.sh
runas: root
ValidateService:
- location: sample.sh
permissions: …
rm -rf /var/www/html/
php opcache消去用
wgetでphpスクリプトを叩く
rm -rf /session_file_path*
BeforeInstallでも良さそう