Documentation
¶
Index ¶
Constants ¶
View Source
const ( // EventHeader is the kafka header for webhook event type. EventHeader = "event_type" // RepoIDHeader is the kafka header for webhook repo_id. RepoIDHeader = "repo_id" // GitSCMHeader is the kafka header for webhook git_scm provider. GitSCMHeader = "git_driver" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DB ¶
type DB interface {
// Close closes the db connection.
Close() error
// ExecuteTransaction wrapper for executing queries in a transaction.
ExecuteTransaction(fn func(tx *sqlx.Tx) error) (err error)
// Execute wrapper for executing the queries.
Execute(fn func(conn *sqlx.DB) error) (err error)
}
DB represents the MySQL client
type HookParser ¶
type HookParser interface {
Parse(req *http.Request, driver SCMDriver) (scm.Webhook, []kafka.Header, error)
}
HookParser parses the webhook from the source code management system.
type Organization ¶
type Organization struct {
ID string `json:"-" db:"id"`
Name string `json:"name" db:"name"`
Avatar string `json:"avatar" db:"avatar"`
GitProvider SCMDriver `json:"git_provider" db:"git_provider"`
Created time.Time `json:"-" db:"created_at"`
Updated time.Time `json:"-" db:"updated_at"`
}
Organization represents a git organization
type OrganizationStore ¶
type OrganizationStore interface {
// Find finds the organizations in the datastore by name and scm driver.
Find(ctx context.Context, scmDriver SCMDriver, org *Organization) ([]*Organization, error)
}
OrganizationStore defines operations for working with organizations.
type Perm ¶
type Perm struct {
Read bool `db:"perm_read" json:"read"`
Write bool `db:"perm_write" json:"write"`
Admin bool `db:"perm_admin" json:"admin"`
}
Perm represents the user' s repository permissions
type Producer ¶
type Producer interface {
// WriteMessage write the message to the kafka producer.
WriteMessage(msg []byte, headers ...kafka.Header) error
// Close closes the kafka producer connection.
Close() error
// Stats returns the kafka producer stats.
Stats() ProducerStats
}
Producer represents the Kafka producer.
type ProducerStats ¶
type ProducerStats struct {
Duration time.Duration
TotalMessages int64
TotalErrors int64
TotalBytes int64
Throughput float64
}
ProducerStats are the metrics of kafka producer.
type RepoStore ¶
type RepoStore interface {
// FindActiveByName returns the active repositories in the data store by commitID.
FindActiveByName(ctx context.Context, repoName, orgName string, gitProvider SCMDriver) (repo *Repository, err error)
}
RepoStore defines operations for working with repositories.
type Repository ¶
type Repository struct {
ID string `json:"id,omitempty" db:"id"`
OrgID string `json:"-" db:"org_id"`
Strict bool `json:"-" db:"strict"`
Name string `json:"name,omitempty" db:"name"`
Admin string `json:"-" db:"admin_id"`
Namespace string `json:"namespace,omitempty"`
Private bool `json:"-"`
Secret string `json:"-" db:"webhook_secret"`
Link string `json:"link" db:"link"`
HTTPURL string `json:"http_url,omitempty" db:"git_http_url"`
SSHURL string `json:"ssh_url,omitempty" db:"git_ssh_url"`
Active bool `json:"active" db:"active"`
TasFileName string `json:"-" db:"tas_file_name"`
PostMergeStrategy int `json:"-" db:"post_merge_strategy"`
Created time.Time `json:"-" db:"created_at"`
Updated time.Time `json:"-" db:"updated_at"`
Perm *Perm `json:"permissions,omitempty"`
Mask string `json:"-" db:"mask"`
}
Repository represents a git repository
type SCMDriver ¶
type SCMDriver string
SCMDriver identifies source code management driver.
const ( DriverGithub SCMDriver = "github" DriverGitlab SCMDriver = "gitlab" DriverBitbucket SCMDriver = "bitbucket" )
SCMDriver values.
func (SCMDriver) VerifyDriver ¶
VerifyDriver verifies if the SCMDriver is valid.
type SCMProvider ¶
type SCMProvider interface {
// GetClient returns a new git scm client
GetClient(scmClientID SCMDriver) (*SCM, error)
}
SCMProvider return a new git scm client based on the driver.
Click to show internal directories.
Click to hide internal directories.