可信构建环境

Trusty 已被 Canonical 停止支持,请尝试更新到较新的镜像。Travis CI 对 Trusty 镜像的更新工作将在 2024 年年底结束,我们认为它已过时。您可以将我们的 Trusty 到 Xenial 迁移指南 作为更新的过渡步骤,但请注意 Xenial LTS 也已停止支持。强烈建议使用更新的镜像。

本指南涵盖的内容 #

本指南概述了 Trusty 环境中可用的软件包、工具和设置。

使用 Trusty #

要使用 Ubuntu Trusty,请将以下内容添加到您的 .travis.yml 文件中。

dist: trusty

如果您想了解更多关于使用 Trusty 的优缺点和当前状态的信息,请继续阅读。

Travis CI 在一个隔离的 Google Compute Engine 虚拟机中运行每个构建,为每个构建提供一个原始的构建环境。

构建可以访问各种用于数据存储和消息传递的服务,并且可以安装运行所需的任何内容。

Linux 基础设施 #

Travis CI 在一个隔离的 Google Compute Engine 虚拟机中运行每个构建,为每个构建提供一个原始的构建环境。

这样做的优点是构建之间不会保留任何状态,提供了一个干净的环境,并确保您的测试在一个从头开始构建的环境中运行。

您的构建会自动路由到此基础设施,您无需对 .travis.yml 进行任何修改。

基于容器的基础设施 #

基于容器的基础设施已被完全 弃用。请删除 .travis.yml 文件中的任何 sudo: false 键,以使用完全虚拟化的 Linux 基础设施

与 Precise 的镜像差异 #

在基于 Precise 的环境中,我们传统上构建了一个基于常见语言运行时(如 rubygophppython 等)的镜像库。

对于基于 Trusty 的环境,我们正在创建一组较小的镜像,其中包括

  • 一个 最小镜像,其中包含一小部分解释器,以及 dockerpacker
  • 一个 较大镜像,其中包含与 Precise 环境中大致相同的运行时和服务。

所有 Trusty 镜像共有的环境 #

版本控制 #

所有虚拟机镜像都预装了以下内容:

  • Git 2.x
  • Mercurial
  • Subversion(官方 Ubuntu 软件包)

编译器和构建工具链 #

已安装 build-essential 元软件包,以及以下现代版本:

  • GCC
  • Clang
  • make
  • autotools
  • cmake
  • scons

网络工具 #

  • curl
  • wget
  • OpenSSL
  • rsync

Docker #

Docker 作为服务安装。我们使用官方的 Docker apt 代码库,因此您可以根据需要轻松地使用 apt 安装其他版本。

docker-compose 也已安装。

有关更多详细信息,请参阅我们的 在构建中使用 Docker 部分。

Ruby 镜像 #

rvm 已安装,我们预安装了至少两个最新的次要版本。这些是当前预安装的 Ruby 版本

  • 2.2.7
  • 2.3.4
  • 2.4.1

其他版本会在运行时从本地缓存动态安装。

Python 镜像 #

我们在 2.x3.x 系列中预安装了至少两个最新的 CPython 版本,例如 2.7.133.6.1,以及至少一个版本的 PyPy。任何未预安装的版本都将在运行时从本地缓存动态安装。

pyenv 也已安装。

默认 Python 版本 #

如果您在 .travis.yml 中省略了 python 键,Travis CI 将使用 Python 2.7。

预安装的 pip 软件包 #

Travis CI 在每个虚拟环境中默认安装以下软件包:

  • nose
  • pytest
  • wheel
  • mock
  • six

在所有 Python 版本(pypy 和 pypy3 除外)上,numpy 也可用。

JavaScript 和 Node.js 镜像 #

nvm 已安装,我们预安装了至少两个最新的次要版本,例如 6.9.47.4.0

您可以指定其他版本,这些版本将使用 nvm 动态安装。

Go 镜像 #

gimme 已安装,我们预安装了至少两个最新的次要版本,例如 1.7.31.8.3。任何未预安装的版本都将由 gimme 动态安装。

JVM(Clojure、Groovy、Java、Scala)镜像 #

  • 我们从官方 Ubuntu Trusty 软件包中安装最新的 OpenJDK 版本
    • Open JDK 7 (openjdk7)
    • Open JDK 8 (openjdk8)
    • 未安装 OpenJDK 6。要使用 OpenJDK 6,请安装 openjdk-6-jdk 软件包。例如,使用 apt 附加组件
      addons:
        apt:
          packages:
            - openjdk-6-jdk
      jdk: openjdk6
      
  • 我们从 Oracle 安装最新的 Oracle JDK 版本
    • Oracle JDK 8 (oraclejdk8)。默认。
    • Oracle JDK 9 (oraclejdk9)
    • 未提供 Oracle JDK 7,因为它已于 2015 年 4 月停止支持。
    • 未提供 Oracle JDK 10,因为它已于 2018 年 10 月停止支持。
    • Oracle JDK 11 (oraclejdk11)
  • 如果您需要其他 JDK 版本,则会安装jdk_switcher

当您为 JVM 镜像选择 jdk 值时,$JAVA_HOME 将被正确设置。

Gradle 版本 #

Gradle 4.0。

Maven 版本 #

默认的 Apache Maven 3.5.x,配置为使用 CentralSonatype 镜像。

Ant 版本 #

Ant 1.9.3。

Leiningen 版本 #

Leiningen 2.7.1。

SBT 版本 #

由于功能强大的 sbt-extras 替代方案,Travis CI 可以提供任何版本的 Simple Build Tool(sbt 或 SBT)。sbt 可以动态检测并安装您的 Scala 项目所需的 sbt 版本。

Perl 镜像 #

Perl 版本通过 Perlbrew 安装。Perl 的默认版本是 5.14。

支持线程的 Perl 运行时 #

某些 Perl 已编译为支持线程。它们已使用额外的编译标志 -Duseshrplib-Duseithreads 编译。

5.26-shrplib
5.24-shrplib
5.22-shrplib
5.20-shrplib
5.18-shrplib

预安装模块 #

cpanm (App::cpanminus)
Dist::Zilla
Dist::Zilla::Plugin::Bootstrap::lib
ExtUtils::MakeMaker
LWP
Module::Install
Moose
Test::Exception
Test::Kwalitee
Test::Most
Test::Pod
Test::Pod::Coverage

PHP 镜像 #

phpenv 已安装,我们预安装了至少两个最新的点版本,例如 7.0.75.6.24,以及 5.5.9(Ubuntu 14.04 LTS 默认附带的版本)。任何未预安装的版本都将从本地缓存中动态安装,或者如果不可用,则通过 phpenv 构建。

注意:我们不支持 Trusty 上的 PHP 5.2.x 和 5.3.x 版本。指定这些版本将导致构建失败。如果您需要使用这些版本进行测试,请使用 Precise。

language: php
jobs:
  include:
    - php: 5.2
      dist: precise
    - php: 5.3
      dist: precise

HHVM #

hhvm 也可用。并且按需安装 nightly 版本(作为 hhvm-nightly)。

language: php
dist: trusty
php:
  - hhvm-3.3
  - hhvm-3.6
  - hhvm-3.9
  - hhvm-3.12
  - hhvm-3.15
  - hhvm-3.18
  - hhvm-nightly

扩展 #

PHP 7.0 #

以下扩展程序已为 PHP 7.0 和 nightly 版本预安装

请注意,除了 xdebug 之外,这些扩展默认情况下未启用。

PHP 5.6 及以下版本 #

对于 PHP 5.6 及以下版本,以下扩展可用

请注意,除了 xdebug 之外,这些扩展默认情况下未启用。

其他软件 #

使用 apt-get 安装其他 Ubuntu 软件包,或添加第三方 PPA 或自定义脚本。有关更多详细信息,请参阅有关 安装依赖项 的文档。

数据库和服务 #

我们预安装了以下服务,这些服务可以使用内置的 服务 支持激活。

  • Apache Cassandra
  • CouchDB
  • ElasticSearch
  • MongoDB
  • MySQL
  • Neo4j
  • PostgreSQL
  • RabbitMQ
  • Redis
  • Riak
  • SQLite

Firefox #

Firefox 默认安装。

如果您需要特定版本的 Firefox,请使用 Firefox 插件在构建的 before_install 阶段安装它。

例如,要安装 50.0 版,请将以下内容添加到您的 .travis.yml 文件中

addons:
  firefox: "50.0"

无头浏览器测试工具 #

环境变量 #

每个构建环境中都提供了一个 默认环境变量列表

apt 配置 #

apt 配置为不需要确认(默认情况下假定 -y 开关),同时使用 DEBIAN_FRONTEND 环境变量和 apt 配置文件。这意味着 apt-get install -qq 可以不用 -y 标志。

组成员资格 #

执行构建的用户($USER)属于从该用户派生的一个主组。

如果您需要修改组成员资格,请按照以下步骤操作

  1. 设置环境。这可以在构建生命周期的任何时间在构建脚本执行之前完成。

    • 设置并导出环境变量。
    • $USER 添加到所需的辅助组:sudo usermod -a -G SECONDARY_GROUP_1,SECONDARY_GROUP_2 $USER 您可以使用 -g 修改用户的初始组。
  2. 您的 script 将如下所示

script: sudo -E su $USER -c 'COMMAND1; COMMAND2; COMMAND3'

这会将环境变量传递到以 $USER 身份运行的 bash 进程中,同时保留上面在 usermod 中定义的环境变量和属于辅助组的环境变量。

构建系统信息 #

在构建日志中,“构建系统信息”部分显示了相关软件版本(包括可用的语言版本)。

其他 Ubuntu Linux 构建环境 #

您可以查看 Ubuntu Linux 概述页面,了解您可以使用的不同 Ubuntu Linux 构建环境。