Jekyll サイトのデプロイメントを手軽に自動化する方法はいくつかあります。

継続的インテグレーション サービス

自動化されたデプロイメント フローをセットアップする最も簡単な方法の 1 つは、CI を使用することです。

これらのサービスは、Git リポジトリに対するコミットがあるとスクリプトを実行します。このスクリプトに、サイトのビルド、出力に対するテストの実行、選択したサービスへのデプロイメントを求める場合があります。

以下のプロバイダーはガイドを用意しています。

Git post-receive フック

Git を使用して変更をプッシュするたびに、リモート サーバーにデプロイを処理させるには、authorized_keys ファイルにデプロイの許可が与えられたすべての公開鍵を持つユーザー アカウントを作成します。それを準備したら、以下のように post-receive フックをセットアップします。

laptop$ ssh deployer@example.com
server$ mkdir myrepo.git
server$ cd myrepo.git
server$ git --bare init
server$ cp hooks/post-receive.sample hooks/post-receive
server$ mkdir /var/www/myrepo

次に、hooks/post-receive に次の行を追加して、サーバーに Jekyll がインストールされていることを確認します。

#!/bin/bash -l

# Install Ruby Gems to ~/gems
export GEM_HOME=$HOME/gems
export PATH=$GEM_HOME/bin:$PATH

TMP_GIT_CLONE=$HOME/tmp/myrepo
GEMFILE=$TMP_GIT_CLONE/Gemfile
PUBLIC_WWW=/var/www/myrepo

git clone $GIT_DIR $TMP_GIT_CLONE
BUNDLE_GEMFILE=$GEMFILE bundle install
BUNDLE_GEMFILE=$GEMFILE bundle exec jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

最後に、このフックを使用してデプロイする必要があるユーザーのラップトップで次のコマンドを実行します。

laptops$ git remote add deploy deployer@example.com:~/myrepo.git

デプロイは /var/www/myrepo を見るように nginx または Apache に指示し、以下を実行するだけなので簡単になりました。

laptops$ git push deploy master