2016年05月29日

ブログをコマンドでデプロイできるようにした

Middlemanに移行してからは

  1. 記事を書く
  2. bundle exec middleman buildでビルド
  3. FTPでアップロード

みたいなことをして更新していましたが、FTPを起動してアップロードするのが面倒になったので、コマンドで全て完結するようにしてみました。
いつも通りメモです。

やったこと

  • Gemfileにmiddleman-deployを追加する
  • config.rbにデプロイ用設定を書く

たったこれだけでできるようになりました。驚き。

gem 'middleman-deploy'

僕はMiddleman4でブログを構築しています。
現在安定版で提供されているmiddleman-deploy 1.0はMiddleman 4に対応していないようでした。

なので4に対応しているmiddleman-deployの2.0アルファ版を使いました。

Gemfile

gem 'middleman-deploy', '~> 2.0.0.pre.alpha'

config.rb

デプロイするために設定を追記します。

config.rb

activate :deploy do |deploy|
  deploy.deploy_method   = :ftp
  deploy.host     = "ホスト名"
  deploy.path     = "アップするディレクトリ"
  deploy.user     = "ユーザー名"
  deploy.password = "パスワード"
end

僕はgitでブログを管理しています。
管理しているのはプライベートリポジトリなので全世界に公開されませんが、パスワードなどを直接書くのはさすがに避けたいです。
パスワードを隠す方法はいろいろあるようですが、僕は環境変数にパスワードを書き、それを呼び出す方法を使っています。

.zshrc

export PASSWORD="パスワード"

config.rb

activate :deploy do |deploy|
  deploy.deploy_method   = :ftp
  deploy.host     = "ホスト名"
  deploy.path     = "アップするディレクトリ"
  deploy.user     = "ユーザー名"
  deploy.password = ENV['PASSWORD']
end

こうすることでconfig.rbがgit管理下に置かれていても大丈夫になります。

デプロイする

デプロイは以下のコマンドで行います。

bundle exec middleman deploy

よく使うコマンドは普通aliasを設定すると思います。
僕もaliasを設定していますので、以下のコマンドでデプロイできるようになりました。

# bundle exec middleman を bem にしています(dはデフォルトで使えます)
bem d

ただデプロイが遅いんですよねぇ。
全ファイルを転送してるっぽいのですが、変更がないファイルは飛ばして欲しいなぁ〜。
何とかできないだろうか。