func main()

in packages/deb/build.go [403:624]


func main() {
	flag.Parse()

	builds := []build{
		{
			Package: "kubectl",
			Distros: distros,
			Versions: []version{
				{
					GetVersion:          getStableKubeVersion,
					Revision:            revision,
					Channel:             ChannelStable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestKubeVersion,
					Revision:            revision,
					Channel:             ChannelUnstable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestCIVersion,
					Revision:            revision,
					Channel:             ChannelNightly,
					GetDownloadLinkBase: getCIBuildsDownloadLinkBase,
				},
			},
		},
		{
			Package: "kubelet",
			Distros: distros,
			Versions: []version{
				{
					GetVersion:          getStableKubeVersion,
					Revision:            revision,
					Channel:             ChannelStable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestKubeVersion,
					Revision:            revision,
					Channel:             ChannelUnstable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestCIVersion,
					Revision:            revision,
					Channel:             ChannelNightly,
					GetDownloadLinkBase: getCIBuildsDownloadLinkBase,
				},
			},
		},
		{
			Package: "kubernetes-cni",
			Distros: distros,
			Versions: []version{
				{
					Version:  currentCNIVersion,
					Revision: revision,
					Channel:  ChannelStable,
				},
				{
					Version:  currentCNIVersion,
					Revision: revision,
					Channel:  ChannelUnstable,
				},
				{
					Version:  currentCNIVersion,
					Revision: revision,
					Channel:  ChannelNightly,
				},
			},
		},
		{
			Package: "kubeadm",
			Distros: distros,
			Versions: []version{
				{
					GetVersion:          getStableKubeVersion,
					Revision:            revision,
					Channel:             ChannelStable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestKubeVersion,
					Revision:            revision,
					Channel:             ChannelUnstable,
					GetDownloadLinkBase: getReleaseDownloadLinkBase,
				},
				{
					GetVersion:          getLatestCIVersion,
					Revision:            revision,
					Channel:             ChannelNightly,
					GetDownloadLinkBase: getCIBuildsDownloadLinkBase,
				},
			},
		},
		{
			Package: "cri-tools",
			Distros: distros,
			Versions: []version{
				{
					GetVersion: getCRIToolsLatestVersion,
					Revision:   revision,
					Channel:    ChannelStable,
				},
				{
					GetVersion: getCRIToolsLatestVersion,
					Revision:   revision,
					Channel:    ChannelUnstable,
				},
				{
					GetVersion: getCRIToolsLatestVersion,
					Revision:   revision,
					Channel:    ChannelNightly,
				},
			},
		},
	}

	if kubeVersion != "" {
		getSpecifiedVersion := func() (string, error) {
			return kubeVersion, nil
		}
		builds = []build{
			{
				Package: "kubectl",
				Distros: distros,
				Versions: []version{
					{
						GetVersion:          getSpecifiedVersion,
						Revision:            revision,
						Channel:             ChannelStable,
						GetDownloadLinkBase: getReleaseDownloadLinkBase,
					},
				},
			},
			{
				Package: "kubelet",
				Distros: distros,
				Versions: []version{
					{
						GetVersion:          getSpecifiedVersion,
						Revision:            revision,
						Channel:             ChannelStable,
						GetDownloadLinkBase: getReleaseDownloadLinkBase,
					},
				},
			},
			{
				Package: "kubernetes-cni",
				Distros: distros,
				Versions: []version{
					{
						Version:  currentCNIVersion,
						Revision: revision,
						Channel:  ChannelStable,
					},
				},
			},
			{
				Package: "kubeadm",
				Distros: distros,
				Versions: []version{
					{
						GetVersion:          getSpecifiedVersion,
						Revision:            revision,
						Channel:             ChannelStable,
						GetDownloadLinkBase: getReleaseDownloadLinkBase,
					},
				},
			},
			{
				Package: "cri-tools",
				Distros: distros,
				Versions: []version{
					{
						GetVersion: getCRIToolsLatestVersion,
						Revision:   revision,
						Channel:    ChannelStable,
					},
				},
			},
		}
	}

	if err := walkBuilds(builds, func(pkg, distro, arch string, v version) error {
		c := cfg{
			Package:    pkg,
			version:    v,
			DistroName: distro,
			Arch:       arch,
		}
		if c.Arch == "arm" {
			c.DebArch = "armhf"
		} else if c.Arch == "ppc64le" {
			c.DebArch = "ppc64el"
		} else {
			c.DebArch = c.Arch
		}

		var err error
		c.KubeadmKubeletConfigFile, err = getKubeadmKubeletConfigFile(v)
		if err != nil {
			log.Fatalf("error getting kubeadm config: %v", err)
		}

		c.Dependencies, err = getKubeadmDependencies(v)
		if err != nil {
			log.Fatalf("error getting kubeadm dependencies: %v", err)
		}

		c.CNIVersion, err = getCNIVersion(v)
		if err != nil {
			log.Fatalf("error getting kubelet CNI Version: %v", err)
		}

		return c.run()
	}); err != nil {
		log.Fatalf("err: %v", err)
	}
}