【问题标题】:drone.io 0.5 slack no longer workingdrone.io 0.5 松弛不再工作
【发布时间】:2017-08-20 06:11:44
【问题描述】:

我们在drone.io 0.4 中的松弛通知工作正常,但由于我们更新到0.5,尽管尝试了documentation,但我无法让它工作。

以前是这样的

build:

  build and deploy stuff...

notify:
  slack:
    webhook_url: $$SLACK_WEBHOOK_URL
    channel: continuous_integratio
    username: drone

你可以在这里看到我使用 $$ 来引用旧的特殊无人机配置文件。

现在我最近的尝试是这样的

pipeline:

  build and deploy stuff...

  slack:
    image: plugins/slack
    webhook: https://hooks.slack.com/services/...
    channel: continuous_integratio
    username: drone

根据文档,slack 现在缩进到管道(以前构建)级别。

我尝试像以前一样将 slack 更改为 notify,仅通过无人机 cli 使用 SLACK_WEBHOOK 秘密,并且我还尝试了其他操作。

有人知道我做错了什么吗?

【问题讨论】:

    标签: slack drone drone.io


    【解决方案1】:

    这是我使用的(几乎完全正确的)yaml,启用了松弛通知,但我屏蔽了凭据

    pipeline:
      build:
        image: golang
        commands:
          - go build
          - go test
    
      slack:
        image: plugins/slack
        webhook: https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
        when:
          status: [ success, failure ]
    

    不幸的是,您的示例中没有任何内容可以跳出,也许除了频道名称有错字(尽管我不确定这是否代表您的真实 yaml 配置)

    如果您尝试使用机密(通过 cli),您需要确保对 yaml 文件进行签名并将签名文件提交到您的存储库。然后,您可以在类似于 0.4 的 yaml 中引用您的秘密,但语法略有不同:

    pipeline:
      build:
        image: golang
        commands:
          - go build
          - go test
    
      slack:
        image: plugins/slack
        webhook: ${SLACK_WEBHOOK}
        when:
          status: [ success, failure ]
    

    你可以在http://readme.drone.io/usage/secret-guide/阅读更多关于秘密的信息

    您也可以直接从命令行调用插件来帮助测试不同的输入值。这有助于调试。见https://github.com/drone-plugins/drone-slack#usage

    【讨论】:

    • 谢谢,虽然我确实尝试了 webhook 替换并且我确实签署了我的drone.yml 文件。也许我需要when 部分。我会试试的
    • 另外,continuous_integratio 正是频道的拼写方式(可能是由于名称长度限制)
    • 如果您希望在失败时执行步骤,则需要 when / status。 Drone 在失败时立即退出管道并且不会执行任何后续步骤,除非另有配置。
    • 这可以解释它,因为我们的构建没有通过 ATM,因为我们有一个漫长而复杂的管道并且最后的部分当前失败(不是无人机的错)。在 0.4 中,Slack 报告了错误,因为它超出了构建的范围(我认为),现在 slack 在其中(现在称为管道)。至少我是这么理解的。
    【解决方案2】:

    问题在于,在 0.4 中,通知插件位于管道范围之外(然后构建),而现在从 0.5 开始,它位于管道内。这与当管道失败时它会立即退出作用域这一事实相结合,这意味着再也无法到达slack(然后是notify)步骤。

    对此的解决方案是使用when 命令明确告诉它在失败时执行步骤:

    when:
      status: [ success, failure ]
    

    不过,这实际上在入门指南中提到过,但我直到最后都没有完成,因为我的目标是快速启动并运行它并且不担心我认为是边缘情况.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多