internal

package
v0.19.916 Latest Latest
Warning

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

Go to latest
Published: May 6, 2026 License: AGPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	worker.Config `config:",squash"`

	// configs for starting and introspecting service
	GitRef         string   `config:"git_ref" validate:"required"`
	Version        string   `config:"version" validate:"required"`
	MetricsTags    []string `config:"metrics_tags"`
	DisableMetrics bool     `config:"disable_metrics"`

	ServiceName       string `config:"service_name" validate:"required"`
	ServiceType       string `config:"service_type" validate:"required"`
	ServiceDeployment string `config:"service_deployment"`

	RootDomain string `config:"root_domain"` // for all services

	HTTPPort               string `config:"http_port" validate:"required"`
	InternalHTTPPort       string `config:"internal_http_port" validate:"required"`
	RunnerHTTPPort         string `config:"runner_http_port" validate:"required"`
	AuthHTTPPort           string `config:"auth_http_port" validate:"required"`
	AdminDashboardHTTPPort string `config:"admin_dashboard_http_port" validate:"required"`
	AdminDashboardDistDir  string `config:"admin_dashboard_dist_dir"`

	WorkerHealthcheckPort    string `config:"worker_healthcheck_port"`
	WorkerHealthcheckEnabled bool   `config:"worker_healthcheck_enabled"`

	GracefulShutdownTimeout time.Duration `config:"graceful_shutdown_timeout" validate:"required"`

	// psql connection parameters
	DBName                    string `config:"db_name" validate:"required"`
	DBHost                    string `config:"db_host" validate:"required"`
	DBReplicaHost             string `config:"db_replica_host"`
	DBPort                    string `config:"db_port" validate:"required"`
	DBSSLMode                 string `config:"db_ssl_mode" validate:"required"`
	DBPassword                string `config:"db_password"`
	DBUser                    string `config:"db_user" validate:"required"`
	DBZapLog                  bool   `config:"db_use_zap"`
	DBUseIAM                  bool   `config:"db_use_iam"`
	DBRegion                  string `config:"db_region" validate:"required"`
	CloudProvider             string `config:"cloud_provider"`
	DBLogQueries              bool   `config:"db_log_queries"`
	DebugEnableQueryCollector bool   `config:"debug_enable_query_collector"`
	DBMaxConnections          int32  `config:"db_max_connections"`

	// clickhouse connection parameters
	ClickhouseDBName         string        `config:"clickhouse_db_name" validate:"required"`
	ClickhouseDBHost         string        `config:"clickhouse_db_host" validate:"required"`
	ClickhouseDBUser         string        `config:"clickhouse_db_user" validate:"required"`
	ClickhouseDBPassword     string        `config:"clickhouse_db_password" validate:"required"`
	ClickhouseDBPort         string        `config:"clickhouse_db_port" validate:"required"`
	ClickhouseDBUseTLS       bool          `config:"clickhouse_db_use_tls"`
	ClickhouseDBReadTimeout  time.Duration `config:"clickhouse_db_read_timeout" validate:"required"`
	ClickhouseDBWriteTimeout time.Duration `config:"clickhouse_db_write_timeout" validate:"required"`
	ClickhouseDBDialTimeout  time.Duration `config:"clickhouse_db_dial_timeout" validate:"required"`

	// temporal configuration
	TemporalHost                          string `config:"temporal_host"  validate:"required"`
	TemporalStickyWorkflowCacheSize       int    `config:"temporal_sticky_workflow_cache_size"`
	TemporalDataConverterLargePayloadSize int    `config:"temporal_dataconverter_large_payload_size"`
	TemporalWorkflowFailurePanic          bool   `config:"temporal_workflow_failure_panic"`
	TemporalDisableRegistrationAliasing   bool   `config:"temporal_disable_registration_aliasing"`

	// github configuration
	GithubAppID            string `config:"github_app_id" validate:"required"`
	GithubAppKey           string `config:"github_app_key" validate:"required"`
	GithubAppKeySecretName string `config:"github_app_key_secret_name" validate:"required"`

	// base urls for filling in various fields on objects
	SandboxArtifactsBaseURL string `config:"sandbox_artifacts_base_url" validate:"required"`

	// middleware configuration
	Middlewares               []string `config:"middlewares"`
	InternalMiddlewares       []string `config:"internal_middlewares"`
	RunnerMiddlewares         []string `config:"runner_middlewares"`
	AuthMiddlewares           []string `config:"auth_middlewares"`
	AdminDashboardMiddlewares []string `config:"admin_dashboard_middlewares"`

	// Nuon Auth Config
	NuonAuthSessionKey     string   `config:"nuon_auth_session_key"`
	NuonAuthSessionTTL     int      `config:"nuon_auth_session_ttl"`
	NuonAuthAllowedDomains []string `config:"nuon_auth_allowed_domains"` // domains from which emails can register
	NuonAuthAllowAllUsers  bool     `config:"nuon_auth_allow_all_users"` // if true, any user with an allowedDomain can sign in

	// Nuon Auth: Default Provider ConfigS
	NuonAuthProviderType string `config:"nuon_auth_provider_type"` // NOTE: becomes required after auth is in GA
	NuonAuthClientID     string `config:"nuon_auth_client_id"`
	NuonAuthClientSecret string `config:"nuon_auth_client_secret"`
	NuonAuthIssuerURL    string `config:"nuon_auth_issuer_url"`
	NuonAuthRedirectURL  string `config:"nuon_auth_redirect_url"`

	// links
	AppURL        string `config:"app_url" validate:"required"`
	RunnerAPIURL  string `config:"runner_api_url" validate:"required"`
	PublicAPIURL  string `config:"public_api_url" validate:"required"`
	AdminAPIURL   string `config:"admin_api_url" validate:"required"`
	TemporalUIURL string `config:"temporal_ui_url" validate:"required"`

	// flags for controlling the background workers
	ForceSandboxMode           bool          `config:"force_sandbox_mode"`
	ForceOnboardingSandboxMode bool          `config:"force_onboarding_sandbox_mode"`
	SandboxModeSleep           time.Duration `config:"sandbox_mode_sleep" validate:"required"`
	SandboxModeEnableRunners   bool          `config:"sandbox_mode_enable_runners"`

	// flags for controlling creation of integration users
	IntegrationGithubInstallID string `config:"integration_github_install_id" validate:"required"`

	// notifications configuration
	LoopsAPIKey             string `config:"loops_api_key" validate:"required"`
	InternalSlackWebhookURL string `config:"internal_slack_webhook_url" validate:"required"`
	DisableNotifications    bool   `config:"disable_notifications"`

	// webhook configuration
	WebhookURLs    []string      `config:"webhook_urls"`
	WebhookTimeout time.Duration `config:"webhook_timeout"`

	// configuration for runners
	RunnerContainerImageURL      string `config:"runner_container_image_url" validate:"required"`
	RunnerContainerImageURLGCP   string `config:"runner_container_image_url_gcp"`
	RunnerContainerImageURLAzure string `config:"runner_container_image_url_azure"`
	RunnerContainerImageTag      string `config:"runner_container_image_tag" validate:"required"`
	UseLocalRunners              bool   `config:"use_local_runners"`

	// AWS IID auth
	AWSIIDCertsDir string `config:"aws_iid_certs_dir"`

	// cloudformation phone home
	AWSCloudFormationStackTemplateBucketRegion string `config:"aws_cloudformation_stack_template_bucket_region"`
	AWSCloudFormationStackTemplateBucket       string `config:"aws_cloudformation_stack_template_bucket"`
	AWSCloudFormationStackTemplateBaseURL      string `config:"aws_cloudformation_stack_template_base_url"`
	RunnerEnableSupport                        bool   `config:"runner_enable_support"`
	RunnerDefaultSupportIAMRole                string `config:"runner_default_support_iam_role_arn"`

	// configuration for managing cloud infra for orgs, apps and installs
	ManagementAccountID string `config:"management_account_id" validate:"required"`

	// AWS management (not required for GCP)
	ManagementIAMRoleARN     string `config:"management_iam_role_arn"`
	ManagementECRRegistryID  string `config:"management_ecr_registry_id"`
	ManagementECRRegistryARN string `config:"management_ecr_registry_arn"`

	// GCP management (not required for AWS)
	ManagementGARRepositoryURL string `config:"management_gar_repository_url"`
	GCSInstallTemplateBucket   string `config:"gcs_install_template_bucket"`

	// Azure management (not required for AWS/GCP)
	ManagementACRRegistryURL      string `config:"management_acr_registry_url"`
	ManagementAzureTenantID       string `config:"management_azure_tenant_id"`
	ManagementAzureClientID       string `config:"management_azure_client_id"`
	ManagementAzureSubscriptionID string `config:"management_azure_subscription_id"`
	ManagementAzureResourceGroup  string `config:"management_azure_resource_group"`
	ManagementAzureOIDCIssuerURL  string `config:"management_azure_oidc_issuer_url"`

	// configuration for org runners (shared across cloud providers)
	OrgRunnerK8sClusterID      string `config:"org_runner_k8s_cluster_id" validate:"required"`
	OrgRunnerK8sPublicEndpoint string `config:"org_runner_k8s_public_endpoint" validate:"required"`
	OrgRunnerK8sCAData         string `config:"org_runner_k8s_ca_data" validate:"required"`
	OrgRunnerRegion            string `config:"org_runner_region" validate:"required"`
	OrgRunnerHelmChartDir      string `config:"org_runner_helm_chart_dir" validate:"required"`
	OrgRunnerInstanceType      string `config:"org_runner_instance_type" validate:"required"`

	// configuration for org runners (AWS-only, not required for GCP)
	OrgRunnerOIDCProviderURL    string `config:"org_runner_oidc_provider_url"`
	OrgRunnerOIDCProviderARN    string `config:"org_runner_oidc_provider_arn"`
	OrgRunnerSupportRoleARN     string `config:"org_runner_support_role_arn"`
	OrgRunnerK8sIAMRoleARN      string `config:"org_runner_k8s_iam_role_arn"`
	OrgRunnerK8sUseDefaultCreds bool   `config:"org_runner_k8s_use_default_creds"`

	// configuration for apps
	AppRegion string `config:"app_region" validate:"required"`

	// configuration for managing the public dns zone
	DNSManagementIAMRoleARN string `config:"dns_management_iam_role_arn"` // AWS-only
	DNSZoneID               string `config:"dns_zone_id" validate:"required"`
	DNSRootDomain           string `config:"dns_root_domain" validate:"required"`

	// analytics configuration
	SegmentWriteKey  string `config:"segment_write_key" validate:"required"`
	DisableAnalytics bool   `config:"disable_analytics"`

	MaxRequestSize     int64         `config:"max_request_size" validate:"required"`
	MaxRequestDuration time.Duration `config:"max_request_duration" validate:"required"`

	// Force debug mode for everything
	ForceDebugMode              bool `config:"force_debug_mode"`
	LogRequestBody              bool `config:"log_request_body"`
	EnableHttpBinDebugEndpoints bool `config:"enable_httpbin_debug_endpoints"`
	EnableEndpointAuditing      bool `config:"enable_endpoint_auditing"`
	EvaluationJourneyEnabled    bool `config:"evaluation_journey_enabled"`

	// chaos configuration
	ChaosRate   int           `config:"chaos_rate"`
	ChaosErrors []string      `config:"chaos_errors"`
	ChaosRoutes []string      `config:"chaos_routes"`
	ChaosSleep  time.Duration `config:"chaos_sleep"`

	// Runner process uptime thresholds
	ProcessInstallUptimeThreshold time.Duration `config:"process_install_uptime_threshold"`
	ProcessMngUptimeThreshold     time.Duration `config:"process_mng_uptime_threshold"`
	ProcessBuildUptimeThreshold   time.Duration `config:"process_build_uptime_threshold"`

	// Queue handler grace period
	QueueHandlerGracePeriod time.Duration `config:"queue_handler_grace_period"`

	// Queue idle timeout: how long before an idle queue workflow terminates
	QueueIdleTimeout time.Duration `config:"queue_idle_timeout"`

	// Queue continue-as-new hint period: how often the CAN listener checks for restart hints
	QueueContinueAsNewHintPeriod time.Duration `config:"queue_continue_as_new_hint_period"`

	// Action crons
	ActionCronsEnabled bool `config:"action_crons_enabled"`

	MinCLIVersion string `config:"min_cli_version"`

	EventLoopGeneralPurgeStaleDataCron        string        `config:"event_loop_general_purge_stale_data_cron"`
	EventLoopGeneralPurgeStaleDataDurationAgo time.Duration `config:"event_loop_general_purge_stale_data_duration_ago" validate:"required"`

	// Blob storage configuration
	BlobStorageBucket string `config:"blob_storage_bucket" validate:"required"`
	BlobStorageRegion string `config:"blob_storage_region" validate:"required"`
}

func NewConfig

func NewConfig() (*Config, error)

func (*Config) IsAWS added in v0.19.894

func (c *Config) IsAWS() bool

func (*Config) IsAzure added in v0.19.894

func (c *Config) IsAzure() bool

func (*Config) IsGCP added in v0.19.894

func (c *Config) IsGCP() bool

Directories

Path Synopsis
app
log
org
pkg
api
ch
db
interests
Package interests defines the shared "what events do you want?" model used by both Slack channel subscriptions and webhooks.
Package interests defines the shared "what events do you want?" model used by both Slack channel subscriptions and webhooks.
log
operation-roles
operationroles implements various rules around what role to use for a particular operation
operationroles implements various rules around what role to use for a particular operation
queue/catalog/allsignals
Package allsignals imports all signal packages to trigger their init() registrations into the signal catalog.
Package allsignals imports all signal packages to trigger their init() registrations into the signal catalog.
stacks/aws
Package aws renders the install-stacks/aws Terraform module's tfvars file for an AWS install.
Package aws renders the install-stacks/aws Terraform module's tfvars file for an AWS install.

Jump to

Keyboard shortcuts

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