Travis CI中文文档

快速开始

初学者应该了解的一些核心概念

欢迎来到 Travis CI!此页面提供了整个平台和文档中使用的一些上下文和术语,如果您是第一次访问此页面或是持续集成(CI)的新用户,这可能会有所帮助。

什么是持续集成(CI)?

持续集成是频繁的合并更改的少量代码的实践 – 而不是在开发周期结束时合并大量更改。目标是通过以较小的增量开发和测试来构建更健康的软件。这就是Travis CI的用武之地。

作为一个持续集成平台,Travis CI通过自动构建和测试代码更改来支持您的开发过程,并提供有关变更成功的即时反馈。Travis CI还可以通过管理部署和通知来自动化开发过程的其他部分。

CI构建和自动化:构建、测试、部署

当你开始一次构建时,Travis CI会将您的GitHub存储库克隆到全新的虚拟环境中,并执行一系列任务来构建和测试您的代码。如果其中一个或多个任务失败,则构建被视为已 损坏。如果没有任何任务失败,则认为构建已通过,Travis CI可将您的代码部署到Web服务器或应用程序主机。

CI构建还可以自动化交付工作流程的其他部分。这意味着您可以通过构建阶段,设置通知,在构建之后准备 部署以及许多其他任务来使作业彼此依赖。

构建、工作、阶段和阶段

在Travis CI文档中,一些常用词具有特定含义:

  • phase(阶段) – 工作的 sequential steps (连续步骤)。例如,install阶段在script阶段之前,script 阶段在可选 deploy 阶段之前。
  • job(工作) – 一个自动化过程,它将您的存储库克隆到虚拟环境中,然后执行一系列阶段,例如编译代码,运行测试等。如果script阶段的返回代码 非零,则作业失败。
  • build(构建) – 一组工作。例如,一次构建可能有两个作业,每个作业使用不同版本的编程语言测试项目。一次构建是在所有作业完成后结束。
  • stage – 作为由多个阶段组成的顺序构建过程的一部分并行运行的一组作业。 a group of jobs that run in parallel as part of a sequential build process composed of multiple stages.
  • ———————–待优化——————–

构建失败 Breaking the Build

当一个或多个工作在结束时是没有通过的状态,那么这次构建则被认为是失败的:

  • errored(错误):在 before_install ,install 或者 before_script 阶段运行的一条指令返回来一个非零退出码。那么这个工组则会立刻停止。
  • failed (失败):在 script 阶段运行的一条命令返回一个非零退出码。这个工作会继续直到完成。
  • canceled(取消):用户在工作完成之前取消。

基础环境

Travis CI提供了一些不同的基础环境,所以您可以选择最适合您的项目的设置:

  • *Ubuntu Linux-这些Linux Ubuntu环境完全在虚拟机内运行,提供了大量的计算资源,并支持使用sudosetuidsetgid。查看有关Ubuntu Linux Build Environment更多信息。
  • macOS – 使用macOS操作系统的几个版本之一。此环境对于构建需要macOS软件的项目非常有用,例如用Swift编写的项目。如果您在macOS计算机上进行开发,则不要求使用macOS环境。在这里,您可以找到有关macOS构建环境更多详细信息。
  • Windows – 目前支持Windows Server版本1803。如果您想了解更多信息,请参阅Windows Build Environment

有关构建环境的更多详细信息,请参阅CI环境文档。

现在您已经阅读了基础知识,请访问我们的教程,了解有关设置首次构建的详细信息!

Travis CI 教程

这是一份告诉你 GitHub 与Travis CI 如何一起使用的简短教程。如果您是刚刚接触持续集成,或者想了解更多关于Travis CI的信息,请从初学者应该了解的核心概念开始。

前期准备

在开始使用Travis CI之前,确保你具备以下条件:

  • 一个 GitHub 账号
  • 拥有托管在GitHub上的项目的所有者权限

开始

  1. 访问 Travis-ci.com 并且使用 Github 账号进行注册
  2. 允许授权给 Travis CI ,你将被重定向到 GitHub 网站。
  3. 点击绿色的激活按钮,并且选择你需要同步到 Travis CI 中的仓库。
  4. 在你的仓库中新增一个名为 .travis.yml 的文件来让 Travis CI 知道应该怎么做。以下示例指定应使用Ruby 2.2和最新版本的JRuby构建的Ruby项目。
language: ruby
rvm:
  - 2.2
  - jruby

​ 对于Ruby项目会默认bundle install(捆绑安装) 来安装所需依赖,并且rake 构建项目。

  1. .travis.yml 文件加到 git 中,提交并且推送来触发Travis CI构建:

Travis 只有在你将 .travis.yml 文件提交并推送后才会执行构建。

  1. 通过访问Travis CI并选择存储库,检查构建状态页面,根据构建命令的返回状态来查看构建通过还是失败。 选择其他程序语言

使用下面的这些语言中的其中一种:

.travis.yml

language: ruby

language: java

language: node_js

language: python

language: php

如果你的测试需要在 macOS 或者你的项目使用 Swift 、Object-C 编写,请使用我们的 macOS环境。

.travis.yml

os: osx

如果您在Mac上进行开发,则不一定需要使用macOS。如果您需要Swift,Objective-C或其他特定于macOS的软件,则仅需要macOS。

Travis CI支持许多编程语言

更多功能

Travis CI不只是用于运行测试,还有许多其他功能来应用你的代码:

阅读更多

自定义构建

构建超时

挂起测试组件或者构建脚本十分常见。Travis CI 对于每个job都有特定的时长限制,当出现以下情形时将会停止构建,并且在构建日志中添加一条错误信息:

  • 当一个 job 超过十分钟没有日志输出
  • 当公共库上存储的作业花费超过50分钟时。
  • 当私有库上存储的作业花费超过120分钟时。

下面是一些导致构建挂起的常见原因:

  • 等待键盘输入或者其它的一些与用户交互行为
  • 并发问题(死锁、活锁等等)
  • 安装需要编译很长时间的本地扩展

构建没有超时;只要需要完成所有 jobs,构建就会运行,但如果任何 job 达到超时限制,则会立即停止。

构建的声明周期

构建的生命周期详情请点击 这里

限制并发作业(jobs)

最大的工作并发数量取决于系统总负载,但是有一种情况下你可能会希望设置一个特殊的限制:

  • 如果你的构建依赖于外部资源,并发的工作可能会竞争对资源的使用。(译者注:互斥)

在每一个仓库(repository)的设置界面中,你都可以在设置并发工作的最大数量。

或者在客户端使用命令行:

travis settings maximum_number_of_builds --set 1

仅构建最新提交

如果您只对在每个分支上构建最新提交感兴趣,则可以使用此新功能自动取消队列中尚未运行的旧版本。现有的构建将被允许完成。

自动取消设置位于每个存储库的“设置”选项卡中,您可以单独启用它:

  • 自动取消分支构建-取消队列中分支的构建并且会出现在你仓库的构建历史页上。
  • 自动取消拉取请求构建 – 取消拉取请求的排队构建(the future merge result of your change/feature branch against its target),并显示在存储库的“拉取请求”选项卡中。

例如,在下面的屏幕截图中,我们将提交ca31c2b推送到分支MdA-fix-notice,而构建#226和#227排队。启用自动取消功能后,构建#226和#227会自动取消:

Git 克隆深度

Travis CI可以将存储库克隆到最大深度为50次提交,这在您执行git操作时才真正有用。

请注意,如果您使用深度为1并且具有作业队列,则在您推送新提交时,Travis CI将不会构建队列中的提交。

你可以在 .travis.yml 中设置克隆深度:

git:
  depth: 3

你也可以移除 --depth 的值,使用下面这种方式:

git:
  depth: false
 在仓库中的一些操作,例如常见的自动代码审查脚本*(e.g. Pronto for Ruby)* ,由于`git clone`的限制不能访问仓库中的所有对象而导致操作失败。移除`depth flag` ,并且运行 `git fetch --unshallow` 应该可以解决这个问题。

Git 无痕克隆

Travis CI 克隆仓库代码时默认不使用 quiet 参数。当然如果你想要避免日志文件大小的限制或者你根本不想要日志文件记录此次克隆那么启用quiet flag 是十分有用的。

你可以在.travis.yml中启用 quiet flag

git:
  quiet: true

Git 子模块

Travis CI 默认克隆Git 子模块,如果不想这么做的话请使用下面这种方式进行设置:

git:
  submodules: false

Git LFS(大文件存储)

认证

当使用 Git LFS 的时候,我们推荐使用只读的 GitHub OAuth 令牌进行身份验证:

before_install:
- echo -e "machine github.com\n  login $GITHUB_TOKEN" > ~/.netrc
- git lfs pull

当连接私有仓库时会需要这种认证,并在连接到开源仓库时阻止速率限制。

LFS目前不支持部署密钥,因此您应该使用GitHub OAuth令牌进行身份验证,如上例所示。

Linux

在Ubuntu Trusty,Xenial 和 Bionic images 默认支持 Git LFS。

macOS

在 macOS 上推荐使用brew 来安装git-lfs的方法来获取 Git LFS 。

os: osx

before_install:
- brew install git-lfs

before_script:
- git lfs pull

未完待续… …

发布者

常轩

常轩

总要做点什么吧!

发表评论

电子邮件地址不会被公开。 必填项已用*标注