Travis CI用來持續集成你的項目

這裏持續集成基於GitHub搭建的博客爲項目node

工具:git

zqz@ubuntu:~$ node --version
v4.2.6
zqz@ubuntu:~$ git --version
git version 2.7.4
zqz@ubuntu:~$ travis --version
1.8.4

Travis CI簡介


Travis CI 是目前新興的開源持續集成構建項目,它與jenkins,GO的很明顯的特別在於採用yaml格式,簡潔清新獨樹一幟。目前大多數的github項目都已經移入到Travis CI的構建隊列中,聽說Travis CI天天運行超過4000次完整構建。github

注意:開始安裝一大堆東西以前,你須要去Travis CI上註冊一個帳號。(通常都會使用github帳號)npm

Linux下的安裝(強烈建議不要使用windows來CI)ubuntu

Deploy Key


生成ssh密鑰用於跟倉庫通訊windows

ssh-keygen -t rsa -C "youremail@example.com"

成功後,將.pub結尾的文件添加到github倉庫中
bash

最後將id_rsa文件複製到咱們項目的根目錄,這樣便於生成密鑰。hexo

cp /home/zqz/.ssh_ci/id_rsa /home/zqz/study/zhaoqize.github.io

安裝並登錄travis


安裝ssh

gem install travis

安裝成功後,登錄travis工具

travis login --auto

登錄成功:

Successfully logged in as zhaoqize!

接着,登錄網頁版,設置倉庫。

點擊倉庫名稱左邊的齒輪,設置開啓下面三個。

加密


在加密以前咱們先在項目跟目錄下新建一個.travis.yml文件。

加密的就是第一步生成的密鑰id_rsa,因爲前面咱們將密鑰複製到了項目目錄,因此如今這裏有id_rsa文件。

//進入項目目錄
cd study/study/zhaoqize.github.io 

//進行加密
travis encrypt-file ssh_key --add

加密成功:

zqz@ubuntu:~/study/zhaoqize.github.io$ travis encrypt-file id_rsa --add
Detected repository as zhaoqize/blog, is this correct? |yes|    
encrypting id_rsa for zhaoqize/blog
storing result as id_rsa.enc
storing secure env variables for decryption

Make sure to add id_rsa.enc to the git repository.
Make sure not to add id_rsa to the git repository.
Commit all changes to your .travis.yml.

這時候看最後一句**Commit all changes to your .travis.yml.

咱們新建的文件一句發生了變化,多了一句:(私人內容使用XXX代替)

- openssl aes-256-cbc -K $encrypted_XXXXXXXX_key -iv $encrypted_XXXXXXXX_iv -in id_rsa.enc -out ~/.ssh/id_rsa -d

再次查看咱們的travis ci網頁,發現多了一些變化

.travis文件夾


刪除咱們以前複製到根目錄的id_rsa文件

在項目根目錄下新建一個.travis的文件夾

將生成的.enc文件移動至.travis文件

ssh_config


在.travis下創建ssh_config文件。

並填寫以下信息:

Host github.com
  User git
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

注意這裏的~/.ssh/id_rsa的路徑是根據我的設置而變化的。

.travis.yml


最後須要着重配置.travis.yml文件,覺得travis ci就是按照這個文件來執行。

具體配置:

# 使用的語言
language: node_js

# 使用的nodejs版本
node_js:
 - 4.4.4

# 倉庫的分支
branches:
  only:
  - master

# 執行isntall前須要執行的命令
before_install:
# 配置解密信息
 - openssl aes-256-cbc -K $encrypted_4bba640059d8_key -iv $encrypted_4bba640059d8_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d

# 改變文件權限
 - chmod 600 ~/.ssh/id_rsa

# 配置 ssh
 - eval $(ssh-agent)
 - ssh-add ~/.ssh/id_rsa
 - cp .travis/ssh_config ~/.ssh/config

# 配置git 的我的信息
 - git config --global user.name 'zqz'
 - git config --global user.email zqz@zhaoqize.com

# 執行install
install:
 - npm install hexo-cli -g
 - npm install

# 執行命令腳本
script:
 - hexo clean
 - hexo g -d

成功


安裝與使用中遇到的問題


安裝travis失敗

使用sudo權限操做

zqz@ubuntu:~$ gem install travis
Fetching: ffi-1.9.14.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.3.0 directory.
zqz@ubuntu:~$ sudo gem install travis
Building native extensions.  This could take a while...
...

修改travis的目錄

zqz@ubuntu:~$ travis --version
bash: /usr/bin/travis: 沒有那個文件或目錄
zqz@ubuntu:~$ sudo ln -s /usr/local/bin/travis  /usr/bin/travis
[sudo] zqz 的密碼: 
zqz@ubuntu:~$ travis --version
1.8.4
zqz@ubuntu:~$

生成.enc文件密鑰失敗

有時候會失敗。這時候咱們須要在後面加上一些參數

travis encrypt-file ssh_key --add -r zhaoqize/blog
相關文章
相關標籤/搜索