Xenial 构建环境
Xenial LTS 标准已由 Canonical 停止支持,请尝试更新到较新的镜像。Travis CI 对 Xenial 镜像更新的所有工作将在 2024 年年底结束,我们认为它已过时。
本指南涵盖的内容 #
本指南概述了 Xenial 环境中可用的软件包、工具和设置。
使用 Xenial #
要将您的构建路由到 Ubuntu Xenial 16.04,请将以下内容添加到您的 .travis.yml
中
dist: xenial
请注意,Xenial 可在我们的托管完全虚拟化基础设施上使用。如果您正在运行企业版安装,请联系 enterprise@travis-ci.com 以了解如何使用 Xenial Docker 镜像。
与 Trusty 镜像的差异 #
Xenial 包含以下更改和改进
已删除第三方 apt 存储库 #
虽然在 Xenial 镜像预配期间使用第三方 apt 存储库,但它们都已从 Xenial 构建镜像中删除。这有两个好处:a)降低了无关干扰的风险,以及 b)更快的 apt-get 更新。
要指定第三方 apt 存储库,您可以 使用 apt 插件添加源 并指定软件包。例如
dist: xenial
addons:
apt:
sources:
- ppa:chris-lea/redis-server
packages:
- redis-tools
- redis-server
如果您在构建中依赖这些存储库,您可以使用以下 source
行将其恢复
软件包 | 源 |
---|---|
couchdb | ppa:couchdb/stable |
docker | docker-xenial |
google-chrome-stable | google-chrome |
git-lfs | github-git-lfs-xenial |
git-ppa | ppa:git-core/ppa |
haskell | ppa:hvr/ghc |
mongodb | mongodb-4.0-xenial |
pollinate | ppa:pollinate/ppa |
redis | ppa:chris-lea/redis-server |
默认情况下禁用的服务 #
在我们的 Xenial 基础设施上,为了加快启动时间并提高性能,我们禁用了所有服务,包括在 Trusty 上默认启动的服务。将您希望默认启动的任何服务添加到您的 .travis.yml
中
services:
- mysql
- redis
所有 Xenial 镜像共有的环境 #
以下版本的 Docker、版本控制软件和编译器存在于所有构建中,以及每个语言部分中更详细描述的更多特定于语言的软件。
所有非发行版预安装软件均来自官方版本——如果可用则为预构建二进制文件,或者使用默认选项构建的源版本。对于预安装的语言解释器,如果语言可用,则使用标准版本管理器(如 rvm
)。
版本控制 #
软件包 | 版本 |
---|---|
git | 2.37.3 |
git-lfs | 3.2.0 |
hg | 5.9.3 |
svn | 1.9.3 |
编译器和构建工具链 #
- clang 和 llvm 7
- cmake 3.12.4
- gcc 5.4.0
- ccache 3.2.4-1
- shellcheck 0.7.2
- shfmt 3.2.1
要在 Xenial LXD 镜像的 ppc64le
架构下使用 IBM Advance Toolchain v12 编译器,请在您的 .travis.yml
中使用以下路径
- GCC 编译器
- 路径:
/opt/at12.0/bin/gcc
- 命令:
/opt/at12.0/bin/gcc hello_world.c -o hello_world
- 路径:
- g++ 编译器
- 路径:
/opt/at12.0/bin/g++
- 命令:
/opt/at12.0/bin/g++ hello_world.cpp -o hello_world
- 路径:
- Go 编译器
- 路径:
/opt/at12.0/bin/gccgo
- 命令:
/opt/at12.0/bin/gccgo hello_world.go -o hello_world
- 路径:
- Python
- 首先,使用
python_interpreter.sh 脚本
编译 Python 3.8.0。 - Python 解释器路径:
/opt/python380-at12/python3.8
- 构建 Python 命令:
sudo sh python_interpreter.sh
- 首先,使用
要在 Xenial LXD 镜像的 amd64
架构下使用 IBM Advance Toolchain v12 编译器,请在您的 .travis.yml
中使用以下路径
- GCC 编译器
- 路径:
/opt/at12.0/bin/powerpc64le-linux-gnu-gcc
- 命令:
/opt/at12.0/bin/powerpc64le-linux-gnu-gcc hello_world.c -o hello_world
- 路径:
- g++ 编译器
- 路径:
/opt/at12.0/bin/powerpc64le-linux-gnu-g++
- 命令:
/opt/at12.0/bin/powerpc64le-linux-gnu-g++ hello_world.cpp -o hello_world
- 路径:
- Go 编译器
- 路径:
/opt/at12.0/bin/powerpc64le-linux-gnu-gccgo
- 命令:
/opt/at12.0/bin/powerpc64le-linux-gnu-gccgo hello_world.go -o hello_world
- 路径:
- Python
- 首先,使用
python_interpreter.sh 脚本
编译 Python 3.8.0 - Python 解释器路径:
/opt/python380-amd64/python3.8
- 构建 Python 命令:
sudo sh python_interpreter.sh
- 首先,使用
Docker #
- 已安装 Docker 20.10.7
- docker-compose 1.29.2。
Ruby 支持 #
- 预安装的 Ruby:
2.7.6
、3.0.4
和3.1.2
。 - 默认 Ruby 为
2.7.6p219
。 - 其他 Ruby 版本可以在构建时安装。
Python 支持 #
- 支持的 Python 版本:
3.5
或更高版本。 - 预安装的 Python 版本:
3.7.13
和3.8.13
。 - 如果未显式设置语言版本,将使用 Python
3.7.13
。
如果您收到有关 PyPy 的错误 pypy is not installed; attempting download
,请使用较新的 Python 版本之一。
JavaScript 和 Node.js 支持 #
- 对于指定
language: node_js
的构建,nvm
会在构建时自动更新到最新版本。对于其他构建,已选择镜像构建时的稳定版本,即 0.39.1。 - 已预安装 NodeJS 版本
16.16.0
。
Go 支持 #
-
预安装的 Go:
1.18.4
-
其他 Go 版本可以通过使用
go:
键指定语言版本在构建时安装。
JVM(Clojure、Groovy、Java、Scala)支持 #
-
预安装的 JVM:x86 上的
openjdk8
和openjdk11
,默认值为openjdk11
;ppc64le 上的openjdk7
和openjdk8
。 -
如果可用,可以通过指定
jdk
获取其他 JDK,包括 Oracle 的 JDK。 -
下表总结了预安装的 JVM 工具版本
软件包 | 版本 |
---|---|
gradle | 7.4.2 |
maven | 3.8.6 |
groovy | 4.0.3 |
Perl 支持 #
- Xenial 上的默认版本为
5.34.1
- 支持的版本
5.22
、5.24
、5.26
、5.28
、5.29
、5.30
、5.31
、5.32
、5.33
和5.34
可以通过使用perl:
键安装。 TAP::Harness
v3.35 和cpanm
(App::cpanminus) 版本 1.7044 也已预安装。
PHP 支持 #
- 对于动态运行时选择,
phpenv
可用。 - 已预安装 PHP 版本
7.4.30
。
数据库和服务 #
以下服务和数据库已预安装,但默认情况下不运行。要在您的构建中使用其中一个,请将其添加到 .travis.yml
文件中的 services 密钥中。
服务 | 版本 |
---|---|
mongodb | 4.0.28 |
mysql | 5.7.33 |
redis | 6.0.6 |
postgresql | 9.4 9.5 9.6 10 |
- 重要提示:由于 Xenial LTS 已正式结束生命周期,因此无法再从 apt.postgresql.org 存储库获取 postgresql apt 软件包:https://wiki.postgresql.ac.cn/wiki/Apt
- 目前 Xenial 使用 apt-archive.postgresql.org,不幸的是它缺少 ARM 和 S390x 架构的软件包。
其他 Ubuntu Linux 构建环境 #
您可以查看 Ubuntu Linux 概述页面,了解您可以使用的不同 Ubuntu Linux 构建环境。