自动部署

有多种方法可以轻松地自动化 Jekyll 网站的部署。

持续集成服务

设置自动部署流程最简单的方法之一是使用 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

现在,只需告诉 nginx 或 Apache 查看 /var/www/myrepo 并运行以下命令,即可轻松部署

laptops$ git push deploy master