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.63.0.43.1.2
  • 默认 Ruby 为 2.7.6p219
  • 其他 Ruby 版本可以在构建时安装。

Python 支持 #

  • 支持的 Python 版本:3.5 或更高版本。
  • 预安装的 Python 版本:3.7.133.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 上的 openjdk8openjdk11,默认值为 openjdk11;ppc64le 上的 openjdk7openjdk8

  • 如果可用,可以通过指定 jdk 获取其他 JDK,包括 Oracle 的 JDK。

  • 下表总结了预安装的 JVM 工具版本

软件包 版本
gradle 7.4.2
maven 3.8.6
groovy 4.0.3

Perl 支持 #

  • Xenial 上的默认版本为 5.34.1
  • 支持的版本 5.225.245.265.285.295.305.315.325.335.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 构建环境。