精确构建环境
Precise 已被 Canonical 终止支持,请尝试更新到更新的镜像。它被视为 Travis CI 中已弃用的构建环境,并且不支持任何更新。过去的指南,仅供参考:Precise 到 Trusty 迁移指南 和 Trusty 到 Xenial 迁移指南。
本指南涵盖的内容 #
本指南解释了 Travis CI 环境(通常称为“CI 环境”)中可用的软件包、工具和设置。
概述 #
Travis CI 在隔离的虚拟机中运行构建,这些虚拟机为每个构建提供一个原始的构建环境。
这样做的好处是构建之间不会保留任何状态,从而提供了一个干净的状态,并确保您的测试在从头开始构建的环境中运行。
构建可以访问各种服务以进行数据存储和消息传递,并且可以安装运行所需的任何内容。
网络 #
传统环境中运行测试的虚拟机启用了 IPv6。它们没有任何外部 IPv4 地址,但能够与任何外部 IPv4 服务通信。基于容器的、macOS 和 GCE(Precise 和 Trusty)构建目前没有 IPv6 连接。
IPv6 堆栈可能会对 Java 服务产生一些影响,在某些情况下,可能需要设置标志 java.net.preferIPv4Stack
以强制 JVM 使用 IPv4 堆栈,如果服务出现无法启动或无法通过网络访问的问题: -Djava.net.preferIPv4Stack=true
。
大多数服务在与本地主机通信时都能正常工作,方法是使用 localhost
或 127.0.0.1
。
所有 Precise 镜像通用的环境 #
您将在下面找到我们基于 Precise 的镜像的通用内容列表。
对于其他镜像,请参见下面的列表
版本控制 #
所有 VM 镜像都预装了以下内容
- 来自 git-core PPA 的 Git 1.8 版本
- Mercurial(官方 Ubuntu 软件包)
- Subversion(官方 Ubuntu 软件包)
编译器和构建工具链 #
GCC、Clang、make、autotools、cmake、scons。
网络工具 #
curl、wget、OpenSSL、rsync
Go #
Go 编译器/构建工具。
运行时 #
每个工作器至少有一个版本的
- Ruby
- OpenJDK
- Python
- Node.js
- Go 编译器/构建工具
以适应构建期间可能需要其中一个运行时的项目。
特定于语言的工作器具有其各自语言的多个运行时(例如,Ruby 工作器大约有 10 个 Ruby 版本/实现)。
数据存储 #
- MySQL
- PostgreSQL
- SQLite
- MongoDB
- Redis
- Riak
- Apache Cassandra
- Neo4j 社区版
- ElasticSearch
- CouchDB
Firefox #
所有虚拟环境都安装了最新版本的 Firefox,目前 Linux 环境为 31.0,macOS 环境为 25.0。
如果您需要特定版本的 Firefox,请使用 Firefox 附加组件在构建的 before_install
阶段安装它。
例如,要安装 17.0 版,请将以下内容添加到您的 .travis.yml
文件中
addons:
firefox: "17.0"
请注意,该附加组件仅在 64 位 Linux 环境中有效。
消息传递技术 #
无头浏览器测试工具 #
环境变量 #
每个构建环境都提供了一个 默认环境变量列表。
库 #
- OpenSSL
- ImageMagick
apt 配置 #
apt 配置为不需要确认(默认情况下假设 -y 开关),同时使用 DEBIAN_FRONTEND
环境变量和 apt 配置文件。这意味着可以使用 apt-get install -qq
而无需 -y 标志。
组成员身份 #
执行构建的用户($USER
)属于从该用户派生的一个主组。如果您的项目需要额外的成员资格才能运行构建,请按照以下步骤操作
-
设置环境。这可以在构建生命周期的任何时间在构建脚本执行之前完成。
- 设置和导出环境变量。
- 将
$USER
添加到所需的辅助组:sudo usermod -a -G SECONDARY_GROUP_1,SECONDARY_GROUP_2 $USER
您可以使用
-g
修改用户的初级组。 -
您的
script
将如下所示script: sudo -E su $USER -c 'COMMAND1; COMMAND2; COMMAND3'
这会将环境变量传递到以 $USER
身份运行的 bash
进程,同时保留上面在 usermod
中定义的环境变量和属于辅助组的环境变量。
构建系统信息 #
在构建日志中,“构建系统信息”中显示了相关软件版本(包括可用的语言版本)。
Go VM 镜像 #
以下别名可用,建议使用它们以最大程度地减少镜像更新时的摩擦
go1
、go1.8
→ 1.8.1go1.0
→ 1.0.3go1.1.x
→ 1.1.2go1.2
→ 1.2.2go1.2.x
→ 1.2.2go1.3.x
→ 1.3.3go1.4.x
→ 1.4.3go1.5.x
→ 1.5.4go1.6.x
→ 1.6.4go1.7.x
→ 1.7.5go1.8.x
→ 1.8.1go1.x
→ 1.8.1go1.x.x
→ 1.8.1
JVM(Clojure、Groovy、Java、Scala)VM 镜像 #
有关构建 JVM 项目的具体详细信息,请参阅 默认 JVM 选项。
JDK #
- Oracle JDK 7 (oraclejdk7)
- OpenJDK 7 (openjdk7)
- OpenJDK 6 (openjdk6)
- Oracle JDK 8 (oraclejdk8)
Oracle JDK 7 是默认值,因为与 Ubuntu 存储库中的 OpenJDK 7 相比,我们的补丁级别更新得多。未提供 Sun/Oracle JDK 6,因为它在 2012 年秋季已结束生命周期。
当您为 JVM 镜像选择 jdk
值时,$JAVA_HOME
将被正确设置。
Maven 版本 #
使用标准的 Apache Maven 3.2.x,配置为使用 中央仓库 和 Sonatype 镜像。
Leiningen 版本 #
Travis CI 同时拥有独立的(“uberjar”)Leiningen 1.7.x 版本,位于 /usr/local/bin/lein1
,以及 Leiningen 2.4.x 版本,位于 /usr/local/bin/lein2
。默认版本为 2.4.x;/usr/local/bin/lein
是指向 /usr/local/bin/lein2
的符号链接。
SBT 版本 #
由于强大的 sbt-extras 替代方案,Travis CI 理论上可以提供任何版本的 Simple Build Tool(sbt 或 SBT)。为了减少构建时间,一些常用的 sbt 版本已经预先安装(例如 0.13.5 或 0.12.4),但 sbt
命令能够动态检测并安装 Scala 项目所需的 sbt 版本。
有关使用 sbt 构建项目的具体细节,请参阅 默认 sbt 选项。
Gradle 版本 #
Gradle 2.0。
Erlang VM 镜像 #
Erlang/OTP 版本 #
Erlang/OTP 版本使用 kerl 构建。
Rebar #
Travis CI 提供了最新版本的 Rebar。如果某个仓库在根目录下包含名为 ./rebar
的 Rebar 二进制文件,则会使用该文件,而不是预先提供的版本。
JavaScript 和 Node.js 镜像 #
Node.js 版本 #
Node.js 运行时环境使用 nvm 构建和安装。
SCons #
SCons
Haskell VM 镜像 #
Haskell 平台版本 #
Haskell 平台 2012.02 和 GHC 7.0、7.4、7.6 和 7.8。
Perl VM 镜像 #
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 VM 镜像 #
PHP 版本 #
PHP 运行时环境使用 php-build 构建。
XDebug #
已支持。
核心扩展 #
请参阅 默认配置选项 以了解已启用的核心扩展的概述。
扩展 #
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Xdebug
PHP 的 Chef Cookbook #
如果您想了解我们如何构建和配置多个 PHP 安装的全部细节,请参阅我们的 php、phpenv 和 php-build Chef Cookbook。
Python VM 镜像 #
Python 版本 #
每个 Python 版本都有一个单独的 virtualenv,其中包含 pip
和 distribute
,并在运行构建之前激活。
Python 2.4 和 Jython 不受支持,并且将来也没有计划支持它们。
默认 Python 版本 #
如果您在 .travis.yml
中省略了 python
键,Travis CI 将使用 Python 2.7。
预安装的 pip 包 #
- nose
- py.test
- mock
- wheel
在所有版本(除了 pypy 和 pypy3)上,还包含 numpy
。
Ruby 镜像 #
Ruby 镜像包含以下最新版本:
- Ruby:2.2.0、2.1.x、2.0.0、1.9.3、1.9.2 和 1.8.7
- JRuby:1.7.x(1.8 和 1.9 模式)
- Ruby Enterprise Edition:1.8.7 2012.02
Ruby 1.8.6 和 1.9.1 已不再受 Travis CI 支持。
预编译版本按需从以下地址下载:
Rubinius Ruby 已不再受 Precise 支持。
Bundler 版本 #
最新的 1.7.x 版本(通常是最新的版本)
全局 gem 集中的 gem #
- bundler
- rake
其他 Ubuntu Linux 构建环境 #
您可以查看 Ubuntu Linux 概述页面 以了解您可以使用的不同 Ubuntu Linux 构建环境。