为什么很多 CircleCI 配置中使用 `version: 2` 来定义工作流程?

81次阅读
没有评论

问题描述

在 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 提供的优秀功能和性能。在升级配置文件时,请确保查阅官方文档,以便了解最新版本的语法和特性。

正文完