什么是Travis CI?
简单来说就是用来做持续集成的工具,可以为你自动构建、测试、打包等等,极大的简化了工作流程。它对Github支持特别好,链接到你的github上,每当有request合并到
master时,它会按照你的要求构建执行
安装Travis CI
1.先要安装ruby 可以先通过ruby -v 检查系统是否安装ruby
2.然后安装 travis 执行gem install travis
3.登录Travis CI
需要输入github账号密码
travis login --auto
正确生成后你会得到两个文件,一个叫ssh_key
,一个叫
ssh_key.pub
。刚才我们将
ssh_key.pub
添加到了github,下面我们要加密
ssh_key
这个私钥并且上传到Travis。
travis encrypt-file ssh_key --add
然后Travis的客户端会自动检测当前目录中的git信息,并且添加到
.travis.yml
中去。在进行此步操作前,目录下要先存在
.travis.yml
文件,否则会报错。
然后Travis的客户端会自动检测当前目录中的git信息,并且添加到.travis.yml
中去。在进行此步操作前,目录下要先存在.travis.yml
文件,否则会报错。
在当前目录下新建文件ssh_config
,内容为
Host github.com
User git
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
然后指定openssl解密后的生成位置,修改Travis自动插入的解密指令(不要照抄,注意修改密钥)
- openssl aes-256-cbc -K $encrypted_26b4962af0e7_key -iv $encrypted_26b4962af0e7_iv
-in travis.enc -out ~/.ssh/id_rsa -d
紧跟那条解密指令,换行输入:
- chmod 600 ~/.ssh/id_rsa
注意yml格式,短杠后面的空格不能省略。
紧跟上一步操作,换行输入:
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
将之前创建的ssh_config复制到Travis的虚拟机中去,输入:
- cp .travis/ssh_config ~/.ssh/config
然后制定git使用者信息:
- git config --global user.name "username"
- git config --global user.email username@example.com
关联项目(github)
开源仓库:www.travis-ci.org
私密仓库:www.travis-ci.com
使用你的github账号更具仓库类型登录上述其中一个网站(两个内容一模一样,只是仓库的属性不一样),并赋予其权限,在项目列表中就可以看到你的github上的仓库了,
你需要对哪个项目进行自动集成,首先先打开开关
其次你需要回到你的仓库,在根目录底下添加.travis.yml脚本文件,Travis-ci 是根据这个脚本来执行自动化构建的
至于详细的脚本格式可以参见,Travis-ci的帮助文档(https://docs.travis-ci.com/),格式大致如下所示(https://github.com/tlglovewf/CppTest)
language: c
script:
- pwd
- ls
- cd ConsoleTest
- ls
- pwd
- g++ -v
- echo "start build program"
- g++ test.cpp -o cc.exe
- ./cc.exe
- g++ test.cpp -o oo.exe
- ./oo.exe
- ls
- tar --version
- tar -cvf output.tar oo.exe cc.exe
- ls
deploy:
provider: releases
api_key:
secure: EmjPBHtlwaDUaZa1bxcLbnG6YQwucQqaR/xJax+c9kHxxPdXGGR1TbU9tkx49pde+fig+7PnuJKA7KLX0hwzbyqAITvX5mspkUt+cXgfHADexjGUGVCrM0/fgf7e9VvVAXVAFF/hg8frKqaEWI4x5GoY1epD6YMMXMGylQ3oSGKv/UwkpSbf7D0dNgmPLIUx03Cz9snNNz/zvMq5kcrKEGZBRTnsabEyDEEIVyPh1CUBWj28RCuQd7et17Dd16p+RjhKY4ZZRSZJj5yJb3TijI0aKeAEDFJlVF1aO7A0CLlBWYt+uVstlAxBsGnL/8jzT7yFc0W0alu7o7b9vSZ1gEwOc9cIXAQqEtF8mpEJzY7bspkgz04ZPcaOcCmfRmnXdmgzf3wkrMD9QKiOnivmZA0aNDY354xwLGZ8+fU+3Pq9sHHt9jfNXr8pMXJz8iVeizelMgnRa7DFt9/KadE07BAAwaGHeBrZYFZcFYiYMMKfI2NstjayjBIRuQBXAcwdTUqWXYQ06RUkO6UsuaZAOD5RDxG/ZXZuZXFp0q0Ai6e6t7VZ2YbQdOvwAZrGvn0OxmbcvsoPx0PjgfyCLf4/R7vR4I1Wxzw3IPQJ9B4kMteXsVIBKGf6Xi4xaqbKkjMckvNlmgbvAG8ZSEnfuNCBHdJAocWYM7TTRgubO4At2d0=
file:
- "${TRAVIS_BUILD_DIR}/ConsoleTest/cc.exe"
- "${TRAVIS_BUILD_DIR}/ConsoleTest/oo.exe"
- "${TRAVIS_BUILD_DIR}/ConsoleTest/output.tar"
file_glob: true
skip_cleanup: true
on:
repo: tlglovewf/CppTest
branch: master
.travis.yml 格式检查:http://lint.travis-ci.org/
关于发布,可以通过Travis 自动生成发布信息
命令行输入 travis setup release 然后根据提示会自动生成包括密钥在内的一系列内容