Travis CI助力Blog持續輸出(Github Pages)

以前更新blog要這樣:本地安裝hexo環境,還須要敲幾個命令: hexo clean && hexo g && hexo d,構建部署還有點浪費時間。其實每次更新blog的時候,只須要增刪改幾個Markdown文件。懶~乾脆上CI吧。

CI 爲什麼物

CI(Continuous Integration)—— 持續集成。

其實光從名字其實能大體知道CI作了什麼事情。硬件領域有集成模塊、集成電路,軟件領域也有集成概念:項目構建、自動化測試、部署等等。個人理解,每一個成熟的產品從零散到成型到出品(上線)的過程,就是集成(Integration)。那麼CI作的事情,就是讓這個工程自動化,持續進行(Continuous)。javascript

好處:

  • 快速發現錯誤
  • 保持分支與主幹相對集中
"持續集成並不能消除Bug,而是讓它們很是容易發現和改正。" -- Martin Fowler

流程:

其實應該將這幾個概念揉在一塊兒:持續集成、持續部署、持續交付、持續發佈。

image

1.代碼提交:commit
2.測試(第一輪):hook相應的commit動做,自動化測試
3.構建:build,至關因而編譯可用的代碼
4.測試(第二輪):包含單元測試和集成測試
5.部署:打包至生產環境
6.回滾:若最新版本發生異常,則回滾到上一版本html

Travis CI 又爲什麼物

image

Travis CI: 在線託管的CI服務,最重要的事情,它對開源項目是免費的!!!(重要的感嘆號加三個!!!)

Travis CI 官網上醒目的大字:
Test and Deploy with Confidence
Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes!java

赤裸裸的表白,果真和Github是一對好基友。

這意味着,咱們在Github的 Public Repository均可以利用Travis CI 進行免費的持續集成,固然,Personal Repository也能夠用它,不過挺貴的。以前用Github Pages 搭的Blog恰好能夠用Travis CI來持續構建,將偷懶進行到底吧!node

只需幾步,快速體驗CI

1.GitHub帳號直接登陸

打開Travis CI ,使用 GitHub 第三方受權登陸,不要問爲何,好麗友,好基友。git

2.打開Repo CI配置

image

勾上你的blog repo (這裏我勾上了palmerye.github.io),點擊小齒輪,進入配置頁。github

image

打開最上方兩個開關,其它默認就好了:
Build only if .travis.yml is present
Build pushed branchesnpm

其實官方也有教程,只要三步:json

image

3.添加 .travis.yml

劃重點了!

1.新建一個source分支,將原來本地的Hexo工程,gitignore外的那些目錄,切到source分支。(最終咱們只須要推這個分支到origin)gulp

// .gitignore

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

image

2.爲Travis CI 新建Token服務器

這一步很關鍵,爲何Travis有權限幫你推GitHub?因此你要給它鑰匙,就是Token。

在GitHub我的帳戶 Setting/ Developer settings/ Personal access tokens下,新建一個Token,而後在Travis CI配置中,Environment Variables,添加生成的Token。

image

3.source分支下新建.travis.yml

language: node_js
node_js: stable
cache:
  directories:
    - node_modules

# S: Build Lifecycle
install:
  - npm install


#before_script:
 # - npm install -g gulp

script:
  - hexo clean && hexo g

after_script:
  - git clone https://${GH_REF} .deploy_git
  - cd .deploy_git
  - git checkout master
  - cd ../
  - mv .deploy_git/.git/ ./public/
  - cd ./public
  - git init
  - git config user.name "palmerye"
  - git config user.email "palmerye@gmail.com"
  - git add .
  - git commit -m ":memo:\ Update docs by CI"
  - git push --force --quiet "https://${CI_TOKEN}@${GH_REF}" master:master // CI_TOKEN爲上一步在github上生成的Token。
# E: Build LifeCycle

branches:
  only:
    - source
env:
 global:
   - GH_REF: github.com/palmerye/palmerye.github.io.git

其實看這個配置文件就大體能知道這個流程,在Travis 服務器上install相應的依賴,而後執行hexo clean && hexo g等一系列以前須要在本地跑的命令,最後將生成的靜態資源blog(在./public目錄下),推到master分支。

4.將source分支推到遠端,Travis 監聽到有動做就會跑上面咱們配置的腳本。

能夠愉快寫Blog了

如今,咱們能夠把本地那些hexo臃腫的依賴刪了(這意味着,你在任意的電腦上都能快速更新blog了,不須要安裝hexo依賴),每次只須要增刪改/source/_posts/下的markdown文件就能夠了,輕輕push一下,其餘交給Travis CI吧,你能夠在Travis / Current
看到實時的構建狀態,包括構建時間和成功與否。

最後,爲了提升Blog的檔bi次ge,在readme加個build passing 標籤吧。

image

最後的最後

其實前面只是最簡單粗暴的用了Travis CI,它還有不少強大的功能,好比一些 Cron Jobs,都是比較傻瓜式的,有時間繼續搞吧。乾巴爹?!繼續寫blog了。

PS:
Blog in Github:https://github.com/palmerye/palmerye.github.io/


參考:
持續集成是什麼?-- 阮大大
使用Travis進行持續集成 -- 廖大大

相關文章
相關標籤/搜索