Skip to content

Commit ef767bd

Browse files
authored
feat: no apply on empty plan (#21)
* feat(runner): skip storing plan binary and sum if no diff is found * fix(runner): runner should save lastPlanDate even if there's no change
1 parent 544259d commit ef767bd

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

runner/runner.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,20 @@ func (r *Runner) init() error {
9090

9191
func (r *Runner) plan() {
9292
log.Print("Launching terraform plan")
93-
_, err := r.terraform.Plan(context.Background(), tfexec.Out(PlanArtifact))
93+
diff, err := r.terraform.Plan(context.Background(), tfexec.Out(PlanArtifact))
9494
if err != nil {
9595
log.Printf("Terraform plan errored: %s", err)
9696
return
9797
}
98+
log.Printf("Setting last plan date cache at key %s", r.config.Runner.Layer.PlanDate)
99+
err = r.cache.Set(r.config.Runner.Layer.PlanDate, []byte(strconv.FormatInt(time.Now().Unix(), 10)), 3600)
100+
if err != nil {
101+
log.Fatalf("Could not put plan date in cache: %s", err)
102+
}
103+
if !diff {
104+
log.Printf("Terraform plan diff empty, no subsequent apply should be launched")
105+
return
106+
}
98107
plan, err := os.ReadFile(fmt.Sprintf("%s/%s", r.terraform.WorkingDir(), PlanArtifact))
99108
if err != nil {
100109
log.Fatalf("Could not read plan output: %s", err)
@@ -112,11 +121,6 @@ func (r *Runner) plan() {
112121
if err != nil {
113122
log.Fatalf("Could not put plan checksum in cache: %s", err)
114123
}
115-
log.Printf("Setting last plan date cache at key %s", r.config.Runner.Layer.PlanDate)
116-
err = r.cache.Set(r.config.Runner.Layer.PlanDate, []byte(strconv.FormatInt(time.Now().Unix(), 10)), 3600)
117-
if err != nil {
118-
log.Fatalf("Could not put plan date in cache: %s", err)
119-
}
120124
}
121125

122126
func (r *Runner) apply() {

0 commit comments

Comments
 (0)