问题描述
在 CircleCI 的配置中,我们经常看到很多人在定义工作流程时使用 version: 2
。虽然这是一种常见的模式,但我一直没有搞清楚为什么这样做。可能是因为有些古老的文档解释了原因,或者可能是因为我今天的搜索能力有问题。请问有人可以告诉我为什么很多人的工作流程版本都是 2 吗?
举个例子,下面是一个示例,链接在这里,摘录如下:
version: 2.1
executors:
my-executor:
docker:
- image: buildpack-deps:jessie
working_directory: /tmp
jobs:
flow:
executor: my-executor
steps:
- ...
downstream:
executor: my-executor
steps:
- ...
workflows:
version: 2
btd:
jobs:
- flow
- downstream:
requires:
- flow
我认为在我了解为什么这样做之前,可能应该继续使用这种配置方式,但我不喜欢在没有理解的情况下机械地照搬。谢谢!
解决方案
请注意以下操作可能存在版本差异,建议在使用前查阅最新文档。
CircleCI的工作流程(workflows)在配置文件中使用version
字段来指定版本号。很多人在工作流程中使用version: 2
的原因是与版本号相关的一些历史因素。
为什么使用 version: 2
?
在 CircleCI v2 Beta 时期,version
字段被用来发出有关弃用或破坏性更改的警告。version: 2
是除了 version: 1
以外唯一有效的版本号,这使得很多用户使用这个版本来定义工作流程。然而,需要注意的是,version: 2
已经在 CircleCI v2.1 版本中被弃用。
迁移到更高版本
虽然很多人在过去使用了 version: 2
,但如果你希望始终使用最新版本的 CircleCI,并且享受到新功能和改进,建议将你的配置升级到支持的最新版本。你可以查阅 CircleCI 的官方文档,了解最新版本的配置语法和功能更新,以便更好地利用 CircleCI 提供的功能。
示例配置迁移
以下是一个示例配置文件,演示如何迁移到支持的最新版本(假设最新版本为 v3):
version: 3
executors:
my-executor:
docker:
- image: buildpack-deps:jessie
working_directory: /tmp
jobs:
flow:
executor: my-executor
steps:
- ...
downstream:
executor: my-executor
steps:
- ...
workflows:
version: 3
btd:
jobs:
- flow
- downstream:
requires:
- flow
在上面的示例中,我们将配置文件的 version
字段升级到了 version: 3
,同时也将工作流程的版本升级到了支持的最新版本。这样,你就可以使用最新的功能和改进,确保你的 CircleCI 配置始终保持在良好的状态。
总结
虽然在过去 version: 2
是一个常见的选择,但根据版本的变化和演进,我们建议迁移到支持的最新版本,以便充分利用 CircleCI 提供的优秀功能和性能。在升级配置文件时,请确保查阅官方文档,以便了解最新版本的语法和特性。