【问题标题】:CircleCI: how to share variables between parallel jobs?CircleCI:如何在并行作业之间共享变量?
【发布时间】:2021-03-27 19:48:04
【问题描述】:

上下文

我正在并行运行 3 个 E2E 测试,我的目标是在其中一个测试失败时向 Slack 发送通知。我尝试了两种方法。

  1. e2e完成后,发送通知→但是,这是不可能的,因为当需要的作业(e2e测试作业)失败时作业无法执行。

  2. 当并行测试之一失败时,发送通知→发送重复通知,

所以每个测试都应该知道其中一个测试是否已经通过环境变量发送了通知。 要实现第二种方法,我应该能够在并行测试(作业)之间共享环境变量。但是,我在 CircleCI 的文档/讨论/支持中找不到任何线索。我能怎么做?而且,如果这是不可能的,我怎么能以骇人听闻的方式做到这一点?

示例

并行测试:A、B、C。

当 A 比 B 和 C 更早完成时,A 将环境变量 isTestFailed 动态设置为 true 并发送 Slack 通知消息。发送后,B和C都完成了,检查isTestFailed 是真的。他们没有发送通知,因为isTestFailed 为真并完成了测试。因此,slack 中只存在一条通知消息。

图表

build ------> e2e test A ------> Send notification to Slack and set boolean flag
      ------> e2e test B ------> Check boolean flag is true, don't send
      ------> e2e test C ------> Check boolean flag is true, don't send

谢谢。

【问题讨论】:

    标签: circleci


    【解决方案1】:

    您可能不需要共享变量。

    您不能将通知推迟到仅失败触发的专用步骤中吗?

    您在不发送通知的情况下运行测试,然后添加如下步骤:

        - run:
            name: 'send notification if one or more test failed'
            background: false
            when: on_fail
            command: |
              # Do stuff
    

    希望这能有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 2023-01-18
      • 2023-01-12
      • 2021-01-27
      • 2017-01-05
      • 1970-01-01
      相关资源
      最近更新 更多