Documentation ¶
Index ¶
- func BindAllEnv(v *viper.Viper)
- type AlertingConfigFile
- type AnalyticsConfigFile
- type AuthConfig
- type ConfigFileAuth
- type ConfigFileAuthCookie
- type ConfigFileAuthGithub
- type ConfigFileAuthGoogle
- type ConfigFileEmail
- type ConfigFileGithub
- type ConfigFileRuntime
- type ConfigFileSlack
- type ConfigFileTenantAlerting
- type ConfigFileVCS
- type EncryptionConfigFile
- type EncryptionConfigFileCloudKMS
- type EncryptionConfigFileJWT
- type FePosthogConfig
- type LimitConfigFile
- type MessageQueueConfigFile
- type PosthogConfigFile
- type PostmarkConfigFile
- type PylonConfig
- type RabbitMQConfigFile
- 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 { ConfigFile ConfigFileAuth GoogleOAuthConfig *oauth2.Config GithubOAuthConfig *oauth2.Config JWTManager token.JWTManager }
type ConfigFileAuth ¶
type ConfigFileAuth struct { // RestrictedEmailDomains sets the restricted email domains for the instance. 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 ConfigFileGithub ¶
type ConfigFileGithub struct { Enabled bool `mapstructure:"enabled" json:"enabled"` GithubAppClientID string `mapstructure:"appClientID" json:"appClientID,omitempty"` GithubAppClientSecret string `mapstructure:"appClientSecret" json:"appClientSecret,omitempty"` GithubAppName string `mapstructure:"appName" json:"appName,omitempty"` GithubAppWebhookSecret string `mapstructure:"appWebhookSecret" json:"appWebhookSecret,omitempty"` GithubAppWebhookURL string `mapstructure:"appWebhookURL" json:"appWebhookURL,omitempty"` GithubAppID string `mapstructure:"appID" json:"appID,omitempty"` GithubAppSecretPath string `mapstructure:"appSecretPath" json:"appSecretPath,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"` // 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"` // Whether the internal worker is enabled for this instance WorkerEnabled bool `mapstructure:"workerEnabled" json:"workerEnabled,omitempty" default:"false"` // 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"` Limits LimitConfigFile `mapstructure:"limits" json:"limits,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 ConfigFileVCS ¶
type ConfigFileVCS struct {
Github ConfigFileGithub `mapstructure:"github" json:"github,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 { 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 RabbitMQConfigFile struct {
URL string `mapstructure:"url" json:"url,omitempty" validate:"required" default:"amqp://user:password@localhost:5672/"`
}
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 Namespaces []string MessageQueue msgqueue.MessageQueue Logger *zerolog.Logger TLSConfig *tls.Config SessionStore *cookie.UserSessionStore Validator validator.Validator Ingestor ingestor.Ingestor OpenTelemetry shared.OpenTelemetryConfigFile VCSProviders map[vcs.VCSRepositoryKind]vcs.VCSProvider InternalClient client.Client Email email.EmailService TenantAlerter *alerting.TenantAlertManager AdditionalOAuthConfigs map[string]*oauth2.Config }
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 `` /* 178-byte string literal not displayed */ TLS shared.TLSConfigFile `mapstructure:"tls" json:"tls,omitempty"` Logger shared.LoggerConfigFile `mapstructure:"logger" json:"logger,omitempty"` OpenTelemetry shared.OpenTelemetryConfigFile `mapstructure:"otel" json:"otel,omitempty"` VCS ConfigFileVCS `mapstructure:"vcs" json:"vcs,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.