【问题标题】:circleci v2 config - how do we filter by owner in a workflow?circleci v2 配置 - 我们如何在工作流程中按所有者过滤?
【发布时间】:2018-09-14 12:56:36
【问题描述】:

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

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

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

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

我意识到我们可以转移到仅基于存在的标签运行构建,但没有什么能阻止有人用叉子也在他们的叉子中创建一个标签,这让我们回到了原点。

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

版本 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.*/

【问题讨论】:

    标签: continuous-integration continuous-deployment circleci circleci-2.0 circleci-workflows


    【解决方案1】:

    免责声明:CircleCI 的开发者宣传员

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

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

    【讨论】:

    • 谢谢 - 我会提出请求。使用 if 语句不是一个好方法,因为有很多步骤可以确保我们的部署正常工作,否则只会减慢构建速度,而且在我们等待 v1 功能获得时,这将是一个丑陋的黑客攻击我猜也要加入 v2。
    • 这对于确保某些步骤不会在分叉上运行至关重要...看起来功能请求已在此处打开:circleci.ideas.aha.io/ideas/CCI-I-356
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多