CircleCIのバージョン
CircleCIのバージョンには1.0と2.0がありますが今回は1.0で行なっています。
2.0だと自分でカスタマイズしたDockerfileを使えますが、Hugoをビルドしてデプロイするくらいであれば事前に入れておくものがほとんどないので設定が簡単な1.0を使いました。
AWSの設定
IAMユーザーの作成
DeleteObject、ListBucket、PutObjectへアクセスできるユーザーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "aehwzxuew",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::example.com",
"arn:aws:s3:::example.com/*"
]
}
]
}
バケットポリシーの設定
匿名ユーザーへの読み取り専用アクセス許可の設定をします。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example.com/*"]
}
]
}
CircleCIの設定
AWSにアクセスするための設定をCircleCIにします。AWS Permissionsを選択して
IAMユーザーを作った時に表示されるAccessKeyとSecretAccessKeyを入力します。
circle.ymlの設定
circle.ymlを↓のように記入してgit管理しているルートディレクトリに置きます。
そして、hugoとswscliをインストールしてhugoコマンドでpublic以下に書き出してs3のバケットにアップロードします。
machine:
timezone: Asia/Tokyo
dependencies:
pre:
- go get -v github.com/spf13/hugo
- pip install awscli
test:
override:
- hugo
deployment:
master:
branch: master
commands:
- aws s3 sync public/ s3://example.com