利用Travis IC實現Hexo博客自動化部署

1.Hexo博客的利與弊

Hexo中文html

我就默認爲看到這篇文章的人都比較瞭解Hexo博客,也都可以成功手動部署吧。因此第一部分推薦兩篇文章一筆帶過,讓咱們快速進入本文的重點內容。實在不知道也不要方先看一看下面推薦的這兩篇文章。node

手把手教你使用Hexo + Github Pages搭建我的獨立博客——令狐蔥git

Hexo + github 打造我的博客——zdy0_2004github

還有一個專欄: Hexo / 總共13篇——水寒npm

感謝以上文章原創做者的分享,推薦純屬自來水。看完這兩篇文章後有沒有以爲本身手裏的Hexo博客很是神奇、很是好用了呢?其實我想說,這個時候的Hexo只是一個殘廢好嗎?你想想,玩這個博客系統的你必定是熱愛技術的折騰客,好比小明有8臺電腦,他要在8臺電腦上都安裝環境,並且部署還真是個磨人的小妖精,極可能會出現奇奇怪怪的問題。好比在剛接觸Hexo不久的時候我幹過這樣一件純事,配置文件_conffig.yml中有這樣一段代碼:segmentfault

language: cn
timezone: Asia/Shanghai

我就自做多情地把時區改爲Beijing了,以後就出現了沒法部署的問題。很久之後一個機會看到別人的文章才明白這個時區是改不得的,醉的是,出錯之後新手真的很難知道錯誤緣由。因此若是不能跨終端寫做、自動部署,Hexo的博客功能算什麼呢?算殘廢,沒錯!服務器

針對以上問題,咱們今天就來交流一下利用Travis IC實現Hexo博客自動化部署,這樣乾的好處就是終於能夠實現多終端發佈博客文章而不用換一次電腦裝一次環境了。hexo

2.Travis IC解決問題

這裏咱們就暫時不介紹Travis IC了,感興趣能夠到文章後面瞭解一下,咱們直接用它來解決問題。ssh

2.1備份

Hexo博客源文件和Github Pages 倉庫文件(生成的網站靜態頁文件)。若你更換了電腦,首先要把源文件拷貝到新電腦裏,而後把GitHub Page的倉庫clone到本地。 最終本地要造成這樣兩個文件夾 學習

2.2備份上傳

將備份的文件上傳到GitHub。因爲Github Pages 倉庫使咱們剛剛拷貝下來的,因此不用管它,重點是源文件。這個時候你就用兩種選擇: 第一種是常見的作法:在Github Pages 倉庫直接新建分支,將源文件上傳到分支當中。 第二種是本文要介紹到的方法:直接新建倉庫,將源文件上傳到新倉庫當中。 其實這兩種方法操做上能夠說幾乎徹底同樣,區別是方法二能夠新建私有倉庫,別人是看不到你的源文件的。

先不要着急做出選擇,選擇方法二你要清楚,Travis CI 的網站有兩個,travis-ci.org 專門針對開源項目,Github 上全部的公開倉庫都可以無償使用;travis-ci.com 針對私有及商業項目,新用戶前 100 次構建是免費的,後面就要收費了。

也就是說,若是你不是GitHub Pro,那麼仍是選擇第一種方法或者第二種方法設置公開倉庫,且要在travis-ci.org中操做。

2.3登陸 Travis CI 網站、

訪問travis-ci.org 或者 travis-ci.com「Sign up with Github」使用本身的 Github 賬號登陸。接下來到github就能夠 到Applications 中找到 Travis CI 。 點擊congigure,給它咱們備份好源文件倉庫的訪問權限。

2.4Travis CI基本配置

爲了可以實現代碼推送到 Github,須要給 Travis CI Github 的 Persional access tokens,在 settings- Developer settings 能夠生成一個。 給repo權限便可 注意:生成的 token 只會顯示一次,因此必定要及時保存下來,不然就只能刪除從新建立了。

而後進入 Travis 中的項目設置界面,能夠給具體的代碼庫進行設置,好比增長環境變量:在 Travis CI 中能夠經過設置環境變量來傳遞一些不便於寫在配置文件中的值(密碼、密鑰之類的),在這裏咱們設置 GH_TOKGH 環境變量分別用來傳遞 GitHub Personal Access Token 。 注意:若是你在這裏設置的環境變量名不是這兩個,下文的.travis.yml配置的時候要與你的變量名對應。

最後還在 Travis 倉庫配置界面more option--ssetting裏面 環境變量Environment Variables進行配置token方便在構建文件中引用,NAME命名爲GH_TOKGH,以下圖

2.5配置.travis.yml

在博客的源碼文件分支下添加.travis,yml配置文件,決定怎麼執行構建任務。 下面是.travis,yml的內容:

language: node_js
node_js: stable

cache:
    apt: true
    directories:
        - node_modules

notifications:
    email:
        recipients:
            - xxx@gmail.com #你的郵箱地址
        on_success: change
        on_failure: always

# turn off the clone of submodules for change the SSH to HTTPS in .gitmodules to avoid the error
git:
  submodules: false
        
before_install:
    - export TZ='Asia/Shanghai'
    - npm install hexo-cli -g

install:
    - npm install

script:
    - hexo clean
    - hexo g

after_script:
  - cd ./public
  - git init
  - git config user.name "xxx"
  - git config user.email "xxx@gmail.com"
  - git add .
  - git commit -m "Update blog content by Travis CI"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master

branches:
    only:
        - master

env:
    global:
        # Github Pages
        - GH_REF: github.com/xxxr/xxx.github.io.git
        # Coding Pages
        - CD_REF: git.coding.net/xxxr/xxx.git

代碼中另外一個環境變量名GH_REF爲 Github Pages 倉庫地址env中有賦值。 注意:xxx是你的GitHub用戶名,xxx@gmail.com替換成你在GitHub的註冊郵箱

2.5測試

網上流傳着一種很常見的.travis.yml配置代碼,你能夠輕鬆搜索到,不少人在用,但在我這裏卻行不通。經過push本地代碼到GitHub等30多秒看Travis CI的反應,這個過程若是老是報錯的話……那是真的爽啊!

百折千回,慢慢嘗試,也參考了很多大佬的代碼最終在用上面的給出的代碼成功 18次!妥妥的18次,若是你也踩了坑,不要心急,請嘗試修改、調整18次。

3.經驗總結

3.1換電腦之後SSH key從新申請

3.1.1生成新的 SSH Key

$ ssh-keygen -t rsa -C "郵件地址@youremail.com"

如圖所示:

而後要輸入密碼,若是爲空的話提交項目時則不用輸入。這個設置是防止別人往你的項目裏提交內容。

Enter passphrase (empty for no passphrase):<輸入加密串>
Enter same passphrase again:<再次輸入加密串>

祕鑰生成之後在你的C:\Users\你的用戶名\.ssh下能夠看到以下文件 而後你能夠複製id_rsa.pub 裏的內容,或者在Git Bash裏繼續執行代碼一樣能夠把祕鑰複製到剪切板。

clip < ~/.ssh/id_rsa.pub

3.1.2在GitHub設置中添加key

登錄 GitHub 系統。點擊右上角的 Account Settings--->SSH Public keys ---> add another public keys

3.1.3粘貼祕鑰並保存

把你本地生成的密鑰複製到裏面( key 文本框中), 點擊 add key

3.1.4測試

ssh -T git@GitHub.com

出現下圖所示提示,證實祕鑰配置成功!

3.2換電腦之後備份上傳博客源文件

在進行步驟2.2備份上傳的時候,因爲我是新換了電腦,能從倉庫pull下來但沒法push到倉庫上去。

緣由是沒有對Git文件或文件夾進行申明,仍是對Git不熟悉形成的,其實挺有一意思,總結這三板斧的步驟就是,先git init初始化環境,而後選擇要執行的文件範圍,git add .意思是所有選擇,而後申明,最後選擇推拉。具體說明請看下圖。 push成功是這個樣子的:、

3.3Travis IC介紹

Travis IC=Travis Continuous Integration 意思是,在一個項目中,任何人對代碼庫的任何改動,都會觸發 CI 服務器自動對項目進行構建,自動運行測試,自動編譯,甚至自動部署到測試環境。這樣作的好處就是,隨時發現問題,隨時修復。由於修復問題的成本隨着時間的推移而增加,越早發現,修復成本越低。Travis CI 是在線託管的 CI 服務,用 Travis 來進行持續集成,不須要本身搭服務器。另外,GitHub推出了官方的自動編譯項目——GitHub Actions,詳情請參考下面這兩篇文章瞭解:

GitHub Actions 入門教程——阮一峯

Github Actions:再次改變軟件開發——編譯青春

4.參考文章

Github 使用 Travis CI 實現 Hexo 博客自動部署——Michael翔

使用 Travis CI 實現 Hexo 博客自動部署——昔日的夕日(這篇文章部分地方有錯誤,要自行辨別)。

利用CI自動部署hexo博客——一步

使用Travis CI自動部署博客到github pages和coding pages——Akkuman

好的,到這裏咱們這篇交流文章就結束了。菜鳥的學習文章,不足之處還望各位大神斧正。

相關文章
相關標籤/搜索