func newCloudBuildTemplateData()

in tools/dockerversioning/scripts/cloudbuild/main.go [248:315]


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

  // Defines the default docker image, if its not set
  if (options.DockerImage == "") {
    data.DockerImage = "gcr.io/cloud-builders/docker"
  } else {
    data.DockerImage = options.DockerImage
  }

  // 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, v.Annotations, v.Labels})
    } else {
      data.ImageBuilds = append(
        data.ImageBuilds, imageBuildTemplateData{v.Dir, images[0], images[1:], versionSTests, versionFTests, v.Builder, v.BuilderImage, v.BuilderArgs, v.ImageNameFromBuilder, v.Annotations, v.Labels})
    }
  }

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