软件开发中,编写代码只占很小的一部分,大部分时间是用来编译、测试和部署代码;为了提高软件开发的效率,出现了很多构建和测试的工具,Travis是众多工具中的一个,可以与github无缝集成实现构建、测试与部署。
持续集成(Continuous Integration)
持续集成是一种开发实践,项目组的开发成员经常将代码合并到共享代码仓库中,任何一次的代码合并都通过自动构建和自动化测试(非必须)进行代码合并的验证,确保每次合并都是正确的。简言之,代码仓库中的代码只要发生变化就触发构建和测试,来验证代码的变动并反馈构建结构。
持续集成的优点:
- 对代码的变更进行及时的构建和验证,避免对大量的代码变动进行构建,加速bug检出和解决
Travis提供持续集成服务(Continuous Integration, CI),只需要绑定github账号及相关项目,即可在github中项目的代码发生变动时进行下载,然后创建构建环境,运行项目中配置的构建流程,实现构建、测试和部署。
Travis与github集成
前提条件:有github账号且账号下有项目
注意 如果是github的公共仓库,可使用travis-ci.org,如果是私有仓库,必须使用travis-ci.com
流程:
- 使用github账号登陆travis官网
- 点击头像旁的箭头,进入
Settings
- 在Repositories页签中点击
Active
,如果已经添加过仓库,则点击Manage repositories on GiHub
- 第三步会自动跳转到github的Travis CI页面,进行项目的授权,可选择所有仓库或选择特定仓库,然后进行安装即可
编写配置文件.travis.yml
在travis网站上配置好仓库之后,还需要在项目的主目录下创建.travis.yml
配置文件,才会触发travis的持续集成;该配置文件指定持续集成时Travis的行为,一旦仓库有新的commit,Travis就会去主目录中找这个配置文件并执行里面的命令。
.travis.yml
配置文件采用YAML格式,支持多种编程语言,可配置代码的构建环境等,具体的配置参考官方文档。
travis.yml文件demo1
2
3
4
5
6
7
8
9
10
11language: node_js
node_js: 12
install:
- npm install
script:
- npm run build
- git add .
- git commit -m "build vulscn-web"
- git push origin develop
notifications:
email: owefsad@gmail.com
上面的配置设置了运行环境为nodejs,版本为12,构建前需要使用npm install
安装依赖,然后执行4条构建语句,构建结束后发送通知邮件到owefsad@gmail.com
流程详解
- 设置运行环境及对应的语言版本
- 执行install配置块中指定的动作,安装项目需要的依赖,如果有多条安装依赖的指令,则向下补充即可;依赖安装过程中如果发生错误则构建终止;如果不需要安装依赖,则删除该配置块或设置为true
- 依赖安装成功后,执行script中指定的构建指令;构建指令出错不影响下一条构建指令,但只要有一条构建指令出错,最终的构建结果为失败;如果需要指定指令间的逻辑与关系,可通过
script: command1 && command2
指定。
部署
script阶段执行结束之后,还可以设置通知和部署,它们不是必须的,但是,在日常项目中,一般是需要的。本文以自定义脚本实现部署为例:1
2
3
4
5
6
7
8
9deploy:
- provider: script
script: deploy_production.sh
on:
branch: production
- provider: script
script: deploy_staging.sh
on:
branch: staging
上述配置,指定了两个部署动作,一个在分支production上执行deploy_producation.sh脚本,另一个在分支staging上执行deploy_staging.sh脚本
其他内容本文暂不记录,请参阅阮一峰-持续集成服务
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。