不知道大家有没有这种体验,代码写完之后,要花大量的时间进行构建和测试,就拿 Python 来说吧,写完代码后,编写测试用例,准备测试环境,执行测试,完成构建,部署到服务器。
后面每改动一次代码,都要准备测试环境,执行测试,完成构建,部署到服务器,执行这一系列过程,相当耗时,尤其是在多个 Python 版本间进行测试时,简直就是体力活。
不过,现在这个问题不存在了,只要你会用 Travis Ci 这个持续集成工具。
Travis Ci 是一个基于云的, 绑定 GitHub 上的项目后,只要有新的代码提交,就会自动执行测试,完成构建,部署到服务器这一系列重复枯燥的过程,每次代码的小幅变更,我们就能很快看到运行结果,从而不断累积小的变更。这种及时反馈可以大大提升开发效率。
比如我有一个 GitHub 仓库,里面写好了单元测试,然后修改了代码之后提交到 GitHub,很快就可以看到构建的结果是 pass 还是 failed:
![768179529f2f3ffbd10b50dd3b23ab04.png](https://i-blog.csdnimg.cn/blog_migrate/5500e4d78b2c2a0e5a6b3da8fab50d5e.png)
当然,这个过程是需要我们配置的。
接下来分享下如何简单的使用 Travis Ci ,工具是开源免费的。
1、前提条件
你需要在代码托管平台有一个项目,或者叫仓库,英文 repositories。
代码托管平台目前支持 GitHub、Bitbucket、GitLab、Assembla。
你是仓库的所有者。
2、为仓库编写配置文件
在仓库[1]的根目录添加一个 .travis.yml 配置文件,来告诉 travis-ci 做什么。
比如我这里的一个 .travis.yml 配置文件如下所示:
language: python
python:
- "3.7"
- "3.8"
- "3.9"
# command to install dependencies
#install:
# - pip install tox
# command to run tests
script:
- python setup.py sdist bdist_wheel
notifications:
email:
recipients:
- somenzz@163.com
on_success: change
on_failure: always
上面代码中:
language 字段指定了编程语言,目前支持大部分主流编程语言
python 设定使用 Python 环境的版本
script 字段指定要运行的脚本,如果 script: true 表示不执行任何脚本,状态直接设为成功
如果有多个脚本,可以写成下面的形式:
script:
- command1
- command2
如果 command1 失败,command2 会继续执行。但是,整个构建阶段的状态是失败。如果 command2 只有在 command1 成功后才能执行,就要写成这样 script: command1 && command2
notifications 就是通知了,script 执行失败的话发邮件通知
还有 install 命令我注释掉了,该字段用来指定安装依赖,如果有多个命令要执行,可以写成下面的形式。
install:
- command1
- command2
上面代码中,如果 command1 失败了,整个构建就会停下来,不再往下进行。如果不需要安装,即跳过安装阶段,就直接设为true。
配置文件之前,我们需要自己本地执行一下 script 里面的命令,没有问题时再提交 .travis.yml 进行下一步。
2、登录 travis-ci,监听这个项目
访问 https://app.travis-ci.com/signin 并使用一个平台账号登录:
![8f2927b35baec46f11999b77545f5861.png](https://i-blog.csdnimg.cn/blog_migrate/313044dfe5ed4960f2e31f6a356ef9d8.png)
以 GitHub 为例,登进去后,我们会看到自己的仓库列表。
![4804be1fe54584fed49fc15249d31573.png](https://i-blog.csdnimg.cn/blog_migrate/edb5b8d87296151584546d8cbcd5ac31.png)
选择仓库前面的小圆圈,激活该仓库。
这里看到 dbinterface 已经激活了,点击进去,可以查看提交、构建的情况,只有我们 git push 这个仓库,就会自动构建,也可以点击按钮重新构建。
![8d8fd1af4642670a513b0a450b0c6bf7.png](https://i-blog.csdnimg.cn/blog_migrate/22ad4fc4fde15c613e49aade6bfb404b.png)
点击下方的构建条目可以看到详细的日志:
![6de24aeb666d0a04ff4ef800622023c3.png](https://i-blog.csdnimg.cn/blog_migrate/67188a9268f0151f82e75f5f68f1fb74.png)
3、其他骚操作
script 阶段结束以后,除了设置通知步骤(notification)还可以进行部署(deployment)比如,要部署到 Github Pages,可以写成下面这样。
deploy:
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN # 在 travis-ci.com 面板设置
on:
branch: master
其他部署方式,请看官方文档[2]。
不过 GitHub Actions 更为方便,可以查看前文:GitHub Actions入门教程:自动化部署静态博客
最后的话
如果你是 Github 的爱好者,那么 Travis 绝对值得一试。如果觉得本文有帮助,还请点个在看,感谢老铁支持。
扫码关注
推荐阅读
Travis Ci 官网提供的教程 Python[3]
参考资料
[1]
仓库: https://github.com/somenzz/dbinterface
[2]官方文档: https://docs.travis-ci.com/user/deployment/
[3]Travis Ci 官网提供的教程 Python: http://docs.travis-ci.com/user/languages/python/