尝试理解Travis CI的作用及其使用时机

91

我对Git非常陌生,但在发现其中一个小错误后,我打算贡献给GitHub上的某个开源项目。在forking该项目并修复错误后,我发起了拉取请求,但我注意到出现了以下内容:

失败 - Travis CI构建失败

查看详情后,我发现这是由于无法找到.travis.yml导致的,这很有道理,因为我还没有登录Travis Cl并将.travis.yml添加到存储库中。

这是我第一次听说Travis和连续集成。它听起来很酷,所以我在维基百科上查了一下。

Travis CI是一个托管的、分布式的连续集成服务,用于构建和测试托管在GitHub上的项目。Travis CI会自动检测到提交已经被推送到使用Travis CI的GitHub存储库中,并且每次这种情况发生时,都会尝试构建该项目并运行测试。这包括对所有分支的提交,而不仅仅是主分支。

我的当前理解是,Travis CI会在执行git commit -am ".."命令时自动推送项目,但我不太明白其部分内容。

  1. 通过构建项目并运行测试,它要运行哪些测试?它会如何“构建”项目?(像编译成二进制文件吗?)

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

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

3个回答

108
Travis CI 最简单的解释就是它每次你提交到 GitHub 时都会运行你程序的测试(这可以通过多种方式进行配置,并且你始终可以禁用某些分支上的构建)。这样做的目的是,你通常可以很快发现你的提交是否出了什么问题,并在它变成问题之前修复它。我建议在每个使用 Travis CI 支持的编程语言并拥有单元测试的 GitHub 存储库上运行 Travis CI。由于设置 Travis CI 非常容易,除非你不关心你的程序是否通过测试,否则我通常看不到不使用它的好理由。如果您有任何疑问,请随时留言。您可以在此处阅读更多关于 Travis CI 的信息

1
它说对于开源项目是“免费”的,但是你的前100个构建是免费的。那么...这不是免费的了吗?即使我独自开发,我也可以很快达到100个构建。我理解错了吗?我找不到任何信息。@joshua-anderson - Mark Pieszak - Trilon.io
4
对于开源项目来说,始终是免费的。对于私有代码库,您可以获得100个免费构建,之后需要注册付费计划。 - joshua-anderson
典型的 Git 工作流程不是先拉取最新的提交,然后在本地合并、测试,最后推送到远程吗? - Ben
那些使用 Angular、React 或 Vue 的 CLI 工具进行 Web 开发的人怎么办呢?这些框架在运行开发服务器时提供即时的转译和测试反馈。这与 Travis CI 有什么区别,或者说在提交之前运行单元测试和使用 CI 一般有什么区别吗? - OzzyTheGiant
所以 Travis 没有意义,我可以轻松地通过使用 git commit 钩子来删除 Travis,并阻止返回测试命令错误的推送。 - betoharres

16

既然您已经了解了Travis-CI是什么,我会直接回答您的问题。

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

.travis.yml文件中,您可以指定您的操作系统、编程语言、存储库分支、项目文件名和其他详细信息。通过阅读此文件,Travis-CI将使用安装在其服务器上的特定编译器来编译我们的代码。可能他们的机制与我们在Github上的机制相同。首次,他们可能会拉取代码[如果我们已指定特定的分支,则可能仅从这些分支中拉取代码]。还有,我们已经通过验证可以使用我们的帐户与Travis-CI一起使用,每当我们进行提交时,应该会触发某些通知到Travis-CI服务器,因此它将被识别为提交并开始编译。


它说:“包括所有分支的提交”,但如果我不想提交到所有分支怎么办?

您可以指定不同的分支或master分支。它只应编译.travis.yml文件中指定的特定分支。


如果我根本不使用Travis CI,会有问题吗?何时最好使用它(或必须使用它)?

是的,这没关系。但是,如果您不使用此易于集成到存储库中的引擎,您将错过哪些好处呢?每次提交可能会遗漏某些内容,因为代码无法编译。您怎么知道呢?因此,您应该使用Travis-CI。


我写了一篇博客文章,你可以阅读它了解什么是Travis-CI、持续集成以及如何将Travis-CI与你的Github Repo链接起来。这篇文章是为Swift代码库编写的。


2
我认为我现在正在学习Travis CI,因此我可以很好地回答你的问题。你在第一次遇到的问题是因为你要贡献的项目正在使用Travis CI来测试和构建该项目。如果该项目没有使用Travis CI,你就不会遇到这样的错误。
解决方法是查看Travis CI网站,了解它的工作原理以及它对你正在开发的项目产生了什么影响。这将使你更好地理解你的代码出了什么问题以及如何解决它。
回答第一个问题:关于构建项目。
“构建”指的是在使用/测试源代码之前对其进行处理。这取决于你所编写的语言。例如,如果该项目使用PHP编写,它不会像C/C++源代码一样将我的代码构建成可执行文件。它将在PHP解释器上运行我的PHP代码,并在此过程中进行测试。它仍然需要通过你所选语言的正常编译过程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接