使用Jenkins持續集成Hexo博客

騷年,來一個自動集成的Hexo博客吧😉

爲何要用自動集成,固然是爲了減小重複操做啦(懶是第一輩子產力!)html

例如在工做中,寫完業務開發,將代碼提交到Git以後,還要本身打包、部署,一兩次還行,若是屢次提交代碼,而後重複的打包、部署,那不得浪費不少時間,因此咱們須要自動集成CI,幫助咱們解決代碼提交後的事情~~linux

因此此次學習了用的比較多的Jenkins工具啦git


大體思路

  1. 寫文章
  2. 推送到github的
  3. Jenkins收到鉤子請求,進行構建
  4. 執行Shell腳本,在服務器中生成hexo靜態文件
  5. 啓動服務

Jenkins簡介

Jenkins官網github

Build great things at any scale

The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
複製代碼

正如它所說的:做爲領先的開源自動化服務器,Jenkins提供數百個插件來支持構建,部署和自動化任何項目。例如Git插件、自動部署的Deploy插件、代碼質量Sonar等等好用的插件,給Jenkins增添了豐富的功能。web

此次搭建的Demo是使用Jenkins給Hexo進行持續集成(固然若是小夥伴不想專門弄一個服務器搭建Hexo,能夠直接使用GitHub爸爸現成的GitHub page~~)shell


前置工做

  • 安裝Jenkins(Linux的yum就很好用啦:yum install -y jenkins) 安裝Jenkins後,要記得在插件界面安裝git plugin~~ 而後能夠經過systemctl start jenkins,在linux機器上做爲服務來啓動npm

  • 安裝Hexo(詳細查看官網,還能選擇不少好看的樣式~)bash

$ npm install hexo-cli -g
$ hexo init blog 
$ cd blog
$ npm install
$ hexo server
複製代碼

這時能夠查看服務器對應的ip加上默認的端口號4000,查看搭建出來的Hexo默認界面~服務器

  • 在服務器安裝Git服務,生成公鑰(~/.ssh/id_rsa.pub)和私鑰(~/.ssh/id_rsa)。hexo

  • 在GitHub的用戶Setting中添加公鑰(這個你們應該都知道,就不貼圖了)

  • Jenkins憑據中,配置祕鑰(注意,是祕鑰,路徑~/.ssh/id_rsa)


在GitHub中生成token

  • 在我的setting中,添加用戶訪問的token(personal access token),路徑setting->Developer setting->Person access token

記得將待會生成的密碼保存下來,由於下一次你就看不見了=-=

  • 在項目中添加webhooks,路徑:repo->settings->webhooks
    這個鉤子待會在Jenkins中會使用到

Jenkins新建Job以及GitHub新建倉庫

  • 在GitHub中新建兩個一個倉庫(個人叫test_blog)

  • 在Jenkins中的【系統配置】->【全局配置】添加GitHub服務器

  • 新增的憑據選擇

  • 在Jenkins中,新建一個自由風格的任務(高度可配置化hhh)

  • 配置Git項目地址

  • 在原代碼配置項中,選擇git,將項目地址填上,還有選擇上一步填寫的憑據~

  • 填寫構建觸發器

  • 編寫Execute執行腳本

寫完腳本後點擊保存,以後基本就是一勞永逸,不須要再去關注寫完文章的後續操做~~


測試結果

在本地編寫文章後,推送到github,點擊查看Jenkins的github hook輸出記錄,能夠發現已經在構建了,只要你的shell腳本寫的對,那就能直接觀察到服務器上的博客內容成功更新~~


踩坑記錄

在webhooks上弄了好久,一開始在github的項目裏配置好鉤子,而後想直接按照第二條參考資料中設置,直接覆蓋全部鉤子,後來提示403訪問錯誤

因而就參考了第一條和第三條參考資料,配置了person access token,在構建中選擇了secret text纔算成功配置好鉤子~~

PS: 這樣會將本身的md文件暴露在公共github中,實際上是不妥的,比較建議是本地打包,而後將生成好的界面拷貝到本身的服務器,具體能夠看下第一條參考資料。(其實就是看你shell腳本怎麼寫啦✧(≖ ◡ ≖✿)嘿嘿)


我的博客項目地址

但願各位幫忙點個star,給我加個小星星✨


參考資料

  1. hexo jenkins自動部署博客
  2. 用Jenkins自動部署hexo搭建的GitHub靜態博客
  3. 開啓用戶鑑權時 Jenkins 觸發遠程構建時的 403 問題
相關文章
相關標籤/搜索