技術ブログ

CircleCI を使った Web サイトのデプロイ

author: yterajimadate: 2016-01-27tags: middleman, circleci

この技術ブログは Middleman で構築され, AWS の S3 にホスティングされています。 この構成の場合 サイトの更新時に CI サービスを利用してデプロイさせることが可能です。

参考:

(今日1日, 各種プロジェクトの CircleCI の設定をいじっていたので, えいやっ!でまとめてやってしまったのが正直なところ)

CircleCI の設定

master ブランチを常にデプロイするように設定しています。

general:
  branches:
    only:
      - master

machine:
  timezone: Asia/Tokyo
  ruby:
    version: 2.2.3

dependencies:
  override:
    - npm install
    - bundle install --path vendor/bundle --jobs=4 --retry=3

test:
  override:
    - bundle exec middleman version

deployment:
  production:
    branch: master
    commands:
      - bundle exec middleman s3_sync

設定するまで S3 のバケットに対する AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_BUCKET の取扱いをどうするのかよくわかっていませんでした。調べたところ CircleCI のプロジェクトごとの settings に GUI で入力する場所がありました。

参考: Set your own!

改善されたこと

リポジトリに権限があればサイトを更新できる

このサイトの github リポジトリに対して master ブランチに merge できるだけの権限があれば誰でもサイトを更新できるようになりました。例えば技術ブログの記事を追加する毎にブランチを用意し, 権限を持つ人が master ブランチに merge すれば勝手にサイトは更新されます。

もちろん merge の前に動作チェック, 記事内容のチェック等は必要です。

AWS_HOGE_FUGA 情報の管理が楽になった

S3 へのデプロイ時に使用する AWS_ACCESS_KEY_ID 等の情報は可能であればメールやチャットで渡す, 専用のリポジトリで管理して共有する, といった作業は避けたいものです。今回のデプロイの改善で必要な情報は CircleCI 上に保存されているため, これらの作業は不要になりました。