今までは、手動でデプロイしていましたが、やはりナウイ感じにしようと思いAWSのサービスを使ってgit push
すると自動でデプロイできるように設定します。
今回は、CodeBuild,CodePipelineの設定をメモしておきます。
使うもの
まずはbuildspec.yml
を作成します。buildspec.yml
はフォルダ直下におきます。
僕の場合は、以下のようにしました。CloudFrontのキャッシュ削除もしようと思ったのですが、CloudFrontはキャッシュを削除する度にお金がかかるのでやめました。
オペレーティングシステムはUbuntu
です。
version: 0.2
env:
variables:
LC_CTYPE: "C.UTF-8"
hugo_version : "0.36.1"
bucket_name: "shou2017.com"
phases:
install:
commands:
- pip install awscli --upgrade --user
- wget https://github.com/gohugoio/hugo/releases/download/v${hugo_version}/hugo_${hugo_version}_Linux-64bit.deb
- dpkg -i hugo_${hugo_version}_Linux-64bit.deb
build:
commands:
- hugo
post_build:
commands:
- echo "S3 Upload Beginning"
- aws s3 sync --delete ./public s3://${bucket_name}
- echo "S3 Upload Complete"
コンソールからCodeBuildにいきます。プロジェクトの作成を選択。
以下のように作成します。
S3でbuildするのですが、その際にCodeBuildがS3にアクセスできるようにcodebuild-blog-service-role
にポリシーのアタッチをします。
コンソールからIAMを選択します。
ロールに先ほど作ったcodebuild-blog-service-role
があると思います。
codebuild-blog-service-role
を選択すると以下のような詳細が出てきます。
ポリシーのアタッチを選択し、AmazonS3FullAccess
を追加します。
CodeBuildに戻り、ビルドをすると成功するはずです。
次はCodePipelineの設定を行います。
コンソールからCodePipelineに移動し、パイプラインの作成を選択。以下のように設定していきます。
これでCodeCommitにpushすると自動でデプロイできるようになりました。
個人のブログ程度ですとAWSの無料枠の範囲で収まると思います。そんなに更新しないし。
有料になったとしてもたかがしれてるのでHugoでメディア運営をするというのも面白いかもしれません。ライターの人にgitを覚えてもらえばいいわけですから。
gitで管理できるのでWordPressとかよりも効率的な運営ができそうです。