将代码库迁移到 travis-ci.com
2018 年 5 月 2 日,Travis CI 宣布开源项目将加入 travis-ci.com 上的私有项目!
本文档解释了如何迁移代码库,并回答了有关迁移的一些常见问题。
您好!如果您想成为测试版用户,请登录 travis-ci.org,并在 您的帐户页面 中,报名迁移您的开源代码库。
从 2021 年 6 月开始,travis-ci.org 已被禁用,因此不再受支持。请使用 travis-ci.com。
哪些信息将被传输到 travis-ci.com? #
迁移代码库时,以下信息将被传输到 travis-ci.com
- 环境变量(公共和加密)
- 代码库 SSH 密钥(默认或自定义)
- 代码库设置
- 为代码库配置的计划任务
- 最后构建状态 - travis-ci.com 中的构建徽章将反映此状态,直到触发新的构建
- 下一个构建编号
- 以前的构建历史
哪些信息不会被传输到 travis-ci.com? #
迁移代码库时,以下信息不会被传输到 travis-ci.com
- 缓存 - 它们将在 travis-ci.com 上的第一次构建中自动重新创建
我需要进行其他更改吗? #
如果您使用以下任何功能,则只需要自己进行更改
-
GitHub 中的“受保护分支”功能,要求在合并拉取请求之前通过 Travis CI 构建:确保编辑您的必需状态检查,现在使用
Travis CI - Pull Request
和/或Travis CI - Branch
。参见:GitHub 上的必需状态检查。 -
Travis CLI:迁移后,请确保添加
--com
标志或将其设为您的默认端点,方法是运行:travis endpoint --com --set-default
。 -
Travis CI API:编辑您的请求以使用新端点:
api.travis-ci.com
而不是api.travis-ci.org
。
我的 travis-ci.org 代码库将会发生什么? #
您在 travis-ci.org 上的代码库将自动停用(也就是说,它将不再接收 GitHub 事件),并将以只读模式保留。
使用此只读模式
- “触发构建”功能在 travis-ci.org 中将不可用
- 无法重新启动在 travis-ci.org 中运行的先前作业
- 您的代码库的设置页面将变为非活动状态 - 传输的代码库设置现在将在 travis-ci.com 中可用。
将来,我们将提供从所有 API/Web 请求从 travis-ci.org 到 travis-ci.com 的重定向。
迁移过程需要多长时间? #
每个代码库的迁移过程不应超过几秒钟。
我可以一次迁移多个代码库吗? #
是的,您可以在迁移选项卡中选择尽可能多的代码库,并将它们排队以进行迁移。
如果在迁移过程中有人向我的代码库推送提交,会发生什么? #
我们将排队这些构建请求,并且构建将在迁移完成后立即在 travis-ci.com 中创建。
迁移是否需要对我们的 .travis.yml
进行任何更改? #
不。除非您的 .travis.yml
中存在一些非常自定义的内容,否则无需进行任何更改。
请注意:实验性的 IBM Power CPU 队列在 .com 上不可用,您可以在 travis-ci.com 上使用
arch: ppc64le
标签,这将在 LXD 容器中运行您的 IBM 构建。
迁移代码库 #
GitHub 应用初始设置 #
如果您已经在 travis-ci.com 中的帐户中使用 GitHub 应用,则需要访问您的安装设置并授予对您要迁移的代码库的访问权限。否则
-
登录到 travis-ci.com 并访问您的个人资料(或您的组织)https://travis-ci.cn/profile。对于 Travis CI GitHub 授权 OAuth 应用访问权限消息的任何疑问,请阅读更多详细信息下方。
-
如果您尚未使用新的 GitHub 应用集成,请为您的帐户激活它
-
激活 Travis CI GitHub 应用时,授予对您要在 travis-ci.com 中构建的代码库(公共和私有)的访问权限。保存更改。
-
回到 Travis CI 个人资料后,您将看到所选代码库列在那里。那些已经在 travis-ci.org 中构建的项目将出现在您帐户的迁移选项卡中。
Travis CI GitHub OAuth 应用访问权限 #
第一次使用 GitHub 登录到 travis-ci.com 时,您将收到来自 GitHub 的一条消息,提示
travis-pro 的 Travis CI 想要访问您的 [帐户名称] 帐户。
在代码库部分中,将显示
此应用将能够读取和写入所有公共和私有代码库数据。
这不是 Travis CI 访问您数据的机制,但我们稍后会解释。
该警告是由于 Travis CI 使用的 GitHub OAuth 应用权限以及可用权限范围的粒度(请参阅 GitHub OAuth 应用范围文档)而触发的。
默认情况下,Travis CI 不会访问您的所有代码库.
确认访问权限后,您将在 GitHub 授权 OAuth 应用列表 中看到 Travis CI OAuth 应用,但您需要在 travis-ci.com 帐户中明确配置 Travis CI 有权访问的代码库。配置是在激活您代码库的 Travis CI 期间完成的。您可以在激活过程中使用“所有代码库”选项或“仅选择代码库”选项。
Travis CI 激活完成后,您将在 已安装的 GitHub 应用 部分中看到实际安装的 Travis CI GitHub 应用。
Travis CI 以以下方式使用 OAuth 权限
1) Travis CI 系统会与 GitHub 同步某些元数据。这些元数据对于服务的正常运行是必需的。特别是,我们同步用户、组织、成员资格、仓库、权限以及(可选)分支。这种同步每天按计划进行一次,或者根据用户的请求进行。您可以在 此仓库 中找到更多信息和源代码。
2) 为了运行构建,Travis CI 系统会将触发构建的仓库克隆到构建环境中。构建环境是一个隔离的虚拟机或 LXD 容器,在构建完成后会被终止。克隆仅在构建请求后进行,因此只针对在 GitHub 设置中明确启用的仓库。
3) 为了设置构建环境并准备构建,Travis CI 系统会从仓库中获取并处理 .travis.yml
配置文件,以及 GitHub 触发的构建请求中明确指定的相应分支。
4) Travis CI 系统通过其 Checks API 向 GitHub 报告构建结果。
迁移步骤 #
-
在您通过 GitHub Apps 向您想要构建和迁移的仓库授予访问权限后,在 “迁移”选项卡 上,将列出可供迁移的仓库:
-
选择您要迁移的仓库,然后点击“迁移所选仓库”。系统将要求您进行最终确认 - 请记住,您需要更新受保护的分支(请参阅:我需要做其他更改吗?)。
-
确认迁移。仓库名称旁边的图标将显示迁移状态(“处理中”或“已迁移”):
-
就是这样!您的开源仓库现在可以在 travis-ci.com 上构建了!
通过 API 迁移仓库 #
如果您想自动化迁移过程,也可以通过直接向 Travis CI API 的 /repo/:id/migrate
或 /repo/:slug/migrate
端点发送请求来迁移仓库。
- 使用仓库标识符
- 使用仓库 ID
与迁移后的仓库交互 #
Travis CI 现在将开始接收 travis-ci.com 中迁移的开源仓库的 GitHub 事件。任何新的构建和请求都将开始出现在 travis-ci.com 网站上。
travis-ci.org 中迁移的仓库的项目页面将开始显示它已迁移,然后迁移后的仓库仍将出现在您的仓库列表中,并带有指向 travis-ci.com 上项目的直接链接。
由于 travis-ci.org 中的仓库现在处于只读模式,因此设置页面也将链接到 travis-ci.com 中的相应设置页面。
在“分组帐户”中迁移 #
请注意:分组帐户非常少见,仅由 Travis CI 工作人员手动设置,每次设置都需要评估。本部分仅涉及 Travis CI 中少数几个帐户,因为过去只有几十个帐户是这样设置的。
如果您的帐户碰巧与其他帐户分组在一个所谓的“分组帐户”设置中,那么将您的仓库从 travis-ci.org 迁移到 travis-ci.com 并保留此独特配置需要 Travis CI 工作人员的支持。
如何识别我是分组帐户的一部分? #
如果您是分组帐户的一部分,则:
- 至少 2 个版本控制系统 (VCS) 帐户使用一个公共并发池,例如,两个并发 GitHub 帐户使用一个公共并发池。
- 您可用的总并发量超过了单个帐户可用于免费构建的并发作业数限制。
- 可选:如果您的团队成员确认您是 Travis CI 中特定自定义分组帐户配置的一部分。
以上所有条件必须同时满足。如果您只注意到并发限制增加,这可能与单独的配置有关,您可以联系 我们的支持团队 以在您迁移仓库之前澄清详细信息。
如何进行迁移? #
如果您的帐户是分组帐户的一部分,并且您只迁移单个帐户上的仓库,那么您将失去对组合并发池的访问权限。因此,所有帐户都必须将其仓库迁移到 travis-ci.com,完成后,Travis CI 工作人员可以在 travis-ci.com 上为您重新创建配置。
整个迁移可以在几秒钟内完成。在 travis-ci.com 上重新创建分组帐户配置需要几个小时才能完成,具体取决于 Travis CI 工作人员的工作量。
以下步骤旨在说明该过程。
准备 #
整理并提前告知我们!
- 联系您的协作小组,确定何时将仓库迁移到 travis-ci.com;确保所有参与的帐户所有者都表示同意迁移,并能够告知贡献者迁移到 travis-ci.com 的计划。
- 向 Travis CI 支持团队报告,确认您是 travis-ci.org 上
分组帐户
的一部分,最好提供其他参与者的列表,包括最新的决策者联系方式(如果您为该操作打开了帐户的 GitHub 票证,则还需提供该票证) - 通过我们的 Slack #embassy 频道或 电子邮件地址 联系我们,我们将内部创建一张票证来处理该请求。 - Travis CI 支持将验证配置(哪些帐户属于该组),并联系参与的帐户所有者,以确认是否已执行或计划执行每个参与帐户的仓库迁移。
迁移和重新创建配置 #
- 每个参与
分组帐户
配置的帐户都必须按照此 迁移步骤 将其仓库迁移到 travis-ci.com。- 至少需要迁移一个仓库到 travis-ci.com,但鉴于您需要使用 travis-ci.com 应用,我们建议一次性迁移所有仓库。
- 所有参与帐户将其仓库迁移到 travis-ci.com 后,请**联系 Travis CI 工作人员**,确认已准备好重新创建 travis-ci.com 上的配置(所有参与帐户都迁移了其仓库)。
- Travis CI 工作人员将重新创建您的
分组帐户
配置并回复您的请求。
整个过程需要几个小时。
支持和反馈 #
如果您对我们的 Beta 迁移过程有任何疑问、意见或需要帮助,请发送邮件到 support@travis-ci.com 联系我们。我们有一个专门的团队负责该项目,他们将很乐意为您提供帮助。
常见问题解答 #
问:从 travis-ci.org 迁移到 travis-ci.com 何时完成? #
答:为了确保所有用户(无论您构建的是开源、公共还是私有仓库)都能获得定期功能更新、安全补丁以及 UX/UI 增强,我们宣布 travis-ci.org 将在 2020 年 12 月 31 日之前正式关闭,这将使我们能够集中精力将新功能和修复程序引入 travis-ci.com,以及像您这样的所有优秀用户,并将他们迁移到 travis-ci.com 域名。
问:2020 年 12 月 31 日之后,travis-ci.org 会怎样? #
答:travis-ci.org 将被切换为只读平台,您可以查看以前连接到 travis-ci.org 的所有仓库的作业构建历史记录。
问:为什么我的某些排队作业构建时间比平时更长? #
答:在使用高峰时段,您可能会发现构建时间比以前更长 - 我们需要确保所有用户都能平等访问 .org 平台,直到年底我们将其基础设施迁移到 .com。您可能需要考虑尽早迁移到 .com,或者考虑在一天中较安静的时候安排构建,如果您要继续使用 .org 一段时间。
问:为什么我的某些排队作业被取消了? #
答:当我们将基础设施从 .org 迁移到 .com 时,可能会发生这种情况 - 如果我们发现一个作业在队列中停留超过 16 个小时,我们将逐案审查并可能取消该作业,以确保资源不会在整个平台上减少。您可能需要考虑尽早迁移到 .com,或者考虑在一天中较安静的时候构建,如果您要继续使用 .org 一段时间。
问:travis-ci.org 上的免费帐户的并发量会降低吗? #
答:作为将基础设施从 .org 迁移到 .com 的一部分,我们需要确保所有用户都能平等访问资源,因此 .org 上的免费和开源帐户的并发量将从 5 个并发作业减少到 4 个并发作业。.com 上的并发作业没有变化,因此如果您遇到此问题,请尽快考虑迁移您的仓库。
问:travis-ci.org 会变得不可靠吗? #
答:作为将基础设施从 .org 迁移到 .com 的一部分,我们对 travis-ci.org 基础设施进行了一些更改,以确保该服务在迁移完成之前,将像往常一样可靠且可供您使用。
问:Travis CI 会摆脱免费用户吗? #
答:Travis CI 将继续在 travis-ci.com 上为公共或开源仓库提供免费层级,并且不会受到迁移的影响。
问:为什么 travis-ci.com 要求访问我的仓库的写入权限? #
答:我们知道,当您将 GitHub 仓库迁移到 travis-ci.com 时,系统会提示您授予 Travis CI 对您仓库的写入权限 - 这是因为我们目前使用 GitHub OAuth 进行用户身份验证,并且此消息是由于 OAuth 范围的定义方式造成的。Travis CI 平台实际上使用 GitHub App 进行实际的仓库级访问 - 它不需要对所有仓库的写入权限,您可以对其进行配置。
我们正在努力解决这个问题,并使用 GitHub App 进行用户身份验证和仓库级访问,但在那之前,我们将在我们的文档和用户界面中澄清这种情况。