JekyllをBitbucketからwercker通してさくらVPSにビルドする(後編)

  • 07 Jul 2014

JekyllをpushしたらさくらのVPSに自動的にデプロイされるようにしてみたので、その手順をご紹介します。今回はweckerからさくらVPSにdeployするところまでです。

この記事は古くなっています。最新の情報はこちらの記事をご覧ください。
WerckerでSSHキーを使ってrsyncでVPSにデプロイする

前回記事

JekyllをBitbucketからwercker通してさくらVPSにビルドする(前編)

構成

Jekyll+Bitbucket+wercker+さくらVPS構成 JekyllのソースをPushするとBitbucket経由でwerckerでbuildが走り、問題なければVPSにデプロイ、という形です。

前提

  1. Bitbucketを利用していて、既にjekyllのレポジトリがある
  2. さくらインターネットのVPSを既に契約してあり、運用している
  3. Bitbucketにpushするとwerckerでbuildが動くようになっている

3ができていない人は前回の記事「JekyllをBitbucketからwercker通してさくらVPSにビルドする(前編)」をご参照ください。 今回はweckerからさくらVPSにdeployするところを紹介します。

全体の流れ

wercker側の設定

  1. VPSへログインするための認証鍵の作成
  2. 認証鍵をdeployで利用するための設定
  3. deployする対象となるブランチを設定

さくらVPS側の設定

  1. deploy用ユーザーの作成
  2. werckerで生成した公開鍵の登録

wercker.ymlの設定

  1. wercker.ymlにdeployの設定を記述

wercker側の設定

MyAppsからアプリケーションを選択。 アプリケーション選択

settingsを選択。 アプリケーション選択

Deploy targetsをCustom deployに変更 アプリケーション選択

Deploy target nameはご随意に(私はSAKURAにしました)。
あとオートでデプロイするブランチを指定してください(masterでいいと思います)。
アプリケーション選択

引き続きさくらのVPSにログインするための鍵を生成します。
少し下にスクロールしてSSH keysのところで
Generate new key pairを押してください。
アプリケーション選択

出来上がった鍵(公開鍵)をテキストに保存しておきます(あとで使います) アプリケーション選択

最後に生成した鍵を後ほど修正するwercker.yml内で使用する設定をします。
ENVIRONMENT VARIABLEのところは随意に設定できますが、
SAKURA_KEYとでもしてOKを押してくださいです。
で、更にその下のsaveまで押して完了です。
アプリケーション選択

これでwerckerの設定は完了。

さくらVPS側の設定

続いてVPSの設定です。

# rootに
$ su -

# deploy用ユーザー`wercker`の作成(名前はwercker出なくても可能)。
$ adduser wercker
$ su - wercker

# 先ほどwercker内で生成した公開鍵の登録
$ cd ~/
$ mkdir .ssh
$ vim .ssh/authorized_keys

# ↑werckerで生成した認証鍵の公開鍵をペースト
$ chmod -R 700 .ssh
$ chmod 644 .ssh/authorized_keys

パーミッションの設定は必須です。 VPS側の設定は以上です。

wercker.ymlの編集

私の作ったwercker.ymlをベースにコメントで解説します。

box: wercker/ruby
# Build definition
build:
  steps:
    - bundle-install
    - script:
        name: generate site
        code: bundle exec jekyll build --trace
# ここまでは前回のポストで説明


# 今回は以下のデプロイの定義をします
deploy:
  steps:
   - add-to-known_hosts:
      # 下のhostnameはご自身が契約されているVPSのドメインかIPを入力
      # ex.) hostname: www9999ue.sakura.ne.jp
      hostname: xxxxxxxxxxxxxxx

   - mktemp:
      envvar: PRIVATEKEY_PATH

   - create-file:
      name: write key
      filename: $PRIVATEKEY_PATH

      # 下のcontentでは、先ほどENVIRONMENT VARIABLEで設定して変数を使用
      # (_PRIVATEを付けるのは鍵として利用する場合のみです)
      content: $SAKURA_KEY_PRIVATE
      overwrite: true
      hide-from-log: true

   - script:
      name: transfer application
      code: |
        pwd
        ls -la

        # rsyncの設定
        # scpでも構いません。
        rsync -avzr -e "ssh -i $PRIVATEKEY_PATH -o StrictHostKeyChecking=no -o UserKnownHostsFile=no" $WERCKER_ROOT/_site/* wercker@xxxxxxxxxxxxxxx:/var/www/wwld.jp/

VPSのポート番号を変えている場合は、sshコマンドの記述で-p ポート番号を追記してください。

masterでpush

以上の設定を終えたらmasterブランチでpushしてみてください。werckerの管理画面でdeployまで走るのが確認できると思います。 アプリケーション選択

もちろんですが、deployされるのはwercker内でbuildされて生成された_site以下のファイルです。

参考

http://blog.wercker.com/2013/08/22/Simplifying-ssh-based-deployment.html http://devcenter.wercker.com/articles/introduction/pipeline.html#deploys http://devcenter.wercker.com/articles/steps/