in helpers/foundation-deployer/stages/apply.go [428:483]
func deployStage(t testing.TB, sc StageConf, s steps.Steps, c CommonConf) error {
err := sc.GitConf.CheckoutBranch("plan")
if err != nil {
return err
}
err = s.RunStep(fmt.Sprintf("%s.copy-code", sc.Stage), func() error {
return copyStepCode(t, sc.GitConf, c.FoundationPath, c.CheckoutPath, sc.Repo, sc.Step, sc.CustomTargetDirPath)
})
if err != nil {
return err
}
shared := []string{}
if sc.HasManualStep {
shared = sc.GroupingUnits
}
for _, bu := range shared {
buOptions := &terraform.Options{
TerraformDir: filepath.Join(filepath.Join(c.CheckoutPath, sc.Repo), bu, "shared"),
Logger: c.Logger,
NoColor: true,
}
err := s.RunStep(fmt.Sprintf("%s.%s.apply-shared", sc.Stage, bu), func() error {
return applyLocal(t, buOptions, sc.StageSA, c.PolicyPath, c.ValidatorProject)
})
if err != nil {
return err
}
}
err = s.RunStep(fmt.Sprintf("%s.plan", sc.Stage), func() error {
return planStage(t, sc.GitConf, sc.CICDProject, sc.DefaultRegion, sc.Repo)
})
if err != nil {
return err
}
for _, env := range sc.Envs {
err = s.RunStep(fmt.Sprintf("%s.%s", sc.Stage, env), func() error {
aEnv := env
if env == "shared" {
aEnv = "production"
}
return applyEnv(t, sc.GitConf, sc.CICDProject, sc.DefaultRegion, sc.Repo, aEnv)
})
if err != nil {
return err
}
}
fmt.Println("end of", sc.Step, "deploy")
return nil
}