func destroyStage()

in helpers/foundation-deployer/stages/destroy.go [157:218]


func destroyStage(t testing.TB, sc StageConf, s steps.Steps, c CommonConf) error {
	gcpPath := filepath.Join(c.CheckoutPath, sc.Repo)
	for _, e := range sc.Envs {
		err := s.RunDestroyStep(fmt.Sprintf("%s.%s", sc.Repo, e), func() error {
			for _, g := range sc.GroupingUnits {
				options := &terraform.Options{
					TerraformDir:             filepath.Join(gcpPath, g, e),
					Logger:                   c.Logger,
					NoColor:                  true,
					RetryableTerraformErrors: testutils.RetryableTransientErrors,
					MaxRetries:               2,
					TimeBetweenRetries:       2 * time.Minute,
				}
				conf := utils.CloneCSR(t, sc.Repo, gcpPath, sc.CICDProject, c.Logger)
				branch := e
				if branch == "shared" {
					branch = "production"
				}
				err := conf.CheckoutBranch(branch)
				if err != nil {
					return err
				}
				err = destroyEnv(t, options, sc.StageSA)
				if err != nil {
					return err
				}
			}
			return nil
		})
		if err != nil {
			return err
		}
	}
	groupingUnits := []string{}
	if sc.HasManualStep {
		groupingUnits = sc.GroupingUnits
	}
	for _, g := range groupingUnits {
		err := s.RunDestroyStep(fmt.Sprintf("%s.%s.apply-shared", sc.Repo, g), func() error {
			options := &terraform.Options{
				TerraformDir:             filepath.Join(gcpPath, g, "shared"),
				Logger:                   c.Logger,
				NoColor:                  true,
				RetryableTerraformErrors: testutils.RetryableTransientErrors,
				MaxRetries:               2,
				TimeBetweenRetries:       2 * time.Minute,
			}
			conf := utils.CloneCSR(t, ProjectsRepo, gcpPath, sc.CICDProject, c.Logger)
			err := conf.CheckoutBranch("production")
			if err != nil {
				return err
			}
			return destroyEnv(t, options, sc.StageSA)
		})
		if err != nil {
			return err
		}
	}

	fmt.Println("end of", sc.Step, "destroy")
	return nil
}