前言
偶然在一个github开源项目中发现了.travis.yml这货,然后一发不可收拾,翻了翻之前看的几个开源库都有这个文件,并且最近经常看到它,这被称为“巴德尔-迈因霍夫现象”,是一种认知偏见,即在第一次注意到某一事物后,有一种更频繁地注意到它的倾向,导致某人相信它有很高的频率,既然这样索性就深入研究了一下这个文件,发现它原来是用于持续集成的。
持续集成
持续集成是一种 DevOps(Development和Operations的组合词)软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来进行验证,从而尽早地发现集成错误,提高软件质量,并减少验证和发布新软件更新所需的时间。
持续集成是将构建并测试的过程自动化,在你提交代码时,持续集成服务能够自动触发构建与测试过程,并反馈结果,加快开发周期,同时减少脏代码的引入,而持续集成工具有很多,常见的包括 Jenkins
、Gitlab-CI
、Travis CI
和 AppVeyor
,github上项目的持续集成可以选择使用 Travis CI
,也有项目使用 AppVeyor
,它们都是开源持续集成云服务。
YAML
.travis.yml
是 github 用于说明持续集成步骤配置文件,使用的语言是 YAML
。它是一种可读性非常高,与程序语言数据结构非常接近,同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。经常会拿它和 XML
和 JSON
进行对比,YAML
比 XML
语法简洁得多,但是没有 XML
的标签概念,而 JSON
语法是 YAML 1.2
的子集,非常接近 YAML1.0
与 YAML1.1
的子集。
YAML
可以简单表达清单、散列表,标量等数据结构。它使用空白符号缩进,适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲等,配置文件后缀为通常为 .yml
,比如:.travis.yml
。
关于具体的语法本文就不展开说了,网上自行搜索一下,不同类型的项目的配置通常有自己的规范,可以参照travis官方配置说明,下面展示一个 .travis.yml
文件
1 | language: cpp |
第一次使用 .travis.yml
要想学会一件事必须反复强化记忆,所以我决定自己写个.travis.yml
来使用一次,刚开始语法还不太熟悉,所以我打算在一些开源项目的文件基础上来修改,需求也比较简单,只要能实现我上传到github的代码能自动编译就可以了。
注册登录travis
登陆 travis 官网,直接用github账号登陆即可,这样 travis 可以直接关联登录的github账号,自动获取你的仓库信息。
登陆之后,点击settings,然后激活 Travis CI
勾选需要持续集成的仓库。
编写代码
为了方便测试,我们只编写一个简单的 HelloWolrd.cpp
测试文件好了
1 |
|
编写.travis.yml
我只写了一个文件,要求只要编译 gcc
通过就行了,暂时也不需要邮件通知
1 | language: cpp |
推送代码启动Travis CI
1 | Albert@home-pc MINGW64 /d/data/maingit/HelloWorld (master) |
推送之后travis-ci网站会自动启动,构建过程和结果如下:
第一次尝试失败,检查发现编译文件的路径写错了,修改后再次推送,成功构建的界面如下:
然后就可以在编译状态按钮后面领取这样一个标签,它可以根据项目构建状态实时变化,快把它加到项目的README文件里吧。
[![Build Status](https://app.travis-ci.com/AlbertGithubHome/HelloWorld.svg?branch=master)](https://app.travis-ci.com/AlbertGithubHome/HelloWorld)
总结
.travis.yml
是使用Travis CI
持续集成服务的配置文件,使用YAML
语言编写YAML
比XML
语法简洁得多,但是没有XML
的标签概念,而JSON
语法是YAML 1.2
的子集GitHub
和Travis CI
是一对好基友,几乎不用额外的配置,只要按照官方语法写好.travis.yml
文件即可- 可以把
Travis CI
看成一个机器人,每当我们 push 代码时,这个机器人会按照既定流程帮我们自动构建和检测
卅是一个阶段,更是一个开始~
2022-7-3 01:08:33