ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

レガシーな静的Webサイトを一新!その③ CircleCIとGithub連携でDevOps!

はじめに

レガシーなサイトをcssフレームワークをいれてリニューアルし、独自ドメインをとってAWS S3にWebホスティングするところまで前回実施しました。

take-she12.hatenablog.com

take-she12.hatenablog.com

今回はCircleCIとGithub連携編です。これによってgitへのpushと連動してS3(本番環境)の更新を自動的に起こします。

CircleCI

社内のような閉じた環境だとJenkinsを使っていますが、CircleCIも気になってたのでいいチャンスです。使ってみます。

circleci.com

github連携でサインアップできますね!

f:id:take_she12:20161205223527p:plain:w500

githubリポジトリから選択。

f:id:take_she12:20161205223542p:plain:w500

buildに失敗したようです。何も設定してないしな。

f:id:take_she12:20161205223546p:plain:w500

IAMユーザの作成

deployするためのユーザを作成します。AWSのサービスからIAMを選びます。

f:id:take_she12:20161206011932p:plain:w500

s3-deploy-userというユーザで、S3へのアクセスを許可するポリシーを選びます。

f:id:take_she12:20161206011949p:plain:w500

ユーザを作成します。

f:id:take_she12:20161206011953p:plain:w500

この画面で見えるアクセスキーとシークレットアクセスキーは必ずコピペで保存しておいてください。長いです。

CircleCIでAWSアカウントと連携

プロジェクトからAWSのアカウント連携で、先ほど表示されたアクセスキーとシークレットアクセスキーを入力します。

f:id:take_she12:20161206012011p:plain:w500

プロジェクトのtopにcircle.ymlを以下の内容で設置します。

machine:
  timezone:
    Asia/Tokyo

dependencies:
    override:
        - sudo pip install awscli
    post:
        - aws configure set region ap-northeast-1

test:
  override:
    - echo "Nothing to do here"

deployment:
  production:
    branch: master
    commands:
      - aws s3 sync . s3://toketenakunaru.com/ --delete

toketenakunaru/circle.yml at master · takeshe12/toketenakunaru · GitHub

build成功しました。(何度か失敗してるのはご愛嬌。)

f:id:take_she12:20161206012024p:plain:w500

おわりに

これにてgitのmasterにpush時に自動的にCircleCIがまわって本番環境(S3)にdeployされるようになりました。とっても楽ですね。もっとちゃんとするならstaging環境を作ってそこでテストして、okならマージとしてもよいかもしれませんね。

しばらくは自分のHPをおもちゃにいろいろ遊んでいきます!無事やりたいことができてよかった。

以下の記事が大変参考になりました。

qiita.com