這里持續集成基於GitHub搭建的博客為項目
工具:
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次完整構建。
注意:開始安裝一大堆東西之前,你需要去Travis CI上注冊一個賬號。(一般都會使用github賬號)
Linux下的安裝(強烈建議不要使用windows來CI)
Deploy Key
生成ssh密鑰用於跟倉庫通信
ssh-keygen -t rsa -C "youremail@example.com"
成功后,將.pub結尾的文件添加到github倉庫中
最后將id_rsa文件復制到我們項目的根目錄,這樣便於生成密鑰。
cp /home/zqz/.ssh_ci/id_rsa /home/zqz/study/zhaoqize.github.io
安裝並登陸travis
安裝
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