env

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 7, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Process

func Process() error

Process the environment variables set for caesium.

Types

type ByteSize

type ByteSize int64

func (*ByteSize) Decode

func (b *ByteSize) Decode(value string) error

func (ByteSize) Int64

func (b ByteSize) Int64() int64

type Environment

type Environment struct {
	LogLevel          string `default:"info" split_words:"true"`
	LogFormat         string `default:"json" split_words:"true"`
	LogConsoleEnabled bool   `default:"true" split_words:"true"`
	Port              int    `default:"8080"`
	DockerHost        string `default:"" split_words:"true"`
	// DockerSubpathHelperImage is the image the docker engine uses for the
	// short-lived helper container that creates a VolumeMount.SubPath
	// sub-directory before a step mounts it (internal/atom/docker's
	// ensureVolumeSubPath). Defaults to the repo's pinned alpine:3.23 reference
	// (internal/guardrails/guardrails_test.go); override it for an
	// air-gapped or private-registry-only install so the helper never needs
	// to reach Docker Hub.
	DockerSubpathHelperImage       string        `envconfig:"DOCKER_SUBPATH_HELPER_IMAGE" default:"alpine:3.23"`
	KubernetesConfig               string        `default:"" split_words:"true"`
	KubernetesNamespace            string        `default:"default" split_words:"true"`
	PodmanURI                      string        `default:"" split_words:"true"`
	NodeAddress                    string        `default:"127.0.0.1:9001" split_words:"true"`
	NodeLabels                     string        `default:"" split_words:"true"`
	DatabaseNodes                  []string      `default:"" split_words:"true"`
	APIExternalURL                 string        `envconfig:"API_EXTERNAL_URL" default:""`
	DatabasePath                   string        `default:"/var/lib/caesium/dqlite" split_words:"true"`
	DatabaseType                   string        `default:"internal" split_words:"true"`
	DatabaseDSN                    string        `default:"host=postgres user=postgres password=postgres dbname=caesium port=5432 sslmode=disable" split_words:"true"`
	DatabaseMaxOpenConns           int           `default:"4" split_words:"true"`
	DatabaseMaxIdleConns           int           `default:"2" split_words:"true"`
	DatabaseShards                 int           `default:"1" split_words:"true"`
	DatabaseVoters                 int           `default:"3" split_words:"true"`
	DatabaseStandbys               int           `default:"3" split_words:"true"`
	DatabaseConsoleEnabled         bool          `default:"false" split_words:"true"`
	ManualTriggerAPIKey            string        `envconfig:"MANUAL_TRIGGER_API_KEY" default:""`
	EventIngestAPIKey              string        `envconfig:"EVENT_INGEST_API_KEY" default:""`
	MaxParallelTasks               int           `split_words:"true"`
	TaskFailurePolicy              string        `default:"halt" split_words:"true"`
	TaskTimeout                    time.Duration `default:"0" split_words:"true"`
	ExecutionMode                  string        `default:"local" split_words:"true"`
	WorkerEnabled                  bool          `default:"true" split_words:"true"`
	WorkerPollInterval             time.Duration `default:"15s" split_words:"true"`
	WorkerReclaimInterval          time.Duration `default:"30s" split_words:"true"`
	WorkerLeaseTTL                 time.Duration `default:"5m" split_words:"true"`
	WorkerLeaseRenewInterval       time.Duration `default:"0" split_words:"true"`
	WorkerPoolSize                 int           `default:"4" split_words:"true"`
	ShutdownGracePeriod            time.Duration `envconfig:"SHUTDOWN_GRACE_PERIOD" default:"30s"`
	InternalWakeupToken            string        `default:"" split_words:"true"`
	WakeupFanoutMode               string        `default:"full" split_words:"true"`
	AtomPollInterval               time.Duration `default:"1s" split_words:"true"`
	JobdefGitEnabled               bool          `envconfig:"JOBDEF_GIT_ENABLED" default:"false"`
	JobdefGitOnce                  bool          `envconfig:"JOBDEF_GIT_ONCE" default:"false"`
	JobdefGitInterval              time.Duration `envconfig:"JOBDEF_GIT_INTERVAL" default:"1m"`
	JobdefGitSources               GitSources    `envconfig:"JOBDEF_GIT_SOURCES"`
	JobdefSecretsEnableEnv         bool          `envconfig:"JOBDEF_SECRETS_ENABLE_ENV" default:"true"`
	JobdefSecretsEnableKubernetes  bool          `envconfig:"JOBDEF_SECRETS_ENABLE_KUBERNETES" default:"false"`
	JobdefSecretsKubeConfig        string        `envconfig:"JOBDEF_SECRETS_KUBECONFIG"`
	JobdefSecretsKubeNamespace     string        `envconfig:"JOBDEF_SECRETS_KUBE_NAMESPACE" default:"default"`
	JobdefSecretsVaultAddress      string        `envconfig:"JOBDEF_SECRETS_VAULT_ADDRESS"`
	JobdefSecretsVaultToken        string        `envconfig:"JOBDEF_SECRETS_VAULT_TOKEN"`
	JobdefSecretsVaultNamespace    string        `envconfig:"JOBDEF_SECRETS_VAULT_NAMESPACE"`
	JobdefSecretsVaultCACert       string        `envconfig:"JOBDEF_SECRETS_VAULT_CA_CERT"`
	JobdefSecretsVaultSkipVerify   bool          `envconfig:"JOBDEF_SECRETS_VAULT_SKIP_VERIFY" default:"false"`
	JobdefSecretsIdentityHMACKeys  string        `envconfig:"JOBDEF_SECRETS_IDENTITY_HMAC_KEYS" default:""`
	JobdefSecretsIdentityHMACKeyID string        `envconfig:"JOBDEF_SECRETS_IDENTITY_HMAC_KEY_ID" default:""`
	CacheEnabled                   bool          `default:"false" split_words:"true"`
	CacheTTL                       time.Duration `default:"24h" split_words:"true"`
	CachePruneInterval             time.Duration `default:"1h" split_words:"true"`
	CacheMaxEntries                int           `default:"10000" split_words:"true"`
	// CachePinDigests is the global default for resolving image tags to content
	// digests and folding the digest (not the mutable tag) into the cache key.
	// Off by default so steady-state runs pay no registry round-trip; a job or
	// step may opt in via cache.pinDigests. When on, a tag that moves to a new
	// digest produces a cache miss instead of a stale hit.
	CachePinDigests bool `envconfig:"CACHE_PIN_DIGESTS" default:"false"`
	// CacheDigestTTL bounds how long a resolved tag->digest mapping is reused
	// before it is re-resolved. Short by design so steady-state runs avoid the
	// registry round-trip while a moving tag is still detected promptly.
	CacheDigestTTL time.Duration `envconfig:"CACHE_DIGEST_TTL" default:"5m"`
	// OutputRefMaxBytes bounds the payload size a step may reference via the
	// ##caesium::output-ref large-object protocol, checked against the size the
	// producer reports in the reference marker. 0 (the default) means unbounded —
	// the reference itself is tiny (path + digest) and never enters dqlite, so
	// this is an operator guard against a runaway producer pinning arbitrarily
	// large BYO storage, not a correctness control. A reference whose reported
	// size exceeds this is rejected and the step's other outputs still apply.
	OutputRefMaxBytes ByteSize `envconfig:"OUTPUT_REF_MAX_BYTES" default:"0"`
	// FanOutMaxPartitions is the server hard cap on partitions a producer may
	// emit. The effective cap for a step is min(fanOut.maxPartitions, this).
	// Overflow fails the producing task; the list is never truncated.
	FanOutMaxPartitions            int           `envconfig:"FANOUT_MAX_PARTITIONS" default:"1024"`
	OpenLineageEnabled             bool          `envconfig:"OPEN_LINEAGE_ENABLED" default:"false"`
	OpenLineageTransport           string        `envconfig:"OPEN_LINEAGE_TRANSPORT" default:"http"`
	OpenLineageURL                 string        `envconfig:"OPEN_LINEAGE_URL" default:""`
	OpenLineageNamespace           string        `envconfig:"OPEN_LINEAGE_NAMESPACE" default:"caesium"`
	OpenLineageHeaders             string        `envconfig:"OPEN_LINEAGE_HEADERS" default:""`
	OpenLineageFilePath            string        `envconfig:"OPEN_LINEAGE_FILE_PATH" default:"/var/lib/caesium/lineage.ndjson"`
	OpenLineageTimeout             time.Duration `envconfig:"OPEN_LINEAGE_TIMEOUT" default:"5s"`
	OpenLineageRetryAttempts       uint          `envconfig:"OPEN_LINEAGE_RETRY_ATTEMPTS" default:"3"`
	WebhookMaxBodySize             ByteSize      `envconfig:"WEBHOOK_MAX_BODY_SIZE" default:"1MB"`
	WebhookRateLimitPerMinute      int           `envconfig:"WEBHOOK_RATE_LIMIT_PER_MINUTE" default:"120"`
	WebhookRateLimitBurst          int           `envconfig:"WEBHOOK_RATE_LIMIT_BURST" default:"20"`
	EventRetention                 time.Duration `envconfig:"EVENT_RETENTION" default:"168h"`
	WebhookEventRetention          time.Duration `envconfig:"WEBHOOK_EVENT_RETENTION" default:"168h"`
	MaxTriggerDepth                int           `envconfig:"MAX_TRIGGER_DEPTH" default:"10"`
	RateLimitPrunerEnabled         bool          `envconfig:"RATE_LIMIT_PRUNER_ENABLED" default:"false"`
	RateLimitPruneInterval         time.Duration `envconfig:"RATE_LIMIT_PRUNE_INTERVAL" default:"1m"`
	RunQueueEnabled                bool          `envconfig:"RUN_QUEUE_ENABLED" default:"false"`
	RunQueueDequeuerEnabled        bool          `envconfig:"RUN_QUEUE_DEQUEUER_ENABLED" default:"false"`
	RunQueueDequeueInterval        time.Duration `envconfig:"RUN_QUEUE_DEQUEUE_INTERVAL" default:"1s"`
	RunQueueClaimStaleAfter        time.Duration `envconfig:"RUN_QUEUE_CLAIM_STALE_AFTER" default:"2m"`
	RunQueueMaxDepth               int           `envconfig:"RUN_QUEUE_MAX_DEPTH" default:"100"`
	FreshnessEnabled               bool          `envconfig:"FRESHNESS_ENABLED" default:"false"`
	FreshnessEvalInterval          time.Duration `envconfig:"FRESHNESS_EVAL_INTERVAL" default:"1m"`
	FreshnessMaxDerivationsPerTick int           `envconfig:"FRESHNESS_MAX_DERIVATIONS_PER_TICK" default:"50"`
	ContractEnforcement            string        `envconfig:"CONTRACT_ENFORCEMENT" default:""`
	ContractDeprecationWindow      time.Duration `envconfig:"CONTRACT_DEPRECATION_WINDOW" default:"336h"`

	// Notification Watcher
	NotificationWatcherInterval time.Duration `envconfig:"NOTIFICATION_WATCHER_INTERVAL" default:"15s"`

	// Authentication & Authorization
	AuthMode                     string        `envconfig:"AUTH_MODE" default:"none"` // none, api-key
	AuthKeyHashSecret            string        `envconfig:"AUTH_KEY_HASH_SECRET" default:""`
	AuthRequireTLS               bool          `envconfig:"AUTH_REQUIRE_TLS" default:"true"`
	TLSCert                      string        `envconfig:"TLS_CERT" default:""`
	TLSKey                       string        `envconfig:"TLS_KEY" default:""`
	TrustedProxies               string        `envconfig:"TRUSTED_PROXIES" default:""`
	AuthRateLimitPerMinute       int           `envconfig:"AUTH_RATE_LIMIT_PER_MINUTE" default:"10"`
	AuthRateLimitBurstAlert      int           `envconfig:"AUTH_RATE_LIMIT_BURST_ALERT" default:"100"`
	AuthPublicBaseURL            string        `envconfig:"AUTH_PUBLIC_BASE_URL" default:""`
	AuthSessionIdleTTL           time.Duration `envconfig:"AUTH_SESSION_IDLE_TTL" default:"8h"`
	AuthSessionAbsoluteTTL       time.Duration `envconfig:"AUTH_SESSION_ABSOLUTE_TTL" default:"24h"`
	AuthSessionCookieName        string        `envconfig:"AUTH_SESSION_COOKIE_NAME" default:"caesium_session"`
	AuthRoleMapping              string        `envconfig:"AUTH_ROLE_MAPPING" default:""`
	AuthDefaultRole              string        `envconfig:"AUTH_DEFAULT_ROLE" default:""`
	AuthOIDCEnabled              bool          `envconfig:"AUTH_OIDC_ENABLED" default:"false"`
	AuthOIDCIssuerURL            string        `envconfig:"AUTH_OIDC_ISSUER_URL" default:""`
	AuthOIDCClientID             string        `envconfig:"AUTH_OIDC_CLIENT_ID" default:""`
	AuthOIDCClientSecret         string        `envconfig:"AUTH_OIDC_CLIENT_SECRET" default:""`
	AuthOIDCScopes               string        `envconfig:"AUTH_OIDC_SCOPES" default:"openid profile email groups"`
	AuthOIDCGroupsClaim          string        `envconfig:"AUTH_OIDC_GROUPS_CLAIM" default:"groups"`
	AuthOIDCRedirectURL          string        `envconfig:"AUTH_OIDC_REDIRECT_URL" default:""`
	AuthSAMLEnabled              bool          `envconfig:"AUTH_SAML_ENABLED" default:"false"`
	AuthSAMLIDPMetadataURL       string        `envconfig:"AUTH_SAML_IDP_METADATA_URL" default:""`
	AuthSAMLIDPMetadataXML       string        `envconfig:"AUTH_SAML_IDP_METADATA_XML" default:""`
	AuthSAMLIDPMetadataFile      string        `envconfig:"AUTH_SAML_IDP_METADATA_FILE" default:""`
	AuthSAMLSPEntityID           string        `envconfig:"AUTH_SAML_SP_ENTITY_ID" default:""`
	AuthSAMLSPCert               string        `envconfig:"AUTH_SAML_SP_CERT" default:""`
	AuthSAMLSPKey                string        `envconfig:"AUTH_SAML_SP_KEY" default:""`
	AuthSAMLACSURL               string        `envconfig:"AUTH_SAML_ACS_URL" default:""`
	AuthSAMLMetadataURL          string        `envconfig:"AUTH_SAML_METADATA_URL" default:""`
	AuthSAMLGroupsAttribute      string        `envconfig:"AUTH_SAML_GROUPS_ATTRIBUTE" default:"groups"`
	AuthLDAPEnabled              bool          `envconfig:"AUTH_LDAP_ENABLED" default:"false"`
	AuthLDAPURL                  string        `envconfig:"AUTH_LDAP_URL" default:""`
	AuthLDAPStartTLS             bool          `envconfig:"AUTH_LDAP_START_TLS" default:"false"`
	AuthLDAPBindDN               string        `envconfig:"AUTH_LDAP_BIND_DN" default:""`
	AuthLDAPBindPassword         string        `envconfig:"AUTH_LDAP_BIND_PASSWORD" default:""`
	AuthLDAPUserBaseDN           string        `envconfig:"AUTH_LDAP_USER_BASE_DN" default:""`
	AuthLDAPUserFilter           string        `envconfig:"AUTH_LDAP_USER_FILTER" default:"(uid={username})"`
	AuthLDAPGroupBaseDN          string        `envconfig:"AUTH_LDAP_GROUP_BASE_DN" default:""`
	AuthLDAPGroupFilter          string        `envconfig:"AUTH_LDAP_GROUP_FILTER" default:""`
	AuthLDAPGroupAttribute       string        `envconfig:"AUTH_LDAP_GROUP_ATTRIBUTE" default:"cn"`
	AuthLDAPUsernameAttribute    string        `envconfig:"AUTH_LDAP_USERNAME_ATTRIBUTE" default:"uid"`
	AuthLDAPEmailAttribute       string        `envconfig:"AUTH_LDAP_EMAIL_ATTRIBUTE" default:"mail"`
	AuthLDAPDisplayNameAttribute string        `envconfig:"AUTH_LDAP_DISPLAY_NAME_ATTRIBUTE" default:"displayName"`
	AuthLDAPTimeout              time.Duration `envconfig:"AUTH_LDAP_TIMEOUT" default:"10s"`

	// Run-owner coordination (Phase 2).
	// CAESIUM_RUN_OWNER_ENABLED enables the run-owner coordination mode.
	// Default false — the system behaves byte-identically to Phase 1 when off.
	RunOwnerEnabled bool `envconfig:"RUN_OWNER_ENABLED" default:"false"`
	// CAESIUM_RUN_LEASE_TTL is how long an owner holds a run lease before
	// another node may take over.  Default 30s; must be > 0 when owner mode
	// is enabled.
	RunLeaseTTL time.Duration `envconfig:"RUN_LEASE_TTL" default:"30s"`

	// CAESIUM_RUN_OWNER_DISPATCH_INTERVAL is the polling cadence for the
	// per-node owner dispatch loop.  Smaller values reduce task-start latency
	// at the cost of more DB reads per second.  Default 1s.
	RunOwnerDispatchInterval time.Duration `envconfig:"RUN_OWNER_DISPATCH_INTERVAL" default:"1s"`
	// CAESIUM_RUN_OWNER_DISPATCH_BATCH caps the number of tasks dispatched per
	// tick per owned run.  Prevents a large fan-out from stalling the loop.
	// Default 64.
	RunOwnerDispatchBatch int `envconfig:"RUN_OWNER_DISPATCH_BATCH" default:"64"`
	// CAESIUM_RUN_OWNER_DISPATCH_DEADLINE is the task execution deadline added
	// to time.Now() in each DispatchRequest.  Workers use this to bound how long
	// they hold the claim before returning it.  Default 5m.
	RunOwnerDispatchDeadline time.Duration `envconfig:"RUN_OWNER_DISPATCH_DEADLINE" default:"5m"`

	// CAESIUM_INTERNAL_PORT is the port for the dedicated internal mTLS listener
	// that hosts the run-owner endpoints (/internal/dispatch, /internal/complete).
	// It is separate from the public API port so the public server can remain
	// plain HTTP while node-to-node coordination traffic is mutually
	// authenticated.  Only bound when owner mode is enabled.  Default 8443.
	InternalPort int `envconfig:"INTERNAL_PORT" default:"8443"`
	// CAESIUM_INTERNAL_MTLS_CA/CERT/KEY are PEM file paths configuring mutual TLS
	// on the internal listener.  CA validates peer (client) certificates;
	// CERT/KEY are this node's own identity — presented both as the listener's
	// server certificate and as the client certificate when this node POSTs to a
	// peer's internal endpoints.  All three are required when owner mode is
	// enabled (enforced at startup).
	InternalMTLSCA   string `envconfig:"INTERNAL_MTLS_CA" default:""`
	InternalMTLSCert string `envconfig:"INTERNAL_MTLS_CERT" default:""`
	InternalMTLSKey  string `envconfig:"INTERNAL_MTLS_KEY" default:""`
	// CAESIUM_INTERNAL_MTLS_TOKEN optionally separates the auto-provisioning
	// PKI token from CAESIUM_INTERNAL_WAKEUP_TOKEN. When empty, the wakeup token
	// is used for HKDF key derivation.
	InternalMTLSToken string `envconfig:"INTERNAL_MTLS_TOKEN" default:""`
	// Auto-provisioned internal mTLS rotation settings. These apply only when
	// owner mode is on and explicit mTLS files are not provided.
	InternalMTLSCATTL             time.Duration `envconfig:"INTERNAL_MTLS_CA_TTL" default:"43800h"`
	InternalMTLSLeafTTL           time.Duration `envconfig:"INTERNAL_MTLS_LEAF_TTL" default:"720h"`
	InternalMTLSLeafRenewBefore   time.Duration `envconfig:"INTERNAL_MTLS_LEAF_RENEW_BEFORE" default:"240h"`
	InternalMTLSCARenewBefore     time.Duration `envconfig:"INTERNAL_MTLS_CA_RENEW_BEFORE" default:"720h"`
	InternalMTLSEnrollmentTimeout time.Duration `envconfig:"INTERNAL_MTLS_ENROLLMENT_TIMEOUT" default:"2m"`

	// Run-owner checkpointing (Phase 2 B3).  The owner persists an in-memory
	// state checkpoint whichever comes first of RUN_CHECKPOINT_EVENTS terminal
	// transitions or RUN_CHECKPOINT_INTERVAL elapsed.  RUN_CHECKPOINT_FULL_EVERY
	// is the number of checkpoints between full snapshots (intervening ones are
	// deltas); v1 writes full snapshots only, so it is currently advisory.
	RunCheckpointEvents    int           `envconfig:"RUN_CHECKPOINT_EVENTS" default:"100"`
	RunCheckpointInterval  time.Duration `envconfig:"RUN_CHECKPOINT_INTERVAL" default:"2s"`
	RunCheckpointFullEvery int           `envconfig:"RUN_CHECKPOINT_FULL_EVERY" default:"10"`

	// CAESIUM_RUN_OWNER_IN_MEMORY gates the B3 in-memory advancement path: the
	// owner advances the DAG in memory (run.RunState), writes only terminal
	// task_runs rows (no per-transition predecessor UPDATEs), and checkpoints for
	// fast failover.  Default false — when off, completions take the proven
	// SQL-advancement path (B2), byte-identical.  Requires RUN_OWNER_ENABLED.
	RunOwnerInMemory bool `envconfig:"RUN_OWNER_IN_MEMORY" default:"false"`

	// Agent-in-the-loop remediation (Phase 0). The whole feature is gated behind
	// CAESIUM_AGENT_REMEDIATION_ENABLED — a deployment that never enables it pays
	// nothing (the leader-gated incident subscriber and timer sweeper are not
	// started). Default false.
	AgentRemediationEnabled bool `envconfig:"AGENT_REMEDIATION_ENABLED" default:"false"`
	// CAESIUM_AGENT_INCIDENT_COOLDOWN suppresses re-opening an incident for the
	// same (job, task, class) key within this window after the previous one
	// closed, damping flapping. Default 15m.
	AgentIncidentCooldown time.Duration `envconfig:"AGENT_INCIDENT_COOLDOWN" default:"15m"`
	// CAESIUM_AGENT_MAX_CONCURRENT_SESSIONS caps globally-active agent sessions,
	// enforced by the leader-gated session dispatcher (not per-process, which an
	// N-node cluster would multiply). Default 1.
	AgentMaxConcurrentSessions int `envconfig:"AGENT_MAX_CONCURRENT_SESSIONS" default:"1"`
	// CAESIUM_AGENT_SESSION_TIMEOUT is the wall-clock budget a single agent
	// session may run before it is forcibly stopped and marked timed_out.
	AgentSessionTimeout time.Duration `envconfig:"AGENT_SESSION_TIMEOUT" default:"10m"`
	// CAESIUM_AGENT_DEFAULT_PROFILE optionally names a bootstrap AgentProfile the
	// session supervisor launches and whose playbook the triage bundle surfaces.
	AgentDefaultProfile string `envconfig:"AGENT_DEFAULT_PROFILE" default:""`
	// CAESIUM_AGENT_APPROVAL_REDRIVE_INTERVAL is how often the leader sweeps for
	// approved tier-3 actions that were never dispatched (a process death between
	// the decision commit and the execute). Default 30s.
	AgentApprovalRedriveInterval time.Duration `envconfig:"AGENT_APPROVAL_REDRIVE_INTERVAL" default:"30s"`
	// CAESIUM_AGENT_APPROVAL_REDRIVE_GRACE is how long an approved action must
	// have sat before the sweep picks it up. It exists so the sweep does not race
	// the synchronous dispatch that normally follows a decision; it must
	// comfortably exceed one dispatch. Default 2m.
	AgentApprovalRedriveGrace time.Duration `envconfig:"AGENT_APPROVAL_REDRIVE_GRACE" default:"2m"`
}

Environment defines the environment variables used by caesium.

func Variables

func Variables() Environment

Variables returns the processed environment variables.

func (Environment) SSOEnabled

func (e Environment) SSOEnabled() bool

SSOEnabled reports whether any SSO provider is configured.

type GitBasicAuth

type GitBasicAuth struct {
	Username    string `json:"username,omitempty"`
	Password    string `json:"password,omitempty"`
	UsernameRef string `json:"username_ref,omitempty"`
	PasswordRef string `json:"password_ref,omitempty"`
}

GitBasicAuth captures HTTPS credential configuration for a Git source.

type GitSSHAuth

type GitSSHAuth struct {
	Username        string   `json:"username,omitempty"`
	UsernameRef     string   `json:"username_ref,omitempty"`
	PrivateKey      string   `json:"private_key,omitempty"`
	PrivateKeyRef   string   `json:"private_key_ref,omitempty"`
	Passphrase      string   `json:"passphrase,omitempty"`
	PassphraseRef   string   `json:"passphrase_ref,omitempty"`
	KnownHosts      string   `json:"known_hosts,omitempty"`
	KnownHostsRef   string   `json:"known_hosts_ref,omitempty"`
	KnownHostsPath  string   `json:"known_hosts_path,omitempty"`
	KnownHostsPaths []string `json:"known_hosts_paths,omitempty"`
}

GitSSHAuth captures SSH credential configuration for a Git source.

type GitSourceConfig

type GitSourceConfig struct {
	URL      string        `json:"url"`
	Ref      string        `json:"ref,omitempty"`
	Path     string        `json:"path,omitempty"`
	Globs    []string      `json:"globs,omitempty"`
	SourceID string        `json:"source_id,omitempty"`
	LocalDir string        `json:"local_dir,omitempty"`
	Interval string        `json:"interval,omitempty"`
	Once     *bool         `json:"once,omitempty"`
	Auth     *GitBasicAuth `json:"auth,omitempty"`
	SSH      *GitSSHAuth   `json:"ssh,omitempty"`
}

GitSourceConfig describes a Git repository used to source job definitions.

func (GitSourceConfig) IntervalDuration

func (c GitSourceConfig) IntervalDuration(defaultInterval time.Duration) (time.Duration, error)

IntervalDuration resolves the per-source interval, falling back to the provided default when unset.

func (GitSourceConfig) IsZero

func (c GitSourceConfig) IsZero() bool

IsZero reports whether the configuration lacks the minimal required fields.

func (GitSourceConfig) OnceValue

func (c GitSourceConfig) OnceValue(defaultOnce bool) bool

OnceValue resolves whether the watcher should execute only once for this source, preferring the per-source value when provided.

type GitSources

type GitSources []GitSourceConfig

GitSources represents a collection of Git sync source configurations parsed from the CAESIUM_JOBDEF_GIT_SOURCES environment variable. The value must be JSON encoded (array of objects matching GitSourceConfig).

func (*GitSources) Decode

func (g *GitSources) Decode(value string) error

Decode implements envconfig.Decoder.

Jump to

Keyboard shortcuts

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