build

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2026 License: AGPL-3.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AvailableVirtualMachineConfigsForCurrentHostOSByVirtualizationEngine added in v0.4.0

func AvailableVirtualMachineConfigsForCurrentHostOSByVirtualizationEngine() map[VirtualizationEngine][]VirtualMachineConfig

func BuildArtifactsExist added in v0.4.0

func BuildArtifactsExist(config VirtualMachineConfig) (bool, error)

func BuildArtifactsExistQuiet added in v0.4.0

func BuildArtifactsExistQuiet(config VirtualMachineConfig) (bool, error)

func DependencyReconciliation

func DependencyReconciliation(vmconfig VirtualMachineConfig)

func GenerateVirtualMachineSlug

func GenerateVirtualMachineSlug(config *VirtualMachineConfig) string

func GetVirtualMachineNameWithType

func GetVirtualMachineNameWithType(config VirtualMachineConfig) string

func GetVmCpuCount added in v0.3.0

func GetVmCpuCount(config VirtualMachineConfig) int

GetVmCpuCount returns the resolved CPU count for the given VM config.

func GetVmMemoryMB added in v0.3.0

func GetVmMemoryMB(config VirtualMachineConfig) int

GetVmMemoryMB returns the resolved memory allocation in megabytes for the given VM config.

func GroupVirtualMachineConfigsByVirtualizationEngine added in v0.4.0

func GroupVirtualMachineConfigsByVirtualizationEngine(configs []VirtualMachineConfig) map[VirtualizationEngine][]VirtualMachineConfig

func RemoveBuildArtifacts

func RemoveBuildArtifacts(artifacts []string)

func RemoveBuildArtifactsForConfig

func RemoveBuildArtifactsForConfig(config VirtualMachineConfig)

func RunBashScript

func RunBashScript(config RunProcessConfig) error

func RunBuildScript

func RunBuildScript(config VirtualMachineConfig, executable string, args []string) error

func RunCliCommand added in v0.2.0

func RunCliCommand(workdir string, command string, args []string) ([]byte, error)

func RunExternalProcess

func RunExternalProcess(config RunProcessConfig) (context.Context, error)

func RunExternalProcessWithRetries

func RunExternalProcessWithRetries(config RunProcessConfig) context.Context

func RunFfmpegVideoGenerationProcess

func RunFfmpegVideoGenerationProcess(vm_config VirtualMachineConfig, ctx context.Context, process_config RunProcessConfig, recording_config *VncRecordingConfig) context.Context

func RunHypervUbuntuBuildOnWindows added in v0.3.0

func RunHypervUbuntuBuildOnWindows(config VirtualMachineConfig) error

RunHypervUbuntuBuildOnWindows builds an Ubuntu VM using Hyper-V on Windows.

func RunHypervWindowsBuildOnWindows added in v0.2.0

func RunHypervWindowsBuildOnWindows(config VirtualMachineConfig) error

RunHypervWindowsBuildOnWindows builds a Windows 11 VM using Hyper-V on Windows. It retries early failures to handle the transient "No ip address" race condition in the Packer HyperV plugin: StepRun calls GetHostAdapterIpAddressForSwitch with no retry, and attaching a new VM to the Default Switch can briefly disrupt the host adapter's IPv4 address. This failure always occurs within the first ~30 seconds; real build failures take 30+ minutes. Retries are skipped for long-running failures to avoid wasting CI time on genuine errors.

func RunPowerShellScript added in v0.2.0

func RunPowerShellScript(config RunProcessConfig) error

func RunQemuUbuntuBuildOnMacOS

func RunQemuUbuntuBuildOnMacOS(config VirtualMachineConfig) error

func RunQemuWindowsBuildOnMacOS

func RunQemuWindowsBuildOnMacOS(config VirtualMachineConfig) error

func RunVirtualBoxWindowsBuildOnWindows added in v0.2.0

func RunVirtualBoxWindowsBuildOnWindows(config VirtualMachineConfig) error

RunVirtualBoxWindowsBuildOnWindows builds a Windows 11 VM using VirtualBox on Windows.

func RunVncSnapshotProcess

func RunVncSnapshotProcess(vm_config VirtualMachineConfig, ctx context.Context, process_config RunProcessConfig, recording_config *VncRecordingConfig) context.Context

Types

type Directories

type Directories struct {
	WorkingDir string
	ProjectDir string
	CacheDir   string
}

func GetDirectoriesInstance

func GetDirectoriesInstance() *Directories

func (*Directories) GetDirectories

func (u *Directories) GetDirectories() Directories

type HostOsType added in v0.2.0

type HostOsType string
const (
	HostOsLinux   HostOsType = "debian"
	HostOsWindows HostOsType = "windows"
	HostOsDarwin  HostOsType = "darwin"
)

func GetCurrentHostOs added in v0.2.0

func GetCurrentHostOs() HostOsType

type ProgressBarListener

type ProgressBarListener struct {
	// contains filtered or unexported fields
}

ProgressBarListener implements getter.ProgressListener using an mpb container so that concurrent downloads render their bars cleanly on separate lines.

func (*ProgressBarListener) TrackProgress

func (p *ProgressBarListener) TrackProgress(src string, current, total int64, r io.ReadCloser) io.ReadCloser

type RunProcessConfig

type RunProcessConfig struct {
	ExecutablePath     string
	Args               []string
	WorkingDir         string
	Timeout            time.Duration
	DelayBeforeStart   time.Duration
	Context            context.Context
	FailOnError        bool
	Retries            int
	RetryInterval      time.Duration
	InterruptRetryChan chan bool
}

type VirtualMachineConfig

type VirtualMachineConfig struct {
	OS                     string
	Arch                   string
	UbuntuType             string
	VncPort                int
	Slug                   string
	ExpectedBuildArtifacts []string
	NoCache                bool
	HostOs                 HostOsType
	VirtualizationEngine   VirtualizationEngine
	Cpus                   int
	// MemoryMB is the desired VM memory in megabytes.
	// When 0 (the default), memory is calculated automatically:
	// max(4096, totalSystemMemoryMB - 4096).
	MemoryMB int
	Headless bool
}

func AvailableVirtualMachineConfigs

func AvailableVirtualMachineConfigs() []VirtualMachineConfig

func AvailableVirtualMachineConfigsForCurrentHostOS added in v0.2.0

func AvailableVirtualMachineConfigsForCurrentHostOS() []VirtualMachineConfig

func AvailableVirtualMachineConfigsForHostOS added in v0.4.0

func AvailableVirtualMachineConfigsForHostOS(hostOs HostOsType) []VirtualMachineConfig

type VirtualizationEngine added in v0.2.0

type VirtualizationEngine string
const (
	VirtualizationEngineQemu       VirtualizationEngine = "qemu"
	VirtualizationEngineUtm        VirtualizationEngine = "utm"
	VirtualizationEngineHyperv     VirtualizationEngine = "hyperv"
	VirtualizationEngineVirtualBox VirtualizationEngine = "virtualbox"
)

func CurrentHostVirtualizationEngines added in v0.4.0

func CurrentHostVirtualizationEngines() []VirtualizationEngine

func VirtualizationEnginesForVirtualMachineConfigs added in v0.4.0

func VirtualizationEnginesForVirtualMachineConfigs(configs []VirtualMachineConfig) []VirtualizationEngine

type VncRecordingConfig

type VncRecordingConfig struct {
	OutputFile   string
	OutputFolder string
	Password     string
}

type WebFileDependency

type WebFileDependency struct {
	LocalPath        string
	Checksum         string
	Source           string
	RelatedVmConfigs []VirtualMachineConfig
	// BeforeHook is a function that is called before downloading the dependency. It can be used to modify the Source URL dynamically.
	BeforeHook func() (string, error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL