Skip to content

Commit 2681c64

Browse files
authored
Improve comment and deployment status description (#1045)
1 parent ee3f08b commit 2681c64

File tree

4 files changed

+39
-12
lines changed

4 files changed

+39
-12
lines changed

internal/notification/healthcomment.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,14 @@ func generateCommentBodyOnHealthChanged(app argocdv1alpha1.Application, argocdUR
5252
argocdApplicationURL := fmt.Sprintf("%s/applications/%s", argocdURL, app.Name)
5353
switch app.Status.Health.Status {
5454
case health.HealthStatusHealthy:
55-
return fmt.Sprintf("## %s %s: [%s](%s)\nDeployed %s",
56-
":white_check_mark:",
55+
return fmt.Sprintf(":white_check_mark: %s [%s](%s) at %s",
5756
app.Status.Health.Status,
5857
app.Name,
5958
argocdApplicationURL,
6059
sourceRevision.Revision,
6160
)
6261
case health.HealthStatusDegraded:
63-
return fmt.Sprintf("## %s %s: [%s](%s)\nError while deploying %s:\n%s",
64-
":x:",
62+
return fmt.Sprintf("## :x: %s [%s](%s) at %s:\n%s",
6563
app.Status.Health.Status,
6664
app.Name,
6765
argocdApplicationURL,

internal/notification/healthdeployment.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ func generateDeploymentStatusOnHealthChanged(app argocdv1alpha1.Application, arg
5757

5858
func generateDeploymentStatusDescriptionOnHealthChanged(app argocdv1alpha1.Application) string {
5959
var b strings.Builder
60-
b.WriteString(fmt.Sprintf("%s:\n%s\n",
61-
app.Status.Health.Status,
62-
app.Status.Health.Message,
63-
))
60+
b.WriteString(fmt.Sprintf("%s:\n", app.Status.Health.Status))
61+
if app.Status.Health.Message != "" {
62+
b.WriteString(fmt.Sprintf("%s\n", app.Status.Health.Message))
63+
}
6464
for _, r := range app.Status.Resources {
6565
if r.Health == nil {
6666
continue

internal/notification/phasecomment.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,15 @@ func generateCommentBodyOnPhaseChanged(app argocdv1alpha1.Application, argocdURL
6161
return fmt.Sprintf(":warning: Syncing [%s](%s) to %s", app.Name, argocdApplicationURL, sourceRevision.Revision)
6262
case synccommon.OperationSucceeded:
6363
return fmt.Sprintf(":white_check_mark: Synced [%s](%s) to %s", app.Name, argocdApplicationURL, sourceRevision.Revision)
64-
case synccommon.OperationFailed, synccommon.OperationError:
65-
return fmt.Sprintf("## :x: Sync %s: [%s](%s)\nError while syncing to %s:\n%s",
66-
phase,
64+
case synccommon.OperationFailed:
65+
return fmt.Sprintf("## :x: Failed to sync [%s](%s) to %s\n%s",
66+
app.Name,
67+
argocdApplicationURL,
68+
sourceRevision.Revision,
69+
generateCommentResourcesOnPhaseChanged(app.Status.OperationState.SyncResult),
70+
)
71+
case synccommon.OperationError:
72+
return fmt.Sprintf("## :x: Sync error [%s](%s) at %s\n%s",
6773
app.Name,
6874
argocdApplicationURL,
6975
sourceRevision.Revision,

internal/notification/phasedeployment.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package notification
33
import (
44
"context"
55
"fmt"
6+
"strings"
67

78
argocdv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
89
synccommon "github.com/argoproj/gitops-engine/pkg/sync/common"
@@ -44,7 +45,7 @@ func generateDeploymentStatusOnPhaseChanged(app argocdv1alpha1.Application, argo
4445
GitHubDeployment: *deployment,
4546
GitHubDeploymentStatus: github.DeploymentStatus{
4647
LogURL: fmt.Sprintf("%s/applications/%s", argocdURL, app.Name),
47-
Description: trimDescription(fmt.Sprintf("%s:\n%s", phase, app.Status.OperationState.Message)),
48+
Description: trimDescription(generateDeploymentStatusDescriptionOnPhaseChanged(app)),
4849
},
4950
}
5051
if len(app.Status.Summary.ExternalURLs) > 0 {
@@ -66,3 +67,25 @@ func generateDeploymentStatusOnPhaseChanged(app argocdv1alpha1.Application, argo
6667
}
6768
return nil
6869
}
70+
71+
func generateDeploymentStatusDescriptionOnPhaseChanged(app argocdv1alpha1.Application) string {
72+
phase := argocd.GetSyncOperationPhase(app)
73+
if phase == "" {
74+
return ""
75+
}
76+
syncResult := app.Status.OperationState.SyncResult
77+
if syncResult == nil {
78+
return ""
79+
}
80+
81+
var b strings.Builder
82+
b.WriteString(fmt.Sprintf("%s:\n", phase))
83+
for _, r := range syncResult.Resources {
84+
namespacedName := r.Namespace + "/" + r.Name
85+
switch r.Status {
86+
case synccommon.ResultCodeSyncFailed:
87+
b.WriteString(fmt.Sprintf("%s: %s\n", namespacedName, r.Message))
88+
}
89+
}
90+
return b.String()
91+
}

0 commit comments

Comments
 (0)