自定义 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,它的哪个版本?
我们期待着为您提供帮助!