天天看點

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

Travis-CI

what

Travis CI 是目前新興的開源持續內建建構項目(Continuous Integration,簡稱 CI),它與jenkins,GO的很明顯的特别在于采用yaml格式,簡潔清新獨樹一幟。目前大多數的github項目都已經移入到Travis CI的建構隊列中,據說Travis CI每天運作超過4000次完整建構。

why

團隊協作開發中,建構、測試與部署往往會産生沖突,花費不必要的精力去解決這些問題。CI通過綁定 Github 上面的項目,隻要有新的代碼,就會自動抓取。然後,提供一個運作環境,執行測試,完成建構,還能部署到伺服器。每次代碼的小幅變更,就能看到運作結果,進而不斷累積小的變更,而不是在開發周期結束時,一下子合并一大塊代碼。

who

Travis-CI僅支援GitHub的項目,對開源項目是免費,對私有項目是收費的

how

在Github上,可以添加Travis CI,當有code push時候,會推送通知到Travis,根據設定的腳本運作指定任務。

接下來以開源項目Spectrum為例,來一步步示範如何使用Travis-CI

Spectrum持續內建項目打包

step1

當然得先fork一下我們的主角啦Spectrum

step2

通路Travis-CI 官網,點選頁面右上角的“Sign in with GitHub ”,輸入github密碼進行登入。然後會在首頁的右側看到自己的github倉庫清單。如圖:(我這麼搜尋隻為了展示Spectrum)

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包
step3

點選上圖中Spectrum倉庫右側對應的開關。打開開關,Travis 會監聽這個倉庫的所有變化

step4

在github首頁,點選自己頭像下的setting,選擇左側欄目最下面一項“Developer settings”,再點選左側欄的“Personal access tokens”,然後點選頁面右上角的“Generate new token”。1.填寫Token description 2.選擇repo打鈎即可,如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

然後點選頁面下方的 “Generate token”,頁面會出現生成的token.隻一次可見,一定要第一次儲存下來。

step5

安裝travis用戶端。MAC端執行指令 gem install travis

然後執行指令 travis -v 驗證安裝成功。如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

然後執行指令 travis login。輸入github的使用者名和密碼進行登入。如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

登入成功後,mac端執行指令

travis encrypt -r / GH_Token=<step4 中得到的token值>。執行完如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

得到加密後的secure值,進行儲存(配置檔案.travis.yml會用到)。

step6

回到Travis-CI,點選右側的 More options下拉菜單的Settings,如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

找到環境變量 Environment Variables,name自定義設定,value為step4中的token值,然後點選Add按鈕。如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包
step7

接下來是重頭戲.travis.yml檔案,點選官方文檔查詢可查詢更多.travis.yml配置标簽(自我探索:可以取文檔中查閱step5中生成secure值如何配置)

language: go
go:
- 1.10.x
after_script:
  - git clone https://${GH_REF} .deploy_git  # GH_REF是最下面配置的倉庫位址
  - cd .deploy_git
  - git checkout master
  - cd ../
  - mv .deploy_git/.git/ ./public/   # 這一步之前的操作是為了保留master分支的送出記錄,不然每次git init的話隻有1條commit
  - cd ./public
  - git config user.name "wangbaojin"  #修改name
  - git config user.email "[email protected]"  #修改email
  - git add .
  - git commit -m "Travis CI Auto Builder at `date +"%Y-%m-%d %H:%M"`"  # 送出記錄包含時間 
  - git push --force --quiet "https://${Travis_Token}@${GH_REF}" master:master  #Travis_Token是在Travis中配置環境變量的名稱
branches:
  only:
    - master  #隻監測master分支,master是我的分支的名稱,可根據自己情況設定
env:
 global:
   - GH_REF: github.com/wangbaojin/Spectrum.git  
   - Travis_Token:for-Spectrum
notifications:
  email:
    - [email protected]
  on_success: change
  on_failure: always
           

将以上.travis.yml檔案儲存在/ 根目錄下

step8

現在可以測試流程了

在本地代碼中,加任意測試代碼,然後執行

git add .

git commit -m ‘測試travis CI’

git push 如圖

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

然後回到Travis-CI,如圖,pass成功。

Spectrum持續內建項目打包(Travis-CI)Travis-CISpectrum持續內建項目打包

內建編譯的網址:https://travis-ci.org/wangbaojin/Spectrum

擷取更多資料,請參考文檔:https://docs.travis-ci.com/user/languages/go/

繼續閱讀