近期,在更新完文章利用 Travis CI 自動部署後,偶然發現文章的發表時間隨著更新變為更新時間。對於這個問題,思考後暫時考慮問題出在 Travis CI 自動部署上,因為每次自動部署後時間都與部署時刻時間一致。
猜想驗證#
步驟(一)使用傳統 hexo g 和 hexo d 方法部署#
部署完成後發現文章發表時間與更新時間出現了變化,發表時間為 Tracis CI 自動部署建立好後的時間,而更新時間則為此次作變化後傳統部署後的時間,因此確定問題出現在 Travis CI 自動部署上。
步驟(二)檢查 Travis CI 自動部署文件#
打開 Travis CI 自動部署文件 .travis.yml
查看:
language: node_js
node_js: stable
cache:
directories:
- node_modules
before_install:
- export TZ='Asia/Shanghai' # 更改時區
- npm install hexo-cli -g
install:
- npm install
- npm install hexo-deployer-git --save
script:
- hexo clean
- hexo generate
after_script:
- cd ./public
- git init
- git config user.name "xuezheng-wei"
- git config user.email "[email protected]"
- git add .
- git commit -m "Travis CI Auto Updated"
- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
branches:
only:
- hexo
env:
global:
- GH_REF: github.com/xuezheng-wei/xuezheng-wei.github.io.git
發現其執行完 hexo generate 後不是直接執行 hexo deploy ,而是切換到 hexo 分支 public 目錄下將更新的文件強制提交到 master 分支,故可能無法區分發表時間和更新時間。
步驟(三)解決方法#
(1)在 .travis.yml
文件中加入 hexo deploy 以便自動部署時可以執行此命令,但添加 hexo deploy 後存在問題,access 接入報錯,且有 token 私鑰洩漏風險。處理比較麻煩,故未採用此解決方法。
(2)更新文章時在 front-matter
中加入 date
來固定文章建立日期。
(3)取消 Travis CI 自動部署,採用 hexo g
、hexo d
傳統方法上傳部署。
總結#
使用 Travis CI 自動部署 hexo 博客雖然在一定程度上簡化了上傳部署的步驟,但在 hexo 博客這塊僅僅是取代了傳統上傳部署的 hexo clean、hexo g、hexo d
等命令,作用有限。也可能是因為對 Travis CI 自動部署認知不夠,使用稍有障礙,因此考慮決定回用原傳統上傳部署手段。