MkDocs 静的サイト CI/CD デプロイメントパイプライン(GitHub × CircleCI2.0 × Amazon S3)構築
はじめに
GitHub に MkDocs のドキュメントを push したタイミングで CircleCI2.0 が走り静的ドキュメントを生成(mkdocs build
)、AWS S3 に公開するまでの CI/CD パイプラインを構築します。
静的サイトをデプロイする Amazon S3 バケットを準備
S3 バケット作成
S3 Web サイトホスティング関連の設定
Amazon S3 に PUT する用の CircleCI IAM ユーザーを作成
- ポリシー作成
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:DeleteObject", "s3:ListBucket"],
"Resource": ["arn:aws:s3:::{S3バケット名}"]
}
]
}
- IAM CircleCI ユーザを追加、アクセスの種類:プログラムによるアクセス
- アクセスキーとシークレットアクセスキーをメモる
- ユーザーの ARN をメモる
Amazon S3 バケットに CircleCI ユーザのアクセス権限を付ける
- アクセス権限タブ
- バケットポリシーを設定する
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::{S3バケット名}/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"XXX.XXX.XXX.XXX/32" ← S3に対してアクセスできるIPを指定
]
}
}
},
{
"Sid": "forCircleCi",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{メモった ユーザーのARN}"
},
"Action": ["s3:PutObject", "s3:ListBucket", "s3:DeleteObject"],
"Resource": [
"arn:aws:s3:::{S3バケット名}"
]
}
]
}
CircleCI 設定ファイル 準備
-
.circleci/config.yml
ファイル を作成する
version: 2
jobs:
mkdocsbuild:
docker:
- image: circleci/python:3.7
working_directory: ~/repo
environment:
- AWS_S3_BUCKET_NAME: { S3バケット名 }
steps:
- checkout
- run:
name: Install mkdocs
command: sudo pip install mkdocs
- run:
name: mkdocs build
command: sudo mkdocs build
- run:
name: Install awscli
command: sudo pip install awscli
- run:
name: Deploy to S3
command: aws s3 sync ~/repo/site s3://${AWS_S3_BUCKET_NAME}/ --exact-timestamps --delete # ← 削除ファイルも反映するように
workflows:
version: 2
mkdocs:
jobs:
- mkdocsbuild:
filters: # ← masterブランチのみS3へUP
branches:
only:
- master
CircleCI プロジェクト設定
CircleCI dashboard へアクセス
CircleCI AWS アクセスキーとシークレットアクセスキーを環境変数として追加する。
アクセスキー ID を AWS_ACCESS_KEY_ID という変数、
シークレットアクセスキーを AWS_SECRET_ACCESS_KEY という変数に格納
これで GitHub に push すれば CircleCI が走り、S3 で静的ドキュメントが公開される
Author And Source
この問題について(MkDocs 静的サイト CI/CD デプロイメントパイプライン(GitHub × CircleCI2.0 × Amazon S3)構築), 我々は、より多くの情報をここで見つけました https://qiita.com/yusukaaay/items/e64db605dc5e24c276ed著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .