Documentation
¶
Index ¶
- type BranchSCM
- type ChatUserStore
- type CommitSCM
- type ConfigInteractor
- type ConfigSCM
- type DeploymentInteractor
- func (i *DeploymentInteractor) CreateDeploymentStatus(ctx context.Context, ds *ent.DeploymentStatus) (*ent.DeploymentStatus, error)
- func (i *DeploymentInteractor) Deploy(ctx context.Context, u *ent.User, r *ent.Repo, t *ent.Deployment, ...) (*ent.Deployment, error)
- func (i *DeploymentInteractor) DeployToRemote(ctx context.Context, u *ent.User, r *ent.Repo, d *ent.Deployment, ...) (*ent.Deployment, error)
- type DeploymentSCM
- type DeploymentStatisticsInteractor
- type DeploymentStatisticsStore
- type DeploymentStatusSCM
- type DeploymentStatusStore
- type DeploymentStore
- type DeploymentValidator
- type DynamicPayloadValidator
- type EventInteractor
- type EventStore
- type FindRepoOfUserByNamespaceNameOptions
- type FrozenWindowValidator
- type Interactor
- type InteractorConfig
- type LicenseInteractor
- type ListDeploymentsOfRepoOptions
- type ListInactiveDeploymentsLessThanTimeOptions
- type ListOptions
- type ListPermsOfRepoOptions
- type ListReposOfUserOptions
- type LockInteractor
- type LockStore
- type LockValidator
- type PermInteractor
- type PermStore
- type RefValidator
- type RepoInteractor
- type RepoSCM
- type RepoStore
- type ReviewInteractor
- type ReviewStore
- type ReviewValidator
- type SCM
- type SearchDeploymentsOfUserOptions
- type SearchUsersOptions
- type SerializationValidator
- type StatusValidator
- type Store
- type TagSCM
- type UserInteractor
- func (i *UserInteractor) IsAdminUser(ctx context.Context, login string) bool
- func (i *UserInteractor) IsEntryMember(ctx context.Context, login string) bool
- func (i *UserInteractor) IsEntryOrg(ctx context.Context, namespace string) bool
- func (i *UserInteractor) IsOrgMember(ctx context.Context, orgs []string) bool
- func (i *UserInteractor) SyncRemoteRepo(ctx context.Context, u *ent.User, re *extent.RemoteRepo, t time.Time) error
- type UserSCM
- type UserStore
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BranchSCM ¶
type BranchSCM interface { ListBranches(ctx context.Context, u *ent.User, r *ent.Repo, opt *ListOptions) ([]*extent.Branch, error) GetBranch(ctx context.Context, u *ent.User, r *ent.Repo, branch string) (*extent.Branch, error) GetDefaultBranch(ctx context.Context, u *ent.User, r *ent.Repo) (*extent.Branch, error) }
type ChatUserStore ¶
type ChatUserStore interface { FindChatUserByID(ctx context.Context, id string) (*ent.ChatUser, error) CreateChatUser(ctx context.Context, cu *ent.ChatUser) (*ent.ChatUser, error) UpdateChatUser(ctx context.Context, cu *ent.ChatUser) (*ent.ChatUser, error) DeleteChatUser(ctx context.Context, cu *ent.ChatUser) error }
ChatUserStore defines operations for working with chat_users.
type CommitSCM ¶
type CommitSCM interface { ListCommits(ctx context.Context, u *ent.User, r *ent.Repo, branch string, opt *ListOptions) ([]*extent.Commit, error) CompareCommits(ctx context.Context, u *ent.User, r *ent.Repo, base, head string, opt *ListOptions) ([]*extent.Commit, []*extent.CommitFile, error) GetCommit(ctx context.Context, u *ent.User, r *ent.Repo, sha string) (*extent.Commit, error) ListCommitStatuses(ctx context.Context, u *ent.User, r *ent.Repo, sha string) ([]*extent.Status, error) }
CommitSCM defines operations for working with commit.
type ConfigInteractor ¶
type ConfigInteractor service
func (*ConfigInteractor) GetEvaluatedConfig ¶
func (i *ConfigInteractor) GetEvaluatedConfig(ctx context.Context, u *ent.User, r *ent.Repo, v *extent.EvalValues) (*extent.Config, error)
GetEvaluatedConfig returns the config after evaluating the variables.
type DeploymentInteractor ¶
type DeploymentInteractor service
DeploymentInteractor provides application logic for interacting with deployments.
func (*DeploymentInteractor) CreateDeploymentStatus ¶
func (i *DeploymentInteractor) CreateDeploymentStatus(ctx context.Context, ds *ent.DeploymentStatus) (*ent.DeploymentStatus, error)
CreateDeploymentStatus create a DeploymentStatus and dispatch the event.
func (*DeploymentInteractor) Deploy ¶
func (i *DeploymentInteractor) Deploy(ctx context.Context, u *ent.User, r *ent.Repo, t *ent.Deployment, env *extent.Env) (*ent.Deployment, error)
Deploy posts a new deployment to SCM with the payload. But if it requires a review, it saves the payload on the store and waits until reviewed. It returns an error for a undeployable payload.
func (*DeploymentInteractor) DeployToRemote ¶
func (i *DeploymentInteractor) DeployToRemote(ctx context.Context, u *ent.User, r *ent.Repo, d *ent.Deployment, env *extent.Env) (*ent.Deployment, error)
DeployToRemote posts a new deployment to SCM with the saved payload after review has finished. It returns an error for a undeployable payload.
type DeploymentSCM ¶
type DeploymentSCM interface { // SCM returns the deployment with UID and SHA. CreateRemoteDeployment(ctx context.Context, u *ent.User, r *ent.Repo, d *ent.Deployment, e *extent.Env) (*extent.RemoteDeployment, error) CancelDeployment(ctx context.Context, u *ent.User, r *ent.Repo, d *ent.Deployment, s *ent.DeploymentStatus) error }
DeploymentSCM defines operations for working with remote users.
type DeploymentStatisticsInteractor ¶
type DeploymentStatisticsInteractor service
DeploymentStatisticsInteractor provides application logic for interacting with deployment_statistics.
func (*DeploymentStatisticsInteractor) ProduceDeploymentStatisticsOfRepo ¶
func (i *DeploymentStatisticsInteractor) ProduceDeploymentStatisticsOfRepo(ctx context.Context, r *ent.Repo, d *ent.Deployment) (*ent.DeploymentStatistics, error)
type DeploymentStatisticsStore ¶
type DeploymentStatisticsStore interface { ListAllDeploymentStatistics(ctx context.Context) ([]*ent.DeploymentStatistics, error) ListDeploymentStatisticsGreaterThanTime(ctx context.Context, updated time.Time) ([]*ent.DeploymentStatistics, error) FindDeploymentStatisticsOfRepoByEnv(ctx context.Context, r *ent.Repo, env string) (*ent.DeploymentStatistics, error) CreateDeploymentStatistics(ctx context.Context, s *ent.DeploymentStatistics) (*ent.DeploymentStatistics, error) UpdateDeploymentStatistics(ctx context.Context, s *ent.DeploymentStatistics) (*ent.DeploymentStatistics, error) }
DeploymentStatisticsStore defines operations for working with deployment_statistics.
type DeploymentStatusSCM ¶
type DeploymentStatusSCM interface {
CreateRemoteDeploymentStatus(ctx context.Context, u *ent.User, r *ent.Repo, d *ent.Deployment, ds *extent.RemoteDeploymentStatus) (*extent.RemoteDeploymentStatus, error)
}
DeploymentStatusSCM defines operations for working with remote deployment status.
type DeploymentStatusStore ¶
type DeploymentStatusStore interface { ListDeploymentStatuses(ctx context.Context, d *ent.Deployment) ([]*ent.DeploymentStatus, error) FindDeploymentStatusByID(ctx context.Context, id int) (*ent.DeploymentStatus, error) // CreateEntDeploymentStatus create a DeploymentStatus entity to the store. // Ent is appended to distinguish it from the interactor. CreateEntDeploymentStatus(ctx context.Context, s *ent.DeploymentStatus) (*ent.DeploymentStatus, error) }
PermStore defines operations for working with deployment_statuses.
type DeploymentStore ¶
type DeploymentStore interface { CountDeployments(ctx context.Context) (int, error) SearchDeploymentsOfUser(ctx context.Context, u *ent.User, opt *SearchDeploymentsOfUserOptions) ([]*ent.Deployment, error) ListInactiveDeploymentsLessThanTime(ctx context.Context, opt *ListInactiveDeploymentsLessThanTimeOptions) ([]*ent.Deployment, error) ListDeploymentsOfRepo(ctx context.Context, r *ent.Repo, opt *ListDeploymentsOfRepoOptions) ([]*ent.Deployment, error) FindDeploymentByID(ctx context.Context, id int) (*ent.Deployment, error) FindDeploymentByUID(ctx context.Context, uid int64) (*ent.Deployment, error) FindDeploymentOfRepoByNumber(ctx context.Context, r *ent.Repo, number int) (*ent.Deployment, error) FindPrevRunningDeployment(ctx context.Context, d *ent.Deployment) (*ent.Deployment, error) FindPrevSuccessDeployment(ctx context.Context, d *ent.Deployment) (*ent.Deployment, error) GetNextDeploymentNumberOfRepo(ctx context.Context, r *ent.Repo) (int, error) CreateDeployment(ctx context.Context, d *ent.Deployment) (*ent.Deployment, error) UpdateDeployment(ctx context.Context, d *ent.Deployment) (*ent.Deployment, error) }
DeploymentStore defines operations for working with deployments.
type DeploymentValidator ¶
type DeploymentValidator struct {
// contains filtered or unexported fields
}
DeploymentValidator validate that it is deployable.
func NewDeploymentValidator ¶
func NewDeploymentValidator(validators []Validator) *DeploymentValidator
func (*DeploymentValidator) Validate ¶
func (v *DeploymentValidator) Validate(d *ent.Deployment) error
type DynamicPayloadValidator ¶
DynamicPayloadValidator validate the payload with the specifications defined in the configuration file.
func (*DynamicPayloadValidator) Validate ¶
func (v *DynamicPayloadValidator) Validate(d *ent.Deployment) error
type EventInteractor ¶
type EventInteractor struct {
// contains filtered or unexported fields
}
func (*EventInteractor) SubscribeEvent ¶
func (i *EventInteractor) SubscribeEvent(fn func(e *ent.Event)) error
func (*EventInteractor) UnsubscribeEvent ¶
func (i *EventInteractor) UnsubscribeEvent(fn func(e *ent.Event)) error
type EventStore ¶
type EventStore interface { ListEventsGreaterThanTime(ctx context.Context, t time.Time) ([]*ent.Event, error) CreateEvent(ctx context.Context, e *ent.Event) (*ent.Event, error) CheckNotificationRecordOfEvent(ctx context.Context, e *ent.Event) bool }
EventStore defines operations for working with events.
type FindRepoOfUserByNamespaceNameOptions ¶
type FindRepoOfUserByNamespaceNameOptions struct {
Namespace, Name string
}
FindRepoOfUserByNamespaceName specifies the parameters to get the repository.
type FrozenWindowValidator ¶
FrozenWindowValidator validate that the time is in the frozen window.
func (*FrozenWindowValidator) Validate ¶
func (v *FrozenWindowValidator) Validate(d *ent.Deployment) error
type Interactor ¶
type Interactor struct { Store SCM // services used for talking to different parts of the entities. *ConfigInteractor *DeploymentInteractor *DeploymentStatisticsInteractor *EventInteractor *LicenseInteractor *LockInteractor *RepoInteractor *ReviewInteractor *UserInteractor *PermInteractor // contains filtered or unexported fields }
func NewInteractor ¶
func NewInteractor(c *InteractorConfig) *Interactor
func (*Interactor) Init ¶
func (i *Interactor) Init()
type InteractorConfig ¶
type InteractorConfig struct { ServerHost string ServerProto string ServerProxyHost string ServerProxyProto string OrgEntries []string MemberEntries []string AdminUsers []string WebhookSecret string LicenseKey string Store SCM }
func (*InteractorConfig) BuildWebhookURL ¶
func (c *InteractorConfig) BuildWebhookURL() string
func (*InteractorConfig) CheckWebhookSSL ¶
func (c *InteractorConfig) CheckWebhookSSL() bool
type LicenseInteractor ¶
type LicenseInteractor struct { LicenseKey string // contains filtered or unexported fields }
func (*LicenseInteractor) GetLicense ¶
type ListDeploymentsOfRepoOptions ¶
type ListDeploymentsOfRepoOptions struct { ListOptions Env string Status string }
type ListInactiveDeploymentsLessThanTimeOptions ¶
type ListInactiveDeploymentsLessThanTimeOptions struct { ListOptions Less time.Time }
ListInactiveDeploymentsLessThanTimeOptions specifies the optional parameters that get inactive deployments.
type ListOptions ¶
ListOptions specifies the optional parameters that support cursor pagination.
type ListPermsOfRepoOptions ¶
type ListPermsOfRepoOptions struct { ListOptions // Query search the 'login' contains the query. Query string }
type ListReposOfUserOptions ¶
type ListReposOfUserOptions struct { ListOptions // Query search the repos contains the query in the namespace or name. Query string // Sorted instructs the system to sort by the 'deployed_at' field. Sorted bool }
ListReposOfUser specifies the optional parameters that search repos.
type LockInteractor ¶
type LockInteractor service
LockInteractor provides application logic for interacting with users.
type LockStore ¶
type LockStore interface { ListExpiredLocksLessThanTime(ctx context.Context, t time.Time) ([]*ent.Lock, error) ListLocksOfRepo(ctx context.Context, r *ent.Repo) ([]*ent.Lock, error) FindLockOfRepoByEnv(ctx context.Context, r *ent.Repo, env string) (*ent.Lock, error) HasLockOfRepoForEnv(ctx context.Context, r *ent.Repo, env string) (bool, error) FindLockByID(ctx context.Context, id int) (*ent.Lock, error) CreateLock(ctx context.Context, l *ent.Lock) (*ent.Lock, error) UpdateLock(ctx context.Context, l *ent.Lock) (*ent.Lock, error) DeleteLock(ctx context.Context, l *ent.Lock) error }
LockStore defines operations for working with locks.
type LockValidator ¶
LockValidator validate that the environment of the repository is locked.
func (*LockValidator) Validate ¶
func (v *LockValidator) Validate(d *ent.Deployment) error
type PermInteractor ¶
type PermInteractor struct {
// contains filtered or unexported fields
}
func (*PermInteractor) ResyncPerms ¶
func (i *PermInteractor) ResyncPerms(ctx context.Context) error
ResyncPerms delete all permissions not included in the organization entries.
type PermStore ¶
type PermStore interface { ListPerms(ctx context.Context, opt *ListOptions) ([]*ent.Perm, error) ListPermsOfRepo(ctx context.Context, r *ent.Repo, opt *ListPermsOfRepoOptions) ([]*ent.Perm, error) FindPermOfRepo(ctx context.Context, r *ent.Repo, u *ent.User) (*ent.Perm, error) CreatePerm(ctx context.Context, p *ent.Perm) (*ent.Perm, error) UpdatePerm(ctx context.Context, p *ent.Perm) (*ent.Perm, error) DeletePermsOfUserLessThanSyncedAt(ctx context.Context, u *ent.User, t time.Time) (int, error) DeletePerm(ctx context.Context, p *ent.Perm) error }
PermStore defines operations for working with perms.
type RefValidator ¶
RefValidator validate that the 'ref' is matched with the 'deployable_ref' pattern.
func (*RefValidator) Validate ¶
func (v *RefValidator) Validate(d *ent.Deployment) error
type RepoInteractor ¶
type RepoInteractor struct { WebhookURL string WebhookSSL bool WebhookSecret string // contains filtered or unexported fields }
RepoInteractor provides application logic for interacting with repos.
type RepoSCM ¶
type RepoSCM interface { ListRemoteRepos(ctx context.Context, u *ent.User) ([]*extent.RemoteRepo, error) CreateWebhook(ctx context.Context, u *ent.User, r *ent.Repo, c *extent.WebhookConfig) (int64, error) DeleteWebhook(ctx context.Context, u *ent.User, r *ent.Repo, id int64) error }
RepoSCM defines operations for working with remote repos.
type RepoStore ¶
type RepoStore interface { CountActiveRepos(ctx context.Context) (int, error) CountRepos(ctx context.Context) (int, error) ListReposOfUser(ctx context.Context, u *ent.User, opt *ListReposOfUserOptions) ([]*ent.Repo, error) FindRepoOfUserByID(ctx context.Context, u *ent.User, id int64) (*ent.Repo, error) FindRepoOfUserByNamespaceName(ctx context.Context, u *ent.User, opt *FindRepoOfUserByNamespaceNameOptions) (*ent.Repo, error) FindRepoByID(ctx context.Context, id int64) (*ent.Repo, error) SyncRepo(ctx context.Context, r *extent.RemoteRepo) (*ent.Repo, error) UpdateRepo(ctx context.Context, r *ent.Repo) (*ent.Repo, error) Activate(ctx context.Context, r *ent.Repo) (*ent.Repo, error) Deactivate(ctx context.Context, r *ent.Repo) (*ent.Repo, error) }
RepoStore defines operations for working with repos.
type ReviewInteractor ¶
type ReviewInteractor service
func (*ReviewInteractor) RespondReview ¶
RespondReview update the status of review.
type ReviewStore ¶
type ReviewStore interface { SearchReviews(ctx context.Context, u *ent.User) ([]*ent.Review, error) ListReviews(ctx context.Context, d *ent.Deployment) ([]*ent.Review, error) FindReviewOfUser(ctx context.Context, u *ent.User, d *ent.Deployment) (*ent.Review, error) FindReviewByID(ctx context.Context, id int) (*ent.Review, error) // CreateReview creates a review of which status is pending. CreateReview(ctx context.Context, rv *ent.Review) (*ent.Review, error) // UpdateReview update the status and comment of the review. UpdateReview(ctx context.Context, rv *ent.Review) (*ent.Review, error) }
ReviewStore defines operations for working with reviews.
type ReviewValidator ¶
type ReviewValidator struct {
Store ReviewStore
}
ReviewValidator verifies the request is approved or not. If one of the reviews has approve the status is approved.
func (*ReviewValidator) Validate ¶
func (v *ReviewValidator) Validate(d *ent.Deployment) error
type SearchDeploymentsOfUserOptions ¶
type SearchDeploymentsOfUserOptions struct { ListOptions Statuses []deployment.Status Owned bool ProductionOnly bool From time.Time To time.Time }
SearchDeploymentsOfUserOptions specifies the optional parameters that search deployments.
type SearchUsersOptions ¶
type SearchUsersOptions struct { ListOptions // Query search the 'login' contains the query. Query string }
SearchUsersOptions specifies the optional parameters that search users.
type SerializationValidator ¶
type SerializationValidator struct { Env *extent.Env Store DeploymentStore }
SerializationValidator verify if there is currently a running deployment for the environment.
func (*SerializationValidator) Validate ¶
func (v *SerializationValidator) Validate(d *ent.Deployment) error
type StatusValidator ¶
type StatusValidator struct {
Status deployment.Status
}
StatusValidator validate the deployment status is valid.
func (*StatusValidator) Validate ¶
func (v *StatusValidator) Validate(d *ent.Deployment) error
type Store ¶
type Store interface { UserStore ChatUserStore RepoStore PermStore DeploymentStore DeploymentStatusStore DeploymentStatisticsStore LockStore ReviewStore EventStore }
type UserInteractor ¶
type UserInteractor struct {
// contains filtered or unexported fields
}
UserInteractor provides application logic for interacting with users.
func (*UserInteractor) IsAdminUser ¶
func (i *UserInteractor) IsAdminUser(ctx context.Context, login string) bool
IsAdminUser verifies that the login is an admin or not.
func (*UserInteractor) IsEntryMember ¶
func (i *UserInteractor) IsEntryMember(ctx context.Context, login string) bool
IsEntryMember verifies that the login is a member or not.
func (*UserInteractor) IsEntryOrg ¶
func (i *UserInteractor) IsEntryOrg(ctx context.Context, namespace string) bool
IsEntryOrg verifies that the organization is in the organization entries or not.
func (*UserInteractor) IsOrgMember ¶
func (i *UserInteractor) IsOrgMember(ctx context.Context, orgs []string) bool
IsOrgMember verifies that the user's organizations is in the member entries or not.
func (*UserInteractor) SyncRemoteRepo ¶
func (i *UserInteractor) SyncRemoteRepo(ctx context.Context, u *ent.User, re *extent.RemoteRepo, t time.Time) error
SyncRemoteRepo synchronizes with the remote repository.
type UserSCM ¶
type UserSCM interface { GetRemoteUserByToken(ctx context.Context, token string) (*extent.RemoteUser, error) ListRemoteOrgsByToken(ctx context.Context, token string) ([]string, error) }
UserSCM defines operations for working with remote users.
type UserStore ¶
type UserStore interface { CountUsers(context.Context) (int, error) SearchUsers(ctx context.Context, opts *SearchUsersOptions) ([]*ent.User, error) FindUserByID(ctx context.Context, id int64) (*ent.User, error) FindUserByHash(ctx context.Context, hash string) (*ent.User, error) FindUserByLogin(ctx context.Context, login string) (*ent.User, error) CreateUser(ctx context.Context, u *ent.User) (*ent.User, error) UpdateUser(ctx context.Context, u *ent.User) (*ent.User, error) DeleteUser(ctx context.Context, u *ent.User) error }
UserStore defines operations for working with users.
type Validator ¶
type Validator interface {
Validate(d *ent.Deployment) error
}
Validator defines the method that validate a deployment.