Created
July 14, 2024 02:03
-
-
Save zentavr/c0a667d5fe6f87589df9e0ae812d1e3d to your computer and use it in GitHub Desktop.
Setup for ArgoCD Notifications (v2.11.3)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: v1 | |
kind: ConfigMap | |
metadata: | |
name: argocd-notifications-cm | |
namespace: sys-argocd | |
data: | |
context: | | |
argocdUrl: https://argocd-k8s-staging.example.com | |
defaultTriggers: | | |
- on-created | |
- on-deleted | |
- on-deployed | |
- on-health-degraded | |
- on-sync-failed | |
- on-sync-running | |
- on-sync-status-unknown | |
- on-sync-succeeded | |
service.slack: | | |
token: $slack-token | |
username: ArgoCD Staging Notifications | |
icon: ":crossed_fingers:" | |
template.app-created: | | |
message: &message Application {{.app.metadata.name}} has been created. | |
email: | |
subject: *message | |
teams: | |
title: *message | |
template.app-deleted: | | |
message: &message Application {{.app.metadata.name}} has been deleted. | |
email: | |
subject: *message | |
teams: | |
title: *message | |
template.app-deployed: | | |
message: | | |
{{if eq .serviceType "slack"}}:white_check_mark:{{end}} Application {{.app.metadata.name}} is now running new version of deployments manifests. | |
email: | |
subject: New version of an application {{.app.metadata.name}} is up and running. | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#18be52", | |
"fields": [ | |
{ | |
"title": "Sync Status", | |
"value": "{{.app.status.sync.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
}, | |
{ | |
"title": "Revision", | |
"value": "{{.app.status.sync.revision}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
themeColor: "#000080" | |
title: New version of an application {{.app.metadata.name}} is up and running. | |
facts: | | |
[{ | |
"name": "Sync Status", | |
"value": "{{.app.status.sync.status}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
}, | |
{ | |
"name": "Revision", | |
"value": "{{.app.status.sync.revision}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Operation Application", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
template.app-health-degraded: | | |
message: | | |
{{if eq .serviceType "slack"}}:exclamation:{{end}} Application {{.app.metadata.name}} has degraded. | |
Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. | |
email: | |
subject: Application {{.app.metadata.name}} has degraded. | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link": "{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#f4c030", | |
"fields": [ | |
{ | |
"title": "Health Status", | |
"value": "{{.app.status.health.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
themeColor: "#FF0000" | |
title: Application {{.app.metadata.name}} has degraded. | |
facts: | | |
[{ | |
"name": "Health Status", | |
"value": "{{.app.status.health.status}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Open Application", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
template.app-sync-failed: | | |
message: | | |
{{if eq .serviceType "slack"}}:exclamation:{{end}} The sync operation of application {{.app.metadata.name}} has failed at {{.app.status.operationState.finishedAt}} with the following error: {{.app.status.operationState.message}} | |
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true . | |
email: | |
subject: Failed to sync application {{.app.metadata.name}}. | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#E96D76", | |
"fields": [ | |
{ | |
"title": "Sync Status", | |
"value": "{{.app.status.sync.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
themeColor: "#FF0000" | |
title: Failed to sync application {{.app.metadata.name}}. | |
facts: | | |
[{ | |
"name": "Sync Status", | |
"value": "{{.app.status.sync.status}}" | |
}, | |
{ | |
"name": "Failed at", | |
"value": "{{.app.status.operationState.finishedAt}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Open Operation", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
template.app-sync-running: | | |
message: | | |
The sync operation of application {{.app.metadata.name}} has started at {{.app.status.operationState.startedAt}}. | |
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true . | |
email: | |
subject: "Start syncing application {{.app.metadata.name}}." | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#0DADEA", | |
"fields": [ | |
{ | |
"title": "Sync Status", | |
"value": "{{.app.status.sync.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
title: "Start syncing application {{.app.metadata.name}}." | |
facts: | | |
[{ | |
"name": "Sync Status", | |
"value": "{{.app.status.sync.status}}" | |
}, | |
{ | |
"name": "Started at", | |
"value": "{{.app.status.operationState.startedAt}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Open Operation", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
template.app-sync-status-unknown: | | |
message: | | |
{{if eq .serviceType "slack"}}:exclamation:{{end}} Application {{.app.metadata.name}} sync is 'Unknown'. | |
Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. | |
{{if ne .serviceType "slack"}} | |
{{range $c := .app.status.conditions}} | |
* {{$c.message}} | |
{{end}} | |
{{end}} | |
email: | |
subject: Application {{.app.metadata.name}} sync status is 'Unknown' | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#E96D76", | |
"fields": [ | |
{ | |
"title": "Sync Status", | |
"value": "{{.app.status.sync.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
title: Application {{.app.metadata.name}} sync status is 'Unknown' | |
facts: | | |
[{ | |
"name": "Sync Status", | |
"value": "{{.app.status.sync.status}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Open Application", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
template.app-sync-succeeded: | | |
message: | | |
{{if eq .serviceType "slack"}}:white_check_mark:{{end}} Application {{.app.metadata.name}} has been successfully synced at {{.app.status.operationState.finishedAt}}. | |
Sync operation details are available at: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true . | |
email: | |
subject: Application {{.app.metadata.name}} has been successfully synced. | |
slack: | |
attachments: | | |
[{ | |
"title": "{{ .app.metadata.name}}", | |
"title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}", | |
"color": "#18be52", | |
"fields": [ | |
{ | |
"title": "Sync Status", | |
"value": "{{.app.status.sync.status}}", | |
"short": true | |
}, | |
{ | |
"title": "Repository", | |
"value": "{{.app.spec.source.repoURL}}", | |
"short": true | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"title": "{{$c.type}}", | |
"value": "{{$c.message}}", | |
"short": true | |
} | |
{{end}} | |
] | |
}] | |
teams: | |
themeColor: "#000080" | |
title: Application {{.app.metadata.name}} has been successfully synced | |
facts: | | |
[{ | |
"name": "Sync Status", | |
"value": "{{.app.status.sync.status}}" | |
}, | |
{ | |
"name": "Synced at", | |
"value": "{{.app.status.operationState.finishedAt}}" | |
}, | |
{ | |
"name": "Repository", | |
"value": "{{.app.spec.source.repoURL}}" | |
} | |
{{range $index, $c := .app.status.conditions}} | |
, | |
{ | |
"name": "{{$c.type}}", | |
"value": "{{$c.message}}" | |
} | |
{{end}} | |
] | |
potentialAction: | | |
[{ | |
"@type":"OpenUri", | |
"name":"Operation Details", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}?operation=true" | |
}] | |
}, | |
{ | |
"@type":"OpenUri", | |
"name":"Open Repository", | |
"targets":[{ | |
"os":"default", | |
"uri":"{{.app.spec.source.repoURL }}" | |
}] | |
}] | |
trigger.on-created: | | |
- when: true | |
description: Application is created. | |
send: | |
- app-created | |
oncePer: app.metadata.name | |
trigger.on-deleted: | | |
- when: app.metadata.deletionTimestamp != nil | |
description: Application is deleted. | |
send: | |
- app-deleted | |
oncePer: app.metadata.name | |
trigger.on-deployed: | | |
- description: Application is synced and healthy. Triggered once per commit. | |
oncePer: app.status.operationState?.syncResult?.revision | |
when: app.status.operationState != nil and app.status.operationState.phase in ['Succeeded'] and app.status.health.status == 'Healthy' | |
send: | |
- app-deployed | |
trigger.on-health-degraded: | | |
- description: Application has degraded | |
send: | |
- app-health-degraded | |
when: app.status.health.status == 'Degraded' | |
trigger.on-sync-failed: | | |
- when: app.status.operationState != nil and app.status.operationState.phase in ['Error', 'Failed'] | |
description: Application syncing has failed | |
send: | |
- app-sync-failed | |
trigger.on-sync-running: | | |
- when: app.status.operationState != nil and app.status.operationState.phase in ['Running'] | |
description: Application is being synced | |
send: | |
- app-sync-running | |
trigger.on-sync-status-unknown: | | |
- when: app.status.sync.status == 'Unknown' | |
description: Application status is 'Unknown' | |
send: | |
- app-sync-status-unknown | |
trigger.on-sync-succeeded: | | |
- when: app.status.operationState != nil and app.status.operationState.phase in ['Succeeded'] | |
description: Application syncing has succeeded | |
send: | |
- app-sync-succeeded |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: v1 | |
kind: Secret | |
metadata: | |
name: argocd-notifications-secret | |
namespace: sys-argocd | |
type: Opaque | |
data: | |
slack-token: eG94Yi0xMjM0NTY3ODk5MC03MTIzNjc4OTAzNDY3LXZlcnlTZWNyZXRUb2tlbkhlcmUxMjM= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment