circleci v2 配置 - 我们如何在工作流程中按所有者过滤?

circleci v2 config - how do we filter by owner in a workflow?

在 circleci 版本 1 配置中,有一个选项可以将 owner 指定为部署中的一个选项。来自 circleci 文档 ( https://circleci.com/docs/1.0/configuration/ ) 的示例,其中 owner: circleci 是关键行:

deployment:
  master:
    branch: master
    owner: circleci
    commands:
      - ./deploy_master.sh

在配置的版本 2 中,可以使用过滤器和标签来指定构建哪些分支,但我还没有找到(在文档中或在互联网上)任何能给我相同功能的东西能力。

我想要实现的是 运行 在分叉上构建和测试步骤,但如果存储库所有者是主要存储库,则只有 运行 部署步骤。人们经常使用相同的分支名称进行分叉 - 在本例中为 master - 因此由于无法部署而导致构建失败是违反直觉的,尤其是当我想在 [=31= 中使用受保护的分支时] 并且仅合并基于拉取请求中成功构建的提交。

我意识到我们只能 运行ning 基于标签存在的构建,但是没有什么能阻止有人用叉子也在他们的叉子中创建一个标签,这让我们回到了第一步。

有人知道如何在版本 2 配置中指定 repo 的所有者吗?

来自版本 2 配置文档 (https://circleci.com/docs/2.0/workflows/) 的示例,以防它有助于唤醒某些人的记忆:

workflows:
  version: 2
  un-tagged-build:
    jobs:
      - build:
          filters:
            tags:
              ignore: /^v.*/
  tagged-build:
    jobs:
      - build:
          filters:
            branches:
              ignore: /.*/
        tags:
          only: /^v.*/

免责声明:CircleCI 的开发人员布道师

该功能在 CircleCI 2.0 上不可用。您可以申请 here.

作为替代方案,您可以查找分支名称,比如 master,以及 CIRCLE_PR_NUMBER 环境变量。如果该变量有任何值,那么它是 master 的一个分支,您不应该部署。