hexo+gitpages+ci 打造個(gè)人博客

前言:先宣傳一下個(gè)人博客,如果你覺得在我的文章中有所收獲,求一個(gè)Star,如果你有好的建議,請(qǐng)麻煩留言告訴我

前言

說起自己寫博客的歷史也是有斷斷續(xù)續(xù)一年了,大概也是18年春節(jié)期間自己fork了他人的博客笑旺,使用gitPages部署昼浦,也是從那時(shí)開始學(xué)習(xí)git,博客說起來也算是自己成為一個(gè)稍微正式一點(diǎn)的coder的開端吧筒主。至于自己為什么要放棄之前博客关噪,要重新利用hexo打造個(gè)人博客鸟蟹,原因如下:

  1. hexo配置簡單,插件豐富
  2. 3-hexo這個(gè)主題比較符合自己對(duì)于博客條理性的要求使兔,相比于之前的博客更加精煉建钥,易整理,易閱讀
  3. ci的集成也讓hexo更加關(guān)心寫作本身
    在閱讀本文之前,默認(rèn)讀者擁有域名解析經(jīng)驗(yàn)與gitPages了解,如果存在疑問,請(qǐng)參考我fork的上一個(gè)Blog原作者的詳細(xì)搭建流程

基礎(chǔ)環(huán)境

hexo安裝

基礎(chǔ)環(huán)境:Node,Git
教程:hexo官網(wǎng)安裝教程

3-hexo主題

倉庫地址

Travis CI配置

請(qǐng)先按以下操作配置,詳細(xì)配置在余下篇幅介紹

  1. 將Travis CI授予GitHub權(quán)限
  2. 需要被CI管理的倉庫在根目錄生成 .travis.yml文件,并進(jìn)行push到github
  3. Travis CI開啟對(duì)相應(yīng)倉庫的監(jiān)測
  4. push代碼到ci配置的監(jiān)測分支,看log記錄是否觸發(fā)成功
ci觸發(fā)分支配置
branches: 
  only:
  - source //觸發(fā)ci的條件分支

補(bǔ)充: 為防止有些同學(xué)不了解CI概念,我簡單介紹下CI,CI意味著持續(xù)集成,可以以我公司配置的CI為例,我們都知道代碼上線需要保證質(zhì)量,我們可以在CI中配置每次進(jìn)行Git Push時(shí),復(fù)雜CI的機(jī)器就會(huì)進(jìn)行代碼的編譯,歷史自測的檢查,當(dāng)我們合并Master分支時(shí),我們的對(duì)外的Api可能發(fā)生變化,也可以依靠CI進(jìn)行自動(dòng)API包的發(fā)布,這些都是CI要做的事情,在這篇文章涉及的代碼庫存在兩個(gè)分支,source分支保留我們博客的源碼,包含我們文章的Markdown等文件,Master分支是Hexo生成的靜態(tài)網(wǎng)頁文件,我們依靠Travis CI做到的就是,我們向source分支提交代碼,Travis CI進(jìn)行拉取環(huán)境,編譯,最后hexo deploy到Master分支,讓我們的網(wǎng)頁進(jìn)行變化

CI

.travis.yml文件加入對(duì)環(huán)境運(yùn)行環(huán)境支持

language: node_js //node環(huán)境
node_js:
- 10.15.1 //node版本
branches: 
  only:
  - source //觸發(fā)ci的條件分支
before_install: 
- npm install -g hexo-cli //hexo環(huán)境
- npm install --save hexo-deployer-git //hexo deploy插件
install:
- npm install //安裝package.json文件中配置的hexo插件

當(dāng)source分支發(fā)生改變,Travis CI監(jiān)測到change后進(jìn)行ci,首先安裝node環(huán)境,之后安裝hexo環(huán)境,安裝deploy插件,安裝額外hexo插件

_config.yml文件加入倉庫配置

deploy:
  type: git
  repo: git@github.com:EvanLjp/evanljp.github.io.git
  branch: master

一些細(xì)心地同學(xué)可能已經(jīng)發(fā)現(xiàn)了一些問題,我們是在運(yùn)行ci的機(jī)器進(jìn)行deploy,但是我們機(jī)器上并沒有配置git秘鑰,怎么能進(jìn)行push操作呢,這就要說到Github OAuth,支持一種帶有token的秘鑰進(jìn)行免git秘鑰push

創(chuàng)建Github OAuthToken

  1. 打開 Personal Access Tokens
  2. create new token
  3. 請(qǐng)注意,至少給這個(gè)token repo的權(quán)限,否則無法push
  4. 進(jìn)行token可用性測試
    • 按https://<token>@github.com/owner/repo.git格式拼接某個(gè)倉庫的url(<token>表示生成token),例如我的blog倉庫地址:https://1f0f0XXX@github.com/Evanljp/evanljp.github.io.git(XXX表示省略,實(shí)際token很長)
    • 進(jìn)行g(shù)it clone ,能clone說明url拼接合理
    • 進(jìn)行g(shù)it push,如成功,說明這個(gè)token可用,如發(fā)現(xiàn)403,請(qǐng)檢查repo權(quán)限是否賦予
      我們已經(jīng)看到這個(gè)token權(quán)限的強(qiáng)大之處,我的倉庫source分支包含了Blog的所有源碼,我不可能把這么大權(quán)限的token進(jìn)行暴露,所以必須進(jìn)行加密,幸好travis已經(jīng)提供解決方案,接下來我們看一下如何token加密

Token加密

  1. 首先安裝 travis 命令行工具
gem install travis
travis login
  1. .travis.yml通過命令加入加密token :
    travis encrypt 'GH_TOKEN=TOKEN' --add,TOKEN表示之前明文token,你會(huì)發(fā)現(xiàn).travis.yml文件已經(jīng)加入了如下內(nèi)容:
env:
  global:
    secure: fuY23T6wEu...

Token解密

在.travis.yml文件加入如下內(nèi)容,以動(dòng)態(tài)解密發(fā)布

after_success:
    - git config --global user.name "evanljp"
    - git config --global user.email "evanljp@outlook.com"
    - sed -i'' "s~git@github.com:EvanLjp/evanljp.github.io.git~https://${GH_TOKEN}:x-oauth-basic@github.com/EvanLjp/evanljp.github.io.git~" _config.yml
    - hexo deploy --silent

發(fā)布

上一步的配置中實(shí)際已經(jīng)加入了hexo deploy --silent發(fā)布配置,請(qǐng)動(dòng)手嘗試,觀看CI線上Log,如果發(fā)現(xiàn)Push成功,那么恭喜你,你也擁有了一個(gè)可以自動(dòng)Ci的blog,讓你可以更加關(guān)注寫作

參考

個(gè)人blog配置
Deploying Hexo to Github Pages with Travis

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虐沥,一起剝皮案震驚了整個(gè)濱河市熊经,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欲险,老刑警劉巖奈搜,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盯荤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焕盟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門秋秤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脚翘,你說我怎么就攤上這事灼卢。” “怎么了来农?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵鞋真,是天一觀的道長。 經(jīng)常有香客問我沃于,道長涩咖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任繁莹,我火速辦了婚禮檩互,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咨演。我一直安慰自己闸昨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布薄风。 她就那樣靜靜地躺著饵较,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遭赂。 梳的紋絲不亂的頭發(fā)上循诉,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音嵌牺,去河邊找鬼打洼。 笑死龄糊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的募疮。 我是一名探鬼主播炫惩,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阿浓!你這毒婦竟也來了筐钟?” 一聲冷哼從身側(cè)響起氨距,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拼窥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡越驻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年邪锌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侈百。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓮下,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钝域,到底是詐尸還是另有隱情讽坏,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布例证,位于F島的核電站路呜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏织咧。R本人自食惡果不足惜胀葱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笙蒙。 院中可真熱鬧巡社,春花似錦、人聲如沸手趣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绿渣。三九已至朝群,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間中符,已是汗流浹背姜胖。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淀散,地道東北人右莱。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓蚜锨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親慢蜓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亚再,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容