diff --git a/cli/pkg/digger/digger.go b/cli/pkg/digger/digger.go
index 43509c731..6a858d672 100644
--- a/cli/pkg/digger/digger.go
+++ b/cli/pkg/digger/digger.go
@@ -135,7 +135,12 @@ func RunJobs(
currentJob := jobs[0]
repoNameForBackendReporting := strings.ReplaceAll(currentJob.Namespace, "/", "-")
projectNameForBackendReporting := currentJob.ProjectName
- planSummary := exectorResults[0].PlanResult.PlanSummary
+ // TODO: handle the apply result summary as well to report it to backend. Possibly reporting changed resources as well
+ // Some kind of generic terraform operation summary might need to be introduced
+ planSummary := terraform.PlanSummary{}
+ if exectorResults[0].PlanResult != nil {
+ planSummary = exectorResults[0].PlanResult.PlanSummary
+ }
prNumber := *currentJob.PullRequestNumber
batchResult, err := backendApi.ReportProjectJobStatus(repoNameForBackendReporting, projectNameForBackendReporting, batchId, "succeeded", time.Now(), &planSummary)
if err != nil {
@@ -158,15 +163,15 @@ func UpdateStatusComment(jobs []scheduler.SerializedJob, prNumber int, prService
message := ":construction_worker: Jobs status:\n\n"
for _, job := range jobs {
-
var jobSpec orchestrator.JobJson
err := json.Unmarshal(job.JobString, &jobSpec)
if err != nil {
log.Printf("Failed to convert unmarshall Serialized job")
}
+ isPlan := jobSpec.IsPlan()
message = message + fmt.Sprintf("\n", job.ProjectName)
- message = message + fmt.Sprintf("%v **%v** %v%v\n", job.Status.ToEmoji(), jobSpec.ProjectName, *job.WorkflowRunUrl, job.Status.ToString(), job.ResourcesSummaryString())
+ message = message + fmt.Sprintf("%v **%v** %v%v\n", job.Status.ToEmoji(), jobSpec.ProjectName, *job.WorkflowRunUrl, job.Status.ToString(), job.ResourcesSummaryString(isPlan))
message = message + fmt.Sprintf("\n", job.ProjectName)
}
diff --git a/libs/orchestrator/aws.go b/libs/orchestrator/aws.go
index 6a3c69d6a..d81e8c9fa 100644
--- a/libs/orchestrator/aws.go
+++ b/libs/orchestrator/aws.go
@@ -42,7 +42,7 @@ func populateKeys(envs map[string]string, provider stscreds.WebIdentityRoleProvi
func (job *Job) PopulateAwsCredentialsEnvVarsForJob() error {
if job.StateEnvProvider != nil {
- log.Printf("Project-level AWS role detected, Assuming role: %v for project run: %v", job.ProjectName)
+ log.Printf("Project-level AWS role detected, Assuming role for project: %v", job.ProjectName)
var err error
backendConfigArgs, err := populateretrieveBackendConfigArgs(*job.StateEnvProvider)
if err != nil {
diff --git a/libs/orchestrator/json_models.go b/libs/orchestrator/json_models.go
index 919391584..f9ed6f2db 100644
--- a/libs/orchestrator/json_models.go
+++ b/libs/orchestrator/json_models.go
@@ -1,5 +1,7 @@
package orchestrator
+import "slices"
+
type StepJson struct {
Action string `json:"action"`
ExtraArgs []string `json:"extraArgs"`
@@ -25,6 +27,14 @@ type JobJson struct {
CommandEnvVars map[string]string `json:"commandEnvVars"`
}
+func (j *JobJson) IsPlan() bool {
+ return slices.Contains(j.Commands, "digger plan")
+}
+
+func (j *JobJson) IsApply() bool {
+ return slices.Contains(j.Commands, "digger apply")
+}
+
func JobToJson(job Job) JobJson {
return JobJson{
ProjectName: job.ProjectName,
diff --git a/libs/orchestrator/json_models_test.go b/libs/orchestrator/json_models_test.go
new file mode 100644
index 000000000..9d1f419be
--- /dev/null
+++ b/libs/orchestrator/json_models_test.go
@@ -0,0 +1,32 @@
+package orchestrator
+
+import (
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestIsPlanForDiggerPlanJobCorrect(t *testing.T) {
+ j := JobJson{
+ ProjectName: "project.Name",
+ ProjectDir: "project.Dir",
+ ProjectWorkspace: "workspace",
+ Terragrunt: false,
+ Commands: []string{"run echo 'hello", "digger plan"},
+ EventName: "issue_comment",
+ }
+ assert.True(t, j.IsPlan())
+ assert.False(t, j.IsApply())
+}
+
+func TestIsApplyForDiggerApplyJobCorrect(t *testing.T) {
+ j := JobJson{
+ ProjectName: "project.Name",
+ ProjectDir: "project.Dir",
+ ProjectWorkspace: "workspace",
+ Terragrunt: false,
+ Commands: []string{"digger apply"},
+ EventName: "issue_comment",
+ }
+ assert.True(t, j.IsApply())
+ assert.False(t, j.IsPlan())
+}
diff --git a/libs/orchestrator/scheduler/models.go b/libs/orchestrator/scheduler/models.go
index 5305c9676..c39d163b1 100644
--- a/libs/orchestrator/scheduler/models.go
+++ b/libs/orchestrator/scheduler/models.go
@@ -86,7 +86,11 @@ type SerializedBatch struct {
Jobs []SerializedJob `json:"jobs"`
}
-func (s *SerializedJob) ResourcesSummaryString() string {
+func (s *SerializedJob) ResourcesSummaryString(isPlan bool) string {
+ if !isPlan {
+ return ""
+ }
+
if s.Status == DiggerJobSucceeded {
return fmt.Sprintf(" [Resources: %v to create, %v to update, %v to delete]", s.ResourcesCreated, s.ResourcesUpdated, s.ResourcesDeleted)
} else {