Documentation ¶
Index ¶
- func BindAllEnv(v *viper.Viper)
- type AlertingConfigFile
- type AnalyticsConfigFile
- type AuthConfig
- type ConfigFileAdditionalLoggers
- type ConfigFileAuth
- type ConfigFileAuthCookie
- type ConfigFileAuthGithub
- type ConfigFileAuthGoogle
- type ConfigFileEmail
- type ConfigFileRuntime
- type ConfigFileSlack
- type ConfigFileTenantAlerting
- type EncryptionConfigFile
- type EncryptionConfigFileCloudKMS
- type EncryptionConfigFileJWT
- type FePosthogConfig
- type LimitConfigFile
- type MessageQueueConfigFile
- type PosthogConfigFile
- type PostmarkConfigFile
- type PylonConfig
- type RabbitMQConfigFile
- type SecurityCheckConfigFile
- type SentryConfigFile
- type ServerConfig
- type ServerConfigFile
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BindAllEnv ¶
Types ¶
type AlertingConfigFile ¶
type AlertingConfigFile struct {
Sentry SentryConfigFile `mapstructure:"sentry" json:"sentry,omitempty"`
}
Alerting options
type AnalyticsConfigFile ¶
type AnalyticsConfigFile struct {
Posthog PosthogConfigFile `mapstructure:"posthog" json:"posthog,omitempty"`
}
type AuthConfig ¶
type AuthConfig struct { RestrictedEmailDomains []string ConfigFile ConfigFileAuth GoogleOAuthConfig *oauth2.Config GithubOAuthConfig *oauth2.Config JWTManager token.JWTManager }
type ConfigFileAdditionalLoggers ¶ added in v0.43.2
type ConfigFileAdditionalLoggers struct { // Queue is a custom logger config for the queue service Queue shared.LoggerConfigFile `mapstructure:"queue" json:"queue,omitempty"` // PgxStats is a custom logger config for the pgx stats service PgxStats shared.LoggerConfigFile `mapstructure:"pgxStats" json:"pgxStats,omitempty"` }
type ConfigFileAuth ¶
type ConfigFileAuth struct { // RestrictedEmailDomains sets the restricted email domains for the instance. // NOTE: do not use this on the server from the config file. RestrictedEmailDomains string `mapstructure:"restrictedEmailDomains" json:"restrictedEmailDomains,omitempty"` // BasedAuthEnabled controls whether email and password-based login is enabled for this // Hatchet instance BasicAuthEnabled bool `mapstructure:"basicAuthEnabled" json:"basicAuthEnabled,omitempty" default:"true"` // SetEmailVerified controls whether the user's email is automatically set to verified SetEmailVerified bool `mapstructure:"setEmailVerified" json:"setEmailVerified,omitempty" default:"false"` // Configuration options for the cookie Cookie ConfigFileAuthCookie `mapstructure:"cookie" json:"cookie,omitempty"` Google ConfigFileAuthGoogle `mapstructure:"google" json:"google,omitempty"` Github ConfigFileAuthGithub `mapstructure:"github" json:"github,omitempty"` }
type ConfigFileAuthCookie ¶
type ConfigFileAuthCookie struct { Name string `mapstructure:"name" json:"name,omitempty" default:"hatchet"` Domain string `mapstructure:"domain" json:"domain,omitempty"` Secrets string `mapstructure:"secrets" json:"secrets,omitempty"` Insecure bool `mapstructure:"insecure" json:"insecure,omitempty" default:"false"` }
type ConfigFileAuthGithub ¶
type ConfigFileAuthGithub struct { Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"` ClientID string `mapstructure:"clientID" json:"clientID,omitempty"` ClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"` Scopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"read:user\", \"user:email\"]"` }
type ConfigFileAuthGoogle ¶
type ConfigFileAuthGoogle struct { Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"` ClientID string `mapstructure:"clientID" json:"clientID,omitempty"` ClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"` Scopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"openid\", \"profile\", \"email\"]"` }
type ConfigFileEmail ¶
type ConfigFileEmail struct {
Postmark PostmarkConfigFile `mapstructure:"postmark" json:"postmark,omitempty"`
}
type ConfigFileRuntime ¶
type ConfigFileRuntime struct { // Port is the port that the core server listens on Port int `mapstructure:"port" json:"port,omitempty" default:"8080"` // ServerURL is the full server URL of the instance, including protocol. ServerURL string `mapstructure:"url" json:"url,omitempty" default:"http://localhost:8080"` // Healthcheck controls whether the server has a healthcheck endpoint Healthcheck bool `mapstructure:"healthcheck" json:"healthcheck,omitempty" default:"true"` // GRPCPort is the port that the grpc service listens on GRPCPort int `mapstructure:"grpcPort" json:"grpcPort,omitempty" default:"7070"` // GRPCBindAddress is the address that the grpc server binds to. Should set to 0.0.0.0 if binding in docker container. GRPCBindAddress string `mapstructure:"grpcBindAddress" json:"grpcBindAddress,omitempty" default:"127.0.0.1"` // GRPCBroadcastAddress is the address that the grpc server broadcasts to, which is what clients should use when connecting. GRPCBroadcastAddress string `mapstructure:"grpcBroadcastAddress" json:"grpcBroadcastAddress,omitempty" default:"127.0.0.1:7070"` // GRPCInsecure controls whether the grpc server is insecure or uses certs GRPCInsecure bool `mapstructure:"grpcInsecure" json:"grpcInsecure,omitempty" default:"false"` // GRPCMaxMsgSize is the maximum message size that the grpc server will accept GRPCMaxMsgSize int `mapstructure:"grpcMaxMsgSize" json:"grpcMaxMsgSize,omitempty" default:"4194304"` // ShutdownWait is the time between the readiness probe being offline when a shutdown is triggered and the actual start of cleaning up resources. ShutdownWait time.Duration `mapstructure:"shutdownWait" json:"shutdownWait,omitempty" default:"20s"` // Enforce limits controls whether the server enforces tenant limits EnforceLimits bool `mapstructure:"enforceLimits" json:"enforceLimits,omitempty" default:"false"` // Default limit values Limits LimitConfigFile `mapstructure:"limits" json:"limits,omitempty"` // RequeueLimit is the number of times a message will be requeued in each attempt RequeueLimit int `mapstructure:"requeueLimit" json:"requeueLimit,omitempty" default:"100"` // QueueLimit is the limit of items to return from a single queue at a time SingleQueueLimit int `mapstructure:"singleQueueLimit" json:"singleQueueLimit,omitempty" default:"100"` // How many buckets to hash into for parallelizing updates UpdateHashFactor int `mapstructure:"updateHashFactor" json:"updateHashFactor,omitempty" default:"100"` // How many concurrent updates to allow UpdateConcurrentFactor int `mapstructure:"updateConcurrentFactor" json:"updateConcurrentFactor,omitempty" default:"10"` // Allow new tenants to be created AllowSignup bool `mapstructure:"allowSignup" json:"allowSignup,omitempty" default:"true"` // Allow new invites to be created AllowInvites bool `mapstructure:"allowInvites" json:"allowInvites,omitempty" default:"true"` // Allow new tenants to be created AllowCreateTenant bool `mapstructure:"allowCreateTenant" json:"allowCreateTenant,omitempty" default:"true"` // Allow passwords to be changed AllowChangePassword bool `mapstructure:"allowChangePassword" json:"allowChangePassword,omitempty" default:"true"` // Buffer create workflow runs BufferCreateWorkflowRuns bool `mapstructure:"bufferCreateWorkflowRuns" json:"bufferCreateWorkflowRuns,omitempty" default:"true"` // DisableTenantPubs controls whether tenant pubsub is disabled DisableTenantPubs bool `mapstructure:"disableTenantPubs" json:"disableTenantPubs,omitempty"` // FlushPeriodMilliseconds is the default number of milliseconds before flush FlushPeriodMilliseconds int `mapstructure:"flushPeriodMilliseconds" json:"flushPeriodMilliseconds,omitempty" default:"10"` // FlushItemsThreshold is the default number of items to hold in memory until flushing to the database FlushItemsThreshold int `mapstructure:"flushItemsThreshold" json:"flushItemsThreshold,omitempty" default:"100"` // WorkflowRunBuffer represents the buffer settings for workflow runs WorkflowRunBuffer buffer.ConfigFileBuffer `mapstructure:"workflowRunBuffer" json:"workflowRunBuffer,omitempty"` // EventBuffer represents the buffer settings for step run events EventBuffer buffer.ConfigFileBuffer `mapstructure:"eventBuffer" json:"eventBuffer,omitempty"` // ReleaseSemaphoreBuffer represents the buffer settings for releasing semaphore slots ReleaseSemaphoreBuffer buffer.ConfigFileBuffer `mapstructure:"releaseSemaphoreBuffer" json:"releaseSemaphoreBuffer,omitempty"` // QueueStepRunBuffer represents the buffer settings for inserting step runs into the queue QueueStepRunBuffer buffer.ConfigFileBuffer `mapstructure:"queueStepRunBuffer" json:"queueStepRunBuffer,omitempty"` }
General server runtime options
type ConfigFileSlack ¶
type ConfigFileSlack struct { Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"` SlackAppClientID string `mapstructure:"clientID" json:"clientID,omitempty"` SlackAppClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"` SlackAppScopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"incoming-webhook\"]"` }
type ConfigFileTenantAlerting ¶
type ConfigFileTenantAlerting struct {
Slack ConfigFileSlack `mapstructure:"slack" json:"slack,omitempty"`
}
type EncryptionConfigFile ¶
type EncryptionConfigFile struct { // MasterKeyset is the raw master keyset for the instance. This should be a base64-encoded JSON string. You must set // either MasterKeyset, MasterKeysetFile or cloudKms.enabled with CloudKMS credentials MasterKeyset string `mapstructure:"masterKeyset" json:"masterKeyset,omitempty"` // MasterKeysetFile is the path to the master keyset file for the instance. MasterKeysetFile string `mapstructure:"masterKeysetFile" json:"masterKeysetFile,omitempty"` JWT EncryptionConfigFileJWT `mapstructure:"jwt" json:"jwt,omitempty"` // CloudKMS is the configuration for Google Cloud KMS. You must set either MasterKeyset or cloudKms.enabled. CloudKMS EncryptionConfigFileCloudKMS `mapstructure:"cloudKms" json:"cloudKms,omitempty"` }
Encryption options
type EncryptionConfigFileCloudKMS ¶
type EncryptionConfigFileCloudKMS struct { // Enabled controls whether the Cloud KMS service is enabled for this Hatchet instance. Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"` // KeyURI is the URI of the key in Google Cloud KMS. This should be in the format of // gcp-kms://... KeyURI string `mapstructure:"keyURI" json:"keyURI,omitempty"` // CredentialsJSON is the JSON credentials for the Google Cloud KMS service account. CredentialsJSON string `mapstructure:"credentialsJSON" json:"credentialsJSON,omitempty"` }
type EncryptionConfigFileJWT ¶
type EncryptionConfigFileJWT struct { // PublicJWTKeyset is a base64-encoded JSON string containing the public keyset which has been encrypted // by the master key. PublicJWTKeyset string `mapstructure:"publicJWTKeyset" json:"publicJWTKeyset,omitempty"` // PublicJWTKeysetFile is the path to the public keyset file for the instance. PublicJWTKeysetFile string `mapstructure:"publicJWTKeysetFile" json:"publicJWTKeysetFile,omitempty"` // PrivateJWTKeyset is a base64-encoded JSON string containing the private keyset which has been encrypted // by the master key. PrivateJWTKeyset string `mapstructure:"privateJWTKeyset" json:"privateJWTKeyset,omitempty"` // PrivateJWTKeysetFile is the path to the private keyset file for the instance. PrivateJWTKeysetFile string `mapstructure:"privateJWTKeysetFile" json:"privateJWTKeysetFile,omitempty"` }
type FePosthogConfig ¶
type LimitConfigFile ¶
type LimitConfigFile struct { DefaultTenantRetentionPeriod string `mapstructure:"defaultTenantRetentionPeriod" json:"defaultTenantRetentionPeriod,omitempty" default:"720h"` DefaultWorkflowRunLimit int `mapstructure:"defaultWorkflowRunLimit" json:"defaultWorkflowRunLimit,omitempty" default:"1000"` DefaultWorkflowRunAlarmLimit int `mapstructure:"defaultWorkflowRunAlarmLimit" json:"defaultWorkflowRunAlarmLimit,omitempty" default:"750"` DefaultWorkflowRunWindow time.Duration `mapstructure:"defaultWorkflowRunWindow" json:"defaultWorkflowRunWindow,omitempty" default:"24h"` DefaultWorkerLimit int `mapstructure:"defaultWorkerLimit" json:"defaultWorkerLimit,omitempty" default:"4"` DefaultWorkerAlarmLimit int `mapstructure:"defaultWorkerAlarmLimit" json:"defaultWorkerAlarmLimit,omitempty" default:"2"` DefaultEventLimit int `mapstructure:"defaultEventLimit" json:"defaultEventLimit,omitempty" default:"1000"` DefaultEventAlarmLimit int `mapstructure:"defaultEventAlarmLimit" json:"defaultEventAlarmLimit,omitempty" default:"750"` DefaultEventWindow time.Duration `mapstructure:"defaultEventWindow" json:"defaultEventWindow,omitempty" default:"24h"` DefaultCronLimit int `mapstructure:"defaultCronLimit" json:"defaultCronLimit,omitempty" default:"5"` DefaultCronAlarmLimit int `mapstructure:"defaultCronAlarmLimit" json:"defaultCronAlarmLimit,omitempty" default:"2"` DefaultScheduleLimit int `mapstructure:"defaultScheduleLimit" json:"defaultScheduleLimit,omitempty" default:"1000"` DefaultScheduleAlarmLimit int `mapstructure:"defaultScheduleAlarmLimit" json:"defaultScheduleAlarmLimit,omitempty" default:"750"` }
type MessageQueueConfigFile ¶
type MessageQueueConfigFile struct { Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"true"` Kind string `mapstructure:"kind" json:"kind,omitempty" validate:"required"` RabbitMQ RabbitMQConfigFile `mapstructure:"rabbitmq" json:"rabbitmq,omitempty" validate:"required"` }
type PosthogConfigFile ¶
type PosthogConfigFile struct { // Enabled controls whether the Posthog service is enabled for this Hatchet instance. Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"` // APIKey is the API key for the Posthog instance ApiKey string `mapstructure:"apiKey" json:"apiKey,omitempty"` // Endpoint is the endpoint for the Posthog instance Endpoint string `mapstructure:"endpoint" json:"endpoint,omitempty"` // FeApiKey is the frontend API key for the Posthog instance FeApiKey string `mapstructure:"feApiKey" json:"feApiKey,omitempty"` // FeApiHost is the frontend API host for the Posthog instance FeApiHost string `mapstructure:"feApiHost" json:"feApiHost,omitempty"` }
type PostmarkConfigFile ¶
type PostmarkConfigFile struct { Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"` ServerKey string `mapstructure:"serverKey" json:"serverKey,omitempty"` FromEmail string `mapstructure:"fromEmail" json:"fromEmail,omitempty"` FromName string `mapstructure:"fromName" json:"fromName,omitempty" default:"Hatchet Support"` SupportEmail string `mapstructure:"supportEmail" json:"supportEmail,omitempty"` }
type PylonConfig ¶
type RabbitMQConfigFile ¶
type SecurityCheckConfigFile ¶ added in v0.34.2
type SentryConfigFile ¶
type SentryConfigFile struct { // Enabled controls whether the Sentry service is enabled for this Hatchet instance. Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"` // DSN is the Data Source Name for the Sentry instance DSN string `mapstructure:"dsn" json:"dsn,omitempty"` // Environment is the environment that the instance is running in Environment string `mapstructure:"environment" json:"environment,omitempty" default:"development"` }
type ServerConfig ¶
type ServerConfig struct { *database.Config Auth AuthConfig Alerter errors.Alerter Analytics analytics.Analytics Pylon *PylonConfig FePosthog *FePosthogConfig Encryption encryption.EncryptionService Runtime ConfigFileRuntime Services []string EnableDataRetention bool EnableWorkerRetention bool Namespaces []string MessageQueue msgqueue.MessageQueue Logger *zerolog.Logger AdditionalLoggers ConfigFileAdditionalLoggers TLSConfig *tls.Config SessionStore *cookie.UserSessionStore Validator validator.Validator Ingestor ingestor.Ingestor OpenTelemetry shared.OpenTelemetryConfigFile Email email.EmailService TenantAlerter *alerting.TenantAlertManager AdditionalOAuthConfigs map[string]*oauth2.Config SchedulingPool *v2.SchedulingPool }
func (*ServerConfig) HasService ¶
func (c *ServerConfig) HasService(name string) bool
type ServerConfigFile ¶
type ServerConfigFile struct { Auth ConfigFileAuth `mapstructure:"auth" json:"auth,omitempty"` Alerting AlertingConfigFile `mapstructure:"alerting" json:"alerting,omitempty"` Analytics AnalyticsConfigFile `mapstructure:"analytics" json:"analytics,omitempty"` Pylon PylonConfig `mapstructure:"pylon" json:"pylon,omitempty"` Encryption EncryptionConfigFile `mapstructure:"encryption" json:"encryption,omitempty"` Runtime ConfigFileRuntime `mapstructure:"runtime" json:"runtime,omitempty"` MessageQueue MessageQueueConfigFile `mapstructure:"msgQueue" json:"msgQueue,omitempty"` Services []string `mapstructure:"services" json:"services,omitempty" default:"[\"all\"]"` // Used to bind the environment variable, since the array is not well supported ServicesString string `mapstructure:"servicesString" json:"servicesString,omitempty"` EnableDataRetention bool `mapstructure:"enableDataRetention" json:"enableDataRetention,omitempty" default:"true"` EnableWorkerRetention bool `mapstructure:"enableWorkerRetention" json:"enableWorkerRetention,omitempty" default:"false"` TLS shared.TLSConfigFile `mapstructure:"tls" json:"tls,omitempty"` Logger shared.LoggerConfigFile `mapstructure:"logger" json:"logger,omitempty"` AdditionalLoggers ConfigFileAdditionalLoggers `mapstructure:"additionalLoggers" json:"additionalLoggers,omitempty"` OpenTelemetry shared.OpenTelemetryConfigFile `mapstructure:"otel" json:"otel,omitempty"` SecurityCheck SecurityCheckConfigFile `mapstructure:"securityCheck" json:"securityCheck,omitempty"` TenantAlerting ConfigFileTenantAlerting `mapstructure:"tenantAlerting" json:"tenantAlerting,omitempty"` Email ConfigFileEmail `mapstructure:"email" json:"email,omitempty"` }
Click to show internal directories.
Click to hide internal directories.