func getAgent()

in pkg/testing/buildkite/buildkite.go [108:185]


func getAgent(os common.SupportedOS) (StepAgent, error) {
	switch os.Arch {
	case define.AMD64:
		switch os.Type {
		case define.Linux:
			switch os.Distro {
			case "", "ubuntu": // default is Ubuntu
				switch os.Version {
				case "20.04":
					return bkUbuntuAMD64_2004, nil
				case "22.04":
					return bkUbuntuAMD64_2204, nil
				case "", "24.04": // default is 24.04
					return bkUbuntuAMD64_2404, nil
				default:
					return StepAgent{}, fmt.Errorf("unknown ubuntu version: %s", os.Version)
				}
			case "rhel":
				switch os.Version {
				case "", "8": // default is 8
					return bkRHELAMD64_8, nil
				default:
					return StepAgent{}, fmt.Errorf("unknown rhel version: %s", os.Version)
				}
			}
		case define.Kubernetes:
			return bkUbuntuAMD64_2404, nil
		case define.Windows:
			switch os.Version {
			case "2019":
				return bkWindowsAMD64_2019, nil
			case "2019-core":
				return bkWindowsAMD64_2019_Core, nil
			case "", "2022": // default is 2022
				return bkWindowsAMD64_2022, nil
			case "2022-core":
				return bkWindowsAMD64_2022_Core, nil
			default:
				return StepAgent{}, fmt.Errorf("unknown windows version: %s", os.Version)
			}
		}
	case define.ARM64:
		switch os.Type {
		case define.Linux:
			switch os.Distro {
			case "", "ubuntu": // default is Ubuntu
				switch os.Version {
				case "20.04":
					return bkUbuntuARM64_2004, nil
				case "22.04":
					return bkUbuntuARM64_2204, nil
				case "", "24.04": // default is 24.04
					return bkUbuntuARM64_2404, nil
				default:
					return StepAgent{}, fmt.Errorf("unknown ubuntu version: %s", os.Version)
				}
			case "rhel":
				switch os.Version {
				case "", "8": // default is 8
					return bkRHELARM64_8, nil
				default:
					return StepAgent{}, fmt.Errorf("unknown rhel version: %s", os.Version)
				}
			}
		case define.Kubernetes:
			return bkUbuntuARM64_2404, nil
		case define.Windows:
			return StepAgent{}, errors.New("windows ARM support not enabled")
		case define.Darwin:
			return StepAgent{}, errors.New("darwin ARM support not enabled")
		default:
			return StepAgent{}, fmt.Errorf("unknown OS type: %s", os.Type)
		}
	default:
		return StepAgent{}, fmt.Errorf("unknown architecture: %s", os.Arch)
	}
	return StepAgent{}, fmt.Errorf("case missing for %+v", os)
}