试图了解Travis CI的功能以及何时使用


86

我是Git的新手,在发现其中的一个小错误后,我打算为GitHub上的某个开源项目做出贡献。在分叉并修复错误后,我提出了一个拉取请求,并且注意到出现了这样的情况:

失败-Travis CI构建失败

查看详细信息,我发现它是由引起的Could not find .travis.yml,这很合理,因为我没有使用来登录Travis Cl,也没有将.travis.yml添加到存储库。

这是我第一次听说Travis,也就是所谓的持续集成。它听起来很酷,因此为了进一步了解它,我在Wikipedia上进行了查找。

Travis CI是一项托管的分布式连续集成服务,用于构建和测试GitHub上托管的项目。Travis CI自动检测何时进行了提交并将其推送到使用Travis CI的GitHub存储库中,并且每次发生这种情况时,它将尝试构建项目并运行测试。这包括对所有分支的提交,而不仅仅是对master分支的提交。

我目前对Travis CI的理解是,它所做的是自动推动项目进行的,git commit -am ".."而我对此不太了解。

  1. 通过构建项目并运行测试,它将运行什么测试?以及如何“构建”项目?(例如将其编译为二进制文件?)

  2. 它声明“这包括提交到所有分支” –但是,如果我不想提交到所有分支怎么办?

  3. 如果我完全不使用Travis Cl,可以吗?在什么情况下最好使用它(或必须使用它)?

Answers:


104

解释Travis CI的最简单方法是,每次您提交到GitHub时,它都会运行程序的测试(可以通过多种方式进行配置,并且您始终可以在某些分支上禁用构建)。这样做的目的是,您通常可以很快发现自己的提交是否损坏了某些内容,并在出现问题之前进行修复。我建议在您进行了单元测试的每个GitHub存储库上运行Travis CI,并使用Travis CI支持的编程语言。由于设置Travis CI非常容易,所以我通常不认为不使用它是一个很好的理由,除非您不在乎程序中是否通过了测试。如果您还有其他问题,请随时发表评论。您可以在此处阅读有关Travis CI的更多信息。


1
它说对于开源项目是“免费的”,但是说您的前100个版本是免费的。那么...那不是免费的吗?即使是独自开发,我也可以很快达到100个版本。我读错了吗?在任何地方都找不到任何信息。@ joshua-anderson
Mark Pieszak-Trilon.io 2015年

2
开源项目始终免费。对于私人回购协议,您需要先获得100个免费版本,然后才能注册付费计划。
joshua-anderson

典型的git工作流程不是拉最近的提交并在本地合并并进行测试,然后再推送到远程吗?
2016年

使用Angular,React或Vue的cli工具进行Web开发的人呢?这些框架在运行开发服务器时提供即时的编译和测试反馈。那和Travis CI之间有什么区别,或者我应该说一般在提交和使用CI前运行单元测试之间吗?
OzzyTheGiant

所以travis没有意义,我可以通过使用git commit钩子和阻止从test命令返回错误的push来轻松删除travis。
betoharres

16

正如您已经发现什么是Travis-CI一样,我将直接指出您的问题。

通过构建项目并运行测试,它将运行什么测试?以及如何“构建”项目?(例如将其编译为二进制文件?)

.travis.yml一个文件中,您指定您的操作系统,编程语言,您的repo分支,项目文件名和其他详细信息。通过读取此文件,Travis-CI将使用服务器上安装的特定编译器来编译我们的代码。可能它们将具有与Github相同的机制。第一次,他们可能会拉出代码[如果我们指定了特定的分支,他们可能只会从那些分支中拉出代码]。此外,我们已经通过身份验证,可以在Travis-CI中使用我们的帐户,无论何时进行提交,都应该向Travis-CI服务器触发一些通知,因此它将被识别为提交并开始编译。


它声明“这包括提交到所有分支” –但是,如果我不想提交到所有分支怎么办?

您可以指定其他分支或master分支。并且它仅应编译.travis.yml文件中指定的特定分支。


如果我完全不使用Travis Cl,可以吗?在什么情况下最好使用它(或必须使用它)?

是的,没关系。没有大碍。但是,如果不将这种易于集成的引擎与您的存储库结合起来,您将失去什么好处。每次提交时,它可能会遗漏某些东西,并且由于代码而无法编译。你怎么会知道 因此,您应该使用Travis-CI。


我写了一篇博客文章,您可以阅读该文章,以了解什么是Travis-CI,持续集成以及如何将Travis-CI与您的Github Repo链接。我已经为Swift存储库编写了它。


2

我认为目前正在学习Travis CI的时候,可以很好地回答您的问题。您首先遇到的第一个问题是,因为您正在贡献的项目正在使用Travis CI测试和构建该项目。如果项目未使用Travis CI,则不会遇到此类错误。

解决方案是检出Travis CI网站,并了解其工作方式以及它如何影响您正在进行的项目。这将使您处于很好的位置,以了解您的代码中出现了什么问题以及如何修复它。

回答有关构建项目的第一个问题。

通过构建项目并运行测试,它将运行什么测试?以及如何“构建”项目?(例如将其编译为二进制文件?)

这意味着在使用/测试之前如何处理源代码。这取决于您所使用的语言。例如,如果项目使用PHP编写。不会将我的代码构建到C / C ++源代码之类的可执行文件中。它将在PHP解释器上运行我的PHP代码并对其进行测试。它仍然会按照您惯用的语言进行正常的编译过程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.