自定义 Travis CI Enterprise 构建镜像

使用 Travis CI Enterprise,您可以配置构建镜像以满足您的开发流程,并改进构建环境和性能。

自定义构建镜像 #

quay.io 通过 安装 或手动拉取构建镜像后,请确保它们已重新标记为 travis:[language]。一旦此配置到位,您就可以根据需要完全自定义这些镜像。

请注意,您需要在从 quay.io 升级构建镜像后重新应用您的自定义配置。

Ubuntu Trusty 构建环境 #

对于 Ubuntu Trusty 构建环境,我们总共提供了三个 Docker 镜像。根据用户的 .travis.yml 配置,我们将选择相应的镜像来运行构建。

我们提供与我们在 travis-ci.com 上使用的相同的 Docker 构建镜像。基本镜像,connie 包含所有预安装的数据库和框架,例如 postgresql、mysql、memcached、pyenv、rvm、gimme。虽然没有解释器可用。基于 connie,有 garnet,它添加了以下编程语言

  • Ruby
  • Node.js
  • Go
  • PHP
  • Python
  • Java / JVM

第三个镜像,amethyst,还预安装了 Android、Erlang、Haskell 和 Perl。

对这些镜像之一的任何修改都将对其他语言也可用。

Ubuntu Precise 构建环境(已弃用) #

在 Ubuntu Precise 环境中,我们为支持的每种语言提供一个单独的 Docker 镜像。我们支持与我们当前的 Trusty 环境中相同的语言。

如何自定义 #

流程是

  • 基于默认构建镜像 travis:[language] 之一启动 Docker 容器,
  • 在该容器内运行您的自定义配置,然后
  • 将容器提交到具有原始 travis:language 名称(标签)的 Docker 镜像。

例如,为了安装默认 travis:ruby 镜像上不可用的特定 Ruby 版本,并使其持久化,您可以运行

      docker -H tcp://0.0.0.0:4243 run -it --name travis_ruby travis:ruby su travis -l -c 'rvm install [version]'
      docker -H tcp://0.0.0.0:4243 commit travis_ruby travis:ruby
      docker -H tcp://0.0.0.0:4243 rm travis_ruby

启用 Docker 构建 #

工作节点机器配置 #

要在 Travis CI Enterprise 上构建 Docker 镜像,请在所有工作节点上将以下内容添加到 /etc/default/travis-worker

    export TRAVIS_WORKER_DOCKER_PRIVILEGED="true"

Trusty 构建环境中的 Docker 构建配置 #

使用 Trusty 构建镜像,需要一些额外的步骤。由于 docker-ce 无法在另一个 Docker 容器内独立运行,它将连接到主机的 Docker 守护进程以执行相应的命令。

我们通过在 /etc/default/travis-worker 中添加另一个配置选项来实现这一点

export TRAVIS_WORKER_DOCKER_BINDS='/var/run/docker.sock:/var/run/docker.sock'

使用此选项,我们告诉 travis-worker 在构建容器内使主机上的 Docker 套接字可用。

保存配置文件后,请重新启动 travis-worker。

重新启动 travis-worker #

要重新启动 travis-worker,您可以找到 此处 的说明。

更新您的 .travis.yml 文件 #

Trusty 构建容器 #

一旦工作节点机器 配置正确,您就可以在构建中像往常一样使用 Docker。

请注意,在 Enterprise 安装中,您不需要在 .travis.yml 中添加 services: docker

由于您使用的是主机的 Docker 守护进程,因此构建中使用的所有镜像和容器都存储在主机上。为了释放磁盘空间,我们建议在构建中使用 Docker run 时使用 --rm 标志。此外,客户将需要定期清除构建生成的未使用的镜像,即执行 docker rmi ... 命令或类似操作。为了避免多个构建同时开始删除容器和镜像时出现竞争条件,我们建议在没有构建运行时直接在机器上手动清理它们。

Precise 构建容器(传统) #

将以下内容添加到希望使用 Docker 的存储库的任何 .travis.yml 文件中

    install:
          - sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
          - echo "deb https://apt.dockerproject.org/repo ubuntu-precise main" | sudo tee /etc/apt/sources.list.d/docker.list
          - sudo apt-get update
          - sudo apt-get install docker-engine

例如,如果您想创建一个新存储库并测试 Docker 支持,您可以创建一个 .travis.yml 文件,其内容如下

    install:
          - sudo apt-get update
          - sudo apt-get install apt-transport-https ca-certificates
          - sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
          - echo "deb https://apt.dockerproject.org/repo ubuntu-precise main" | sudo tee /etc/apt/sources.list.d/docker.list
          - sudo apt-get update
          - sudo apt-get install docker-engine
          - sudo docker pull ubuntu

    script:
          - sudo docker run ubuntu date

联系企业支持 #

要与我们取得联系,请向 enterprise@travis-ci.com 发送邮件。如果可能,请尽可能多地包含以下内容

  • 问题的描述 - 您观察到什么?
  • 您已经尝试了哪些步骤?
  • 支持包(有关如何获取支持包,请参见下表)
  • 所有工作节点的日志文件(它们可以在 /var/log/upstart/travis-worker.log 中找到 - 请尽可能多地包含您能检索到的日志文件)。
  • 如果构建失败或出错,则构建日志的文本文件
TCI 企业版 支持包
3.x 运行 kubectl kots admin-console -n [namespace] 以访问 https://#:8800 上的管理控制台
支持包生成说明在“故障排除”菜单中提供,也可以直接在以下位置访问:https://#:8800/app/tci-enterprise-kots/troubleshoot

在选择后,将出现用于生成支持包的命令
如果您愿意,[单击此处]() 以获取手动生成支持包的命令。
2.x+ 您可以从 https://<your-travis-ci-enterprise-domain>:8800/support 获取支持包

自 2020 年第三季度发布公告以来,Travis CI Enterprise 的最新版本是 3.x 版本。版本 2.2 没有新版本发布,自 2021 年 3 月以来,支持补丁也已受到限制。对于 Travis CI 2.x 的现有用户,我们强烈建议升级到最新的 Travis CI Enterprise 3.x。

您是否对设置进行了任何自定义?虽然我们可能可以看到一些信息(例如主机名、IaaS 提供商和许可证到期时间),但还有很多我们无法看到的信息,这些信息会导致某些功能无法正常工作。因此,我们想请您在支持请求中回答以下问题(如果适用)

  • 您正在使用多少台机器/您的 Kubernetes 集群设置是什么?
  • 您是否使用配置管理工具(Chef、Puppet)?
  • 还有哪些服务与 Travis CI Enterprise 交互?
  • 您与 Travis CI Enterprise 一起使用哪个版本控制系统 (VCS)(例如 github.com、GitHub Enterprise 或 BitBucket Cloud)?
  • 如果您使用的是 GitHub Enterprise,它的哪个版本?

我们期待着为您提供帮助!