0

我通过 argocd(应用程序模式的应用程序)部署了多个应用程序(helm),所有应用程序都驻留在同一个 git 存储库中的文件夹中: app1, app2, app3... appN. 我正在使用 argocd 通知。我已经为 on-deployed 事件配置了触发器(来自 helm chart 中的示例):

    trigger.on-deployed: |
      - description: Application is synced and healthy. Triggered once per commit.
        oncePer: app.status.sync.revision
        send:
        - app-deployed
        when: app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy'

和默认订阅:

  subscriptions:
    - recipients:
      - slack:release
      triggers:
      - on-deployed

现在,如果我更改文件app1夹中的文件,触发器也会在所有其他应用程序上触发:app2, app3 ... appN,向 slack 发送关于不受更改影响且未实际部署的应用程序的不需要的消息。我只想收到有关实际更新/部署的应用程序的通知。有什么解决方法可以实现这一目标吗?

4

1 回答 1

0

我遇到过同样的问题。对我有用的是以下触发器

     oncePer: app.status.syncResult.revision and app.metadata.name
     send:
     - app-deployed
     when: app.status.operationState.phase in ['Succeeded'] and 
     app.status.health.status == 'Healthy'

在这种情况下,每个版本我都会收到 2 个通知,一个是针对应用程序的应用程序,另一个是针对应用程序本身的。如果您对应用程序通知的应用程序不感兴趣,您也可以将其过滤掉。虽然在我的情况下,有 2 个通知很好,因为在通知变为松弛之前我有一个聚合服务。

于 2021-12-13T12:21:40.347 回答