本文列举了使用 Travis CI 可能遇到的问题及其解决方法。
官方文档:https://docs.travis-ci.com/
更新说明
travis-ci 有两个网站 .com 和 .org,之前 .com 用于私有项目,.org 用于开源项目。随着 travis ci 逐步使用 GitHub App,.org 网站会被弃用新用户请使用 .com
sudo:
指令废弃,移除容器接口,所有构建都在虚拟机中进行
注册登录
在 https://travis-ci.com 直接通过 GitHub 登录。
项目同步
目前,travis 仅支持构建 GitHub 项目。
登录之后点击右上角用户名,再点击左上的 Sync account
来同步 GitHub 项目。
如果你名下的 GitHub 组织没有显示,请点击左下 Review and add
重新授予权限。
安装 Travis CI GitHub App。
使用 Travis CI
在 Git 项目根目录增加 .travis.yml
文件,即可开始使用 travis, travis 会在项目每次提交(push),PR,tag 时自动构建项目。
使用示例
构建变量(环境变量)
在每个项目的设置页面中,通过 K-V
形式设置环境变量。
变量分为加密变量(构建过程不可见)和普通变量。
加密变量在构建项目中他人的 PR
时将不能被使用。在构建项目内不同分支的 PR 时可以使用。这一点需要注意:
例如,项目的 dev
分支向 master
分支提交 PR,构建 PR 时就可以使用加密变量。
他人向 dev
分支提交 PR,构建 PR 时就不能使用加密变量。
命令行工具
安装 Travis CI
命令行工具
1 | $ sudo gem install travis |
SSH
我们现在要让 Travis CI
能够通过 SSH 登录到 服务器
,就将 ~/.ssh/id_rsa
「加密复制」 到 Travis CI
。
加密 id_rsa
进入项目根目录执行:
1 | $ travis encrypt-file ~/.ssh/id_rsa --add |
请根据实际修改 SSH 密钥文件名,一般默认为 id_rsa
。
解密 id_rsa
命令执行之后,自动生成了 id_rsa.enc
文件,并自动在 .travis.yml
增加如下内容:
1 | before_install: |
注意:请将上述内容的
转义符
去掉:-out ~\/.ssh/id_rsa -d
改为-out ~/.ssh/id_rsa -d
ssh_known_hosts
首次 SSH 到某网址或 IP 需要输入 yes
来确认,你可以在 .travis.yml
文件中增加 ssh_known_hosts
来避免输入 yes
1 | after_success: |
构建规则
指定分支构建
1 | branches: |
这样 travis 只会构建 master
分支,dev
等其他分支提交(push)时不会构建。
部署
GitHub Pages
1 | deploy: |
script
1 | deploy: |
缓存 Cache
1 | cache: |
编程语言
在 .travis.yml
文件开头首先指明编程语言
1 | language: php |
请查看 官方文档
加密文件
https://docs.travis-ci.com/user/encrypting-files/
构建生命周期
1 | language: php |
其他
错误排查
Travis CI
本质就是一台云上的 Linux
(虚拟机),当执行错误时从以下两方面排查问题:
注意容器运行环境已废弃,即现在的构建环境都是在虚拟机中。
路径问题(使用
$ echo $PWD
调试)权限问题(没有执行权限
$ chmod +x filename.sh
)
时区
1 | before_install: |