func newCloudBuildTemplateData()

in versioning/scripts/cloudbuild/main.go [202:261]


func newCloudBuildTemplateData(
	registry string, spec versions.Spec, options cloudBuildOptions) cloudBuildTemplateData {
	data := cloudBuildTemplateData{}
	data.RequireNewTags = options.RequireNewTags

	// Determine the set of directories to operate on.
	dirs := make(map[string]bool)
	if len(options.Directories) > 0 {
		for _, d := range options.Directories {
			dirs[d] = true
		}
	} else {
		for _, v := range spec.Versions {
			dirs[v.Dir] = true
		}
	}

	// Extract tests to run.
	var structureTests []string
	var functionalTests []string
	if options.RunTests {
		// Legacy structure tests reside in the root tests/ directory.
		structureTests = append(structureTests, readTests(testsDir)...)
		structureTests = append(structureTests, readTests(structureTestsDir)...)
		functionalTests = append(functionalTests, readTests(functionalTestsDir)...)
	}

	// Extract a list of full image names to build.
	for _, v := range spec.Versions {
		if !dirs[v.Dir] {
			continue
		}
		var images []string
		for _, t := range v.Tags {
			image := fmt.Sprintf("%v/%v:%v", registry, v.Repo, t)
			images = append(images, image)
			if options.FirstTagOnly {
				break
			}
		}
		// Ignore builder images from images list
		if !v.Builder {
			data.AllImages = append(data.AllImages, images...)
		}
		versionSTests, versionFTests := filterTests(structureTests, functionalTests, v)
		// Enforce to use ImageNameFromBuilder as reference to create tags
		if v.BuilderImage != "" {
			BuilderImageFull := fmt.Sprintf("%v/%v", registry, v.BuilderImage)
			data.ImageBuilds = append(
				data.ImageBuilds, imageBuildTemplateData{v.Dir, v.ImageNameFromBuilder, images, versionSTests, versionFTests, v.Builder, BuilderImageFull, v.BuilderArgs, v.ImageNameFromBuilder})
		} else {
			data.ImageBuilds = append(
				data.ImageBuilds, imageBuildTemplateData{v.Dir, images[0], images[1:], versionSTests, versionFTests, v.Builder, v.BuilderImage, v.BuilderArgs, v.ImageNameFromBuilder})
		}
	}

	data.TimeoutSeconds = options.TimeoutSeconds
	data.Parallel = shouldParallelize(options, len(spec.Versions), len(functionalTests))
	return data
}