Hexo 博客自動部署到 GitHub Pages 的最佳實踐

這兩天從新搗鼓了一下 Hexo 博客, 用 Travis CI 作了自動部署。node

作的過程當中查看了不少資料,基本上都是用在 CI 中用 Git、Hexo deploy 作的部署,還要加密 ssh-key 什麼的。我基於這作了一遍,對於 Travis CI 的文件加密等等,有了更深的理解。這中間的配置,我以爲至關的麻煩。可是當我從新翻閱 Travis CI 的文檔的時候,我發現其實 Travis CI 能夠自動靜態文件部署到 GitHub Pages。只須要很是簡單的配置,就能夠了。git

deploy:
 provider: pages
 skip_cleanup: true
 github_token: $GITHUB_TOKEN # travis-ci.org 控制面板上設置
 on:
 branch: master複製代碼

這是最基本的配置。github

skip_cleanup 的值必須爲 true 否則會把你在構建時生成的文件給刪除掉。hexo

on: branch: master的意思是當 master 分支有變化時,才執行這個部署。更多條件設置請參考 Deploymentssh

GITHUB_TOKEN 的生成請參考 Creating a personal access token for the command line。 若是你的倉庫是公開的,那麼在給權限的時候只須要給 public_repo, 若是你的倉庫是私有的那就要給 repo 權限,儘可能給更少的權限。而後在控制檯設置環境變量 GITHUB_TOKEN 值爲剛纔生成的 token。在添加環境變量的時候有個開關 Display value in build log 千萬不要打開,否則別人就能夠在 CI 的 log 裏面看到你的 token 了,就能夠對你的公開倉庫進行任意修改。ide

接下來咱們就要對這個基本配置作個修改,添加更多的設置來符合咱們的需求。ui

local_dir 指的是是將要推送到 GitHub Pages 的目錄,默認的值爲當前目錄。咱們都知道 hexo generate 生成的目錄是 public ,因此咱們要將 local_dir 的值設置爲 public加密

repo 指的是 GitHub Pages 所在的代碼倉庫,默認值爲當前倉庫。spa

target_branch 指的是 GitHub Pages 所使用的分支,默認爲 gh-pagescode

這裏有個問題,就是 Travis CI 使用 git push --force 來進行推送的,因此會清空歷史,因此必定要保證你的 repotarget_branch 設置的正確。本來我是作了保留歷史的配置的,改爲這樣用 Travis CI deploy 來作的話,就沒有辦法保留歷史了。可是轉念一想,我只要保留 blog 倉庫的歷史就好啦,這些只是生成的代碼,因此我認爲使用 Travis CI 這樣的設置是合理的。

通常來講添加這三個配置就能夠了。更多配置請參考 GitHub Pages Deployment

下面是個人配置信息

language: node_js #指定環境爲 Node.js

node_js:
- '7' #指定 Node.js 的版本爲 7

before_install:
- export TZ='Asia/Shanghai' #設置時區 非必須

script:
- hexo generate #生成博客

deploy:
 provider: pages
 skip_cleanup: true
 github_token: $GITHUB_TOKEN
 local_dir: public
 repo: zhangweijie-cn/zhangweijie-cn.github.io
 target_branch: master
 on:
 branch: master複製代碼

Travis CI 會自動幫咱們安裝依賴,因此這些咱們都不須要考慮。

當咱們給 blog 所在倉庫 master 分支推送文章之後,GitHub Pages 就會自動構建和部署了。

相關文章
相關標籤/搜索