config

package
v0.2.21 Latest Latest
Warning

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

Go to latest
Published: May 6, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultBackend       = "docker"
	DefaultMaxRunners    = 10
	DefaultRunnerImage   = "ghcr.io/actions/actions-runner:latest"
	DefaultRunnerGroup   = "default"
	DefaultDockerSocket  = "/var/run/docker.sock"
	DefaultDinD          = true
	DefaultTartRunnerDir = "/Users/admin/actions-runner"
	DefaultLogLevel      = "info"
	DefaultLogFormat     = "text"
	DefaultHealthPort    = 8080
	DefaultSystemName    = "dockerscaleset"

	// DefaultSharedVolumeCleanupInterval is the period between shared-volume
	// TTL sweeps when SharedVolumeTTL > 0 and no explicit interval is set.
	DefaultSharedVolumeCleanupInterval = 6 * time.Hour
)

Default values for configuration fields. All flag definitions, config templates, and fallback logic should reference these constants instead of hardcoding values.

Variables

This section is empty.

Functions

func BuildLabels added in v0.2.3

func BuildLabels(name string, labels []string) []scaleset.Label

BuildLabels converts string labels to scaleset.Label slice. If no labels are provided, uses the scale set name as default.

func NewLogger added in v0.2.3

func NewLogger(level, format string) *slog.Logger

NewLogger creates a structured logger with the given level and format, and sets it as the process-wide default.

func NewScaleSetLogger added in v0.2.4

func NewScaleSetLogger(level, format string, name string, index int) *slog.Logger

NewScaleSetLogger creates a logger with a colored prefix for the given scale set. The color is determined by the index, cycling through the palette.

func NewScalesetClient added in v0.2.3

func NewScalesetClient(registrationURL, token string, logger *slog.Logger) (*scaleset.Client, error)

NewScalesetClient creates a scaleset.Client using PAT authentication.

func NewSystemInfo added in v0.2.3

func NewSystemInfo(scaleSetID int, version string) scaleset.SystemInfo

NewSystemInfo returns metadata for the scaleset client user agent.

Types

type Config

type Config struct {
	// Global settings (not inherited by scale sets)
	LogLevel   string `mapstructure:"log-level"`
	LogFormat  string `mapstructure:"log-format"`
	HealthPort int    `mapstructure:"health-port"`
	DryRun     bool   `mapstructure:"dry-run"`

	// Default values for scale sets + single-mode fields.
	// Squashed so TOML keys (url, name, backend, etc.) stay at the top level.
	Defaults ScaleSetConfig `mapstructure:",squash"`

	// Multi-scaleset mode: each entry inherits from Defaults.
	ScaleSets []ScaleSetConfig `mapstructure:"scaleset"`
}

Config holds the complete runscaler configuration.

Global-only fields (LogLevel, LogFormat, HealthPort, DryRun) are never inherited by scale sets. The Defaults field is squashed so its keys appear at the TOML top level; it doubles as the single-mode config when no [scaleset] entries exist.

func (*Config) ResolveScaleSets

func (c *Config) ResolveScaleSets() []ScaleSetConfig

ResolveScaleSets returns the resolved list of scale set configs. If [scaleset] entries exist, each inherits unset fields from Defaults. Otherwise, Defaults itself is returned as a single-element slice.

type DockerConfig added in v0.2.3

type DockerConfig struct {
	Socket       string `mapstructure:"socket"`
	DinD         *bool  `mapstructure:"dind"` // pointer: nil = inherit default (true)
	SharedVolume string `mapstructure:"shared-volume"`
	Memory       int    `mapstructure:"memory"`   // Memory limit in MB (0 = unlimited)
	CPU          int    `mapstructure:"cpu"`      // CPU cores (0 = unlimited)
	Platform     string `mapstructure:"platform"` // e.g. "linux/amd64" to force architecture

	// SharedVolumeTTL deletes files in shared-volume older than this duration.
	// 0 (default) disables TTL cleanup. Accepts Go duration strings, e.g. "168h".
	SharedVolumeTTL time.Duration `mapstructure:"shared-volume-ttl"`
	// SharedVolumeCleanupInterval is how often the TTL sweep runs while
	// runscaler is up. Ignored when SharedVolumeTTL is 0. Defaults to
	// DefaultSharedVolumeCleanupInterval when unset.
	SharedVolumeCleanupInterval time.Duration `mapstructure:"shared-volume-cleanup-interval"`
}

DockerConfig holds Docker-specific backend settings.

type ScaleSetConfig

type ScaleSetConfig struct {
	RegistrationURL string   `mapstructure:"url"`
	ScaleSetName    string   `mapstructure:"name"`
	Token           string   `mapstructure:"token"`
	MaxRunners      int      `mapstructure:"max-runners"`
	MinRunners      int      `mapstructure:"min-runners"`
	Labels          []string `mapstructure:"labels"`
	RunnerGroup     string   `mapstructure:"runner-group"`
	RunnerImage     string   `mapstructure:"runner-image"`
	Backend         string   `mapstructure:"backend"`

	// Docker backend settings
	Docker DockerConfig `mapstructure:"docker"`

	// Tart VM backend settings
	Tart TartConfig `mapstructure:"tart"`
}

ScaleSetConfig holds per-scale-set configuration. In multi-mode, fields left at their zero value inherit from Config.Defaults.

func (*ScaleSetConfig) IsDinD

func (ss *ScaleSetConfig) IsDinD() bool

IsDinD returns whether Docker-in-Docker is enabled for this scale set.

func (*ScaleSetConfig) IsTart

func (ss *ScaleSetConfig) IsTart() bool

IsTart returns whether this scale set uses the Tart VM backend.

func (*ScaleSetConfig) Validate

func (ss *ScaleSetConfig) Validate() error

Validate checks required fields and logical constraints for a scale set.

type TartConfig added in v0.2.3

type TartConfig struct {
	Home      string `mapstructure:"home"`       // TART_HOME for tart CLI ("" = default ~/.tart)
	RunnerDir string `mapstructure:"runner-dir"` // Runner binary path in VM
	CPU       int    `mapstructure:"cpu"`        // Number of CPU cores (0 = use image default)
	Memory    int    `mapstructure:"memory"`     // Memory in MB (0 = use image default)
	PoolSize  int    `mapstructure:"pool-size"`  // Pre-warmed VM count (0 = disabled)
}

TartConfig holds Tart VM-specific backend settings.

Jump to

Keyboard shortcuts

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