部署HEXO到GitLab Page
前言
比較不同的是,使用他的ci做到自動化,則需要再多一個.gitlab-ci.yml
就好!其實官方文件已寫的相當清楚,照著做就可以成功了
若對Git不熟悉,建議先閱讀過Git基礎設定,了解Git使用方式
部署方法
HEXO環境都建置完畢後,在本機端hexo s
都沒問題的話,接下來就是準備上線了!
設定.gitignore
先在根目錄新增一個.gitignore
,排除不需要上傳的東西
node_modules/
.DS_Store
db.json
package-lock.json
thumbs.db
若您採用的主題是採用next的話,則需要再到\themes\next\.gitnore
做些調整,若不是的話此步驟可跳過。
若您自己有安裝其他hexo套件的話(比如fancybox),根據這篇issue:3rd-party libs must be installed from script,next主題本身會ignore掉所有套件,只保留本身所需。所以需要把自己有另外使用的套件也加上去,否則後續gitlab自動化部署時,會造成套件沒上傳上去,會出現找不到套件,導致網頁無法正常渲染,打開來會是只有背景,其他都是一片白的情況
打開檔案
\themes\next\.gitnore
將
\themes\next\source\lib
底下有安裝的套件目錄,全部新增進去。記得前面要加!
,表示不省略
#以fancybox為例,若有安裝多個next plugin,則全部都要加進來
!source/fancybox/*
折騰了我一天才找到原因_
設定.gitlab-ci.yml
由於官方的.gitlab-ci.yml
是比較早期的寫法,這一塊就不能完全照抄了!
本篇假定您已閱讀過為什麼我推薦hexo部署到Gitlab,打算採取一樣的一站式作法
若有不同需求,請依自己狀況調整
基本上整體結構如下,沒什麼特別需求的話,應該都通用
image: node:9.10.0 #當初電腦上是裝這個版本,有試過改成較新版也可運行。若版號差距大時,可以試試拉高版本看看gitlab支援了沒
pages:
script:
- npm install
- ./node_modules/hexo/bin/hexo clean
- ./node_modules/hexo/bin/hexo generate
- ./node_modules/hexo/bin/hexo deploy # 若閱讀次數採leanCloud的話,需要加上deploy抓閱讀次數
artifacts:
paths:
- public
cache:
paths:
- node_modules
key: project
only:
- master
設定readme.md
gitlab預設會抓根目錄的readme.md
,顯示關於這個專案的介紹。其實不新增也無所謂,畢竟只是自用的blog,不會有人想要folk
裡面打上自己想要的內容就行
可以再裡面寫上目前使用的hexo版本、主題版本。便於以後版更blog系統時,可以有個參考依據,不必再去翻package.json
site: https://blog.typeart.cc
Version:
hexo: 3.7.1
theme/next: 6.2.0
在gitlab上新建project
到Gitlab新增Project
Project name
輸入 <<您的帳號>>.gitlab.io
Visibility Level
要公開(public)
或私人(private)
都可以
若有設定leanCloud閱讀次數的話,建議採私人(private)
,畢竟為了方便會將username及password寫在_config.yml
裡
push HEXO Blog
git add .
git commit -m "我的blog上線拉!"
git push -u origin master
靜待幾分鐘後,在網址列輸入https://<<您的帳號>>.gitlab.io
您的blog上線拉!
如果有問題的話,則需要到gitlab ci自動化去看哪裡出錯了
假如很不幸地
您的blog上線失敗拉!
到project左邊的CI/CD
>Pipelines
,這裡可以看到每次自動化部署的log
- 點到中間
stages
那個綠色✔或紅色✘ - 選第一個test的✔
- 再點
pages
則可以看到完整的指令流程,看看哪個環節出錯了吧!