application

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Sep 14, 2025 License: MIT Imports: 13 Imported by: 0

README

应用管理

Documentation

Index

Constants

View Source
const (
	APP_NAME = "application"
)

Variables

View Source
var (
	TYPE_NAME = map[TYPE]string{
		TYPE_SOURCE_CODE:     "SOURCE_CODE",
		TYPE_CONTAINER_IMAGE: "CONTAINER_IMAGE",
		TYPE_OTHER:           "OTHER",
	}
	TYPE_VALUE = map[string]TYPE{
		"SOURCE_CODE":     TYPE_SOURCE_CODE,
		"CONTAINER_IMAGE": TYPE_CONTAINER_IMAGE,
		"OTHER":           TYPE_OTHER,
	}
)

Enum value maps for Type.

Functions

This section is empty.

Types

type AddAppServiceRequest

type AddAppServiceRequest struct {
}

type AppInterface

type AppInterface interface {
	// 创建应用
	CreateApplication(context.Context, *CreateApplicationRequest) (*Application, error)
	// 查询应用
	QueryApplication(context.Context, *QueryApplicationRequest) (*types.Set[*Application], error)
	// 更新应用
	UpdateApplication(context.Context, *UpdateApplicationRequest) (*Application, error)
	// 删除应用
	DeleteApplication(context.Context, *DeleteApplicationRequest) (*Application, error)
	// 获取应用
	DescribeApplication(context.Context, *DescribeApplicationRequest) (*Application, error)

	ServiceInterface
}

func GetService

func GetService() AppInterface

type Application

type Application struct {
	// 对象Id
	Id string `json:"id" bson:"_id" gorm:"column:id;primaryKey"`
	// 更新时间
	UpdateAt *time.Time `json:"update_at" bson:"update_at" gorm:"column:update_at"`
	// 更新人
	UpdateBy string `json:"update_by" bson:"update_by" gorm:"column:update_by;type:varchar(60)"`
	// 创建请求
	CreateApplicationRequest
	// 应用状态
	ApplicationStatus

	// 应用关联的服务
	Services []*Service `json:"services" gorm:"-"`
}

func NewApplication

func NewApplication(req CreateApplicationRequest) (*Application, error)

func (*Application) AddService

func (a *Application) AddService(services ...*Service) *Application

func (*Application) BuildId

func (a *Application) BuildId()

func (*Application) SetReady

func (a *Application) SetReady(v bool) *Application

func (*Application) String

func (a *Application) String() string

func (*Application) TableName

func (a *Application) TableName() string

type ApplicationReadyAudit

type ApplicationReadyAudit struct {
	// 评审角色, Dev, Test, Ops
	RoleName string `json:"role_name"`
	// 评审人
	AuditBy string `json:"audit_by"`
	// 评审时间
	AuditAt time.Time `json:"audit_at"`
	// 是否就绪
	Ready bool `json:"ready"`
	// 评审建议
	Message string `json:"message"`
}

参与应用准备就绪的评审方

type ApplicationStatus

type ApplicationStatus struct {
	// 该应用是否已经准备就绪,多方确认的一个过程后计算出来的
	Ready *bool `json:"ready" bson:"ready" gorm:"column:ready" description:"该应用是否已经准备就绪"`
	// 就绪状态修改时间
	UpdateAt *time.Time `json:"ready_update_at" bson:"ready_update_at" gorm:"column:ready_update_at" description:"就绪状态修改时间"`
}

type CodeRepository

type CodeRepository struct {
	// 仓库提供商
	Provider SCM_PROVIDER `json:"provider" bson:"provider" gorm:"column:provider;type:varchar(60)"`
	// token 操作仓库, 比如设置回调
	Token string `json:"token" bson:"token" gorm:"column:token;type:varchar(100)"`
	// 仓库对应的项目Id
	ProjectId string `json:"project_id" bson:"project_id" gorm:"column:project_id;type:varchar(120)"`
	// 仓库对应空间
	Namespace string `json:"namespace" bson:"namespace" gorm:"column:namespace;type:varchar(100)"`
	// 仓库web url地址
	WebUrl string `json:"web_url" bson:"web_url" gorm:"column:web_url;type:varchar(200)"`
	// 仓库ssh url地址
	SshUrl string `json:"ssh_url" bson:"ssh_url" gorm:"column:ssh_url;type:varchar(200)"`
	// 仓库http url地址
	HttpUrl string `json:"http_url" bson:"http_url" gorm:"column:http_url;type:varchar(200)"`
	// 源代码使用的编程语言, 构建时, 不同语言有不同的构建环境
	Language *LANGUAGE `json:"language" bson:"language" gorm:"column:language;type:varchar(60)"`
	// 开启Hook设置
	EnableHook bool `json:"enable_hook" bson:"enable_hook" gorm:"column:enable_hook"`
	// Hook设置
	HookConfig string `json:"hook_config" bson:"hook_config" gorm:"column:hook_config;type:text"`
	// scm设置Hook后返回的id, 用于删除应用时,取消hook使用
	HookId string `json:"hook_id" bson:"hook_id" gorm:"column:hook_id;type:text"`
	// 仓库的创建时间
	CreatedAt time.Time `json:"created_at" bson:"created_at" gorm:"column:created_at"`
}

服务代码仓库信息

type CreateApplicationRequest

type CreateApplicationRequest struct {
	// 创建人
	CreateBy string `json:"create_by" gorm:"column:create_by;type:varchar(60)" description:"创建人"`
	// 创建时间
	CreateAt time.Time `json:"create_at" gorm:"column:create_at" description:"创建时间"`
	// 资源范围, Namespace是继承的, Scope是API添加的
	policy.ResourceLabel
	// 应用创建参数
	CreateApplicationSpec
}

func NewCreateApplicationRequest

func NewCreateApplicationRequest() *CreateApplicationRequest

func (*CreateApplicationRequest) GetImageRepositoryPrimaryAddress

func (a *CreateApplicationRequest) GetImageRepositoryPrimaryAddress() string

func (*CreateApplicationRequest) Validate

func (a *CreateApplicationRequest) Validate() error

type CreateApplicationSpec

type CreateApplicationSpec struct {
	// 应用名称
	Name string `json:"name" bson:"name" gorm:"column:name;type:varchar(120)" description:"应用名称"`
	// 应用描述
	Description string `json:"description" bson:"description" gorm:"column:description;type:text" description:"应用描述"`
	// 应用图标
	Icon string `json:"icon" bson:"icon" gorm:"column:icons;type:text" description:"应用图标"`
	// 应用类型
	Type TYPE `json:"type" bson:"type" gorm:"column:type;type:tinyint(2)" description:"应用类型, SOURCE_CODE, CONTAINER_IMAGE, OTHER"`
	// 应用代码仓库信息
	CodeRepository CodeRepository `json:"code_repository" bson:",inline" gorm:"embedded" description:"应用代码仓库信息"`
	// 应用镜像仓库信息
	ImageRepository []ImageRepository `` /* 145-byte string literal not displayed */
	// 应用所有者
	Owner string `json:"owner" bson:"owner" gorm:"column:owner;type:varchar(120)" description:"应用所有者"`
	// 应用等级, 评估这个应用的重要程度
	Level *uint32 `json:"level" bson:"level" gorm:"column:level" description:"应用等级, 评估这个应用的重要程度"`
	// 应用优先级, 应用启动的先后顺序
	Priority *uint32 `json:"priority" bson:"priority" gorm:"column:priority" description:"应用优先级, 应用启动的先后顺序"`
	// 额外的其他属性
	Extras map[string]string `json:"extras" form:"extras" bson:"extras" gorm:"column:extras;type:json;serializer:json;"`

	// 指定应用的评审方
	Audits []ApplicationReadyAudit `json:"audits" bson:"audits" gorm:"column:audits;type:json;serializer:json" description:"参与应用准备就绪的评审方"`
}

type CreateServiceRequest

type CreateServiceRequest struct {
	// 所属应用
	ApplicationName string `json:"application_name" gorm:"column:application_name;type:varchar(60)"`
	// 单仓单服, 服务名称就是 仓库的名称
	// 单仓多服, 服务名称 需要用户自己定义, 子应用目录名称
	Name string `json:"name" gorm:"column:name;type:varchar(60)"`
}

func NewCreateServiceRequest

func NewCreateServiceRequest(app_name, serviceName string) *CreateServiceRequest

type DeleteApplicationRequest

type DeleteApplicationRequest struct {
	DescribeApplicationRequest
}

type DeleteServiceRequest

type DeleteServiceRequest struct {
}

type DescribeApplicationRequest

type DescribeApplicationRequest struct {
	policy.ResourceScope
	// 应用ID
	Id string `json:"id" bson:"_id"`
}

type DescribeServiceRequest

type DescribeServiceRequest struct {
	ServiceId string `json:"service_id"`
}

func NewDescribeServiceRequest

func NewDescribeServiceRequest(serviceId string) *DescribeServiceRequest

type ImageRepository

type ImageRepository struct {
	// 服务镜像地址, 比如 gcr.lank8s.cn/kaniko-project/executor
	Address string `json:"address" bson:"address"`
	// 是不是主仓库
	IsPrimary bool `json:"is_primary" bson:"is_primary"`
}

镜像仓库

type LANGUAGE

type LANGUAGE string
const (
	LANGUAGE_JAVA        LANGUAGE = "java"
	LANGUAGE_JAVASCRIPT  LANGUAGE = "javascript"
	LANGUAGE_GOLANG      LANGUAGE = "golang"
	LANGUAGE_PYTHON      LANGUAGE = "python"
	LANGUAGE_PHP         LANGUAGE = "php"
	LANGUAGE_C_SHARP     LANGUAGE = "csharp"
	LANGUAGE_C           LANGUAGE = "c"
	LANGUAGE_C_PLUS_PLUS LANGUAGE = "cpp"
	LANGUAGE_SWIFT       LANGUAGE = "swift"
	LANGUAGE_OBJECT_C    LANGUAGE = "objectivec"
	LANGUAGE_RUST        LANGUAGE = "rust"
	LANGUAGE_RUBY        LANGUAGE = "ruby"
	LANGUAGE_DART        LANGUAGE = "dart"
	LANGUAGE_KOTLIN      LANGUAGE = "kotlin"
	LANGUAGE_SHELL       LANGUAGE = "shell"
	LANGUAGE_POWER_SHELL LANGUAGE = "powershell"
)

type QueryApplicationRequest

type QueryApplicationRequest struct {
	policy.ResourceScope
	QueryApplicationRequestSpec
}

func NewQueryApplicationRequest

func NewQueryApplicationRequest() *QueryApplicationRequest

type QueryApplicationRequestSpec

type QueryApplicationRequestSpec struct {
	*request.PageRequest
	// 应用ID
	Id string `json:"id" bson:"_id"`
	// 应用名称
	Name string `json:"name" bson:"name"`
	// 应用是否就绪
	Ready *bool `json:"ready" bson:"ready"`
}

type QueryServiceRequest

type QueryServiceRequest struct {
	*request.PageRequest
	// 所属应用
	ApplicationName string `json:"application_name"`
	//
	ApplicationId string `json:"application_id"`
}

func NewQueryServiceRequest

func NewQueryServiceRequest() *QueryServiceRequest

func (*QueryServiceRequest) SetApplicationId

func (r *QueryServiceRequest) SetApplicationId(appId string) *QueryServiceRequest

func (*QueryServiceRequest) SetApplicationName

func (r *QueryServiceRequest) SetApplicationName(appName string) *QueryServiceRequest

type SCM_PROVIDER

type SCM_PROVIDER string

SCM_TYPE 源码仓库类型

const (
	// gitlab
	SCM_PROVIDER_GITLAB SCM_PROVIDER = "gitlab"
	// github
	SCM_PROVIDER_GITHUB SCM_PROVIDER = "github"
	// bitbucket
	SCM_PROVIDER_BITBUCKET SCM_PROVIDER = "bitbucket"
)

type Service

type Service struct {
	// 对象Id  应用名称-服务名称
	Id string `json:"id" bson:"_id" gorm:"column:id;primaryKey"`
	// 创建时间
	CreateAt time.Time `json:"create_at" gorm:"column:create_at" description:"创建时间"`
	// 更新时间
	UpdateAt *time.Time `json:"update_at" gorm:"column:update_at"`
	// 更新人
	UpdateBy string `json:"update_by" gorm:"column:update_by;type:varchar(60)"`
	// 具体属性
	CreateServiceRequest
}

应用服务, 应用的子概念

func NewService

func NewService(req *CreateServiceRequest) *Service

func (*Service) String

func (s *Service) String() string

func (*Service) TableName

func (c *Service) TableName() string

type ServiceInterface

type ServiceInterface interface {
	// 服务添加
	AddAppService(context.Context, *AddAppServiceRequest) (*Service, error)
	// 服务编辑
	UpdateService(context.Context, *UpdateServiceRequest) (*Service, error)
	// 服务删除
	DeleteService(context.Context, *DeleteServiceRequest) (*Service, error)
	// 查询具体的Service信息
	DescribeService(context.Context, *DescribeServiceRequest) (*Service, error)
	// 服务列表查询
	QueryService(context.Context, *QueryServiceRequest) (*types.Set[*Service], error)
}

type TYPE

type TYPE int32
const (
	// 源码类型的应用, 需要填写代码仓库信息
	TYPE_SOURCE_CODE TYPE = 0
	// 镜像类型的应用, 需要添加镜像信息
	TYPE_CONTAINER_IMAGE TYPE = 1
	// 其他类型
	TYPE_OTHER TYPE = 15
)

func ParseTypeFromString

func ParseTypeFromString(str string) (TYPE, error)

ParseTypeFromString Parse Type from string

func (TYPE) Equal

func (t TYPE) Equal(target TYPE) bool

Equal type compare

func (TYPE) IsIn

func (t TYPE) IsIn(targets ...TYPE) bool

IsIn todo

func (TYPE) MarshalJSON

func (t TYPE) MarshalJSON() ([]byte, error)

MarshalJSON todo

func (TYPE) String

func (t TYPE) String() string

func (*TYPE) UnmarshalJSON

func (t *TYPE) UnmarshalJSON(b []byte) error

UnmarshalJSON todo

type UpdateApplicationRequest

type UpdateApplicationRequest struct {
	// 更新人
	UpdateBy string `json:"update_by" bson:"update_by"`
	DescribeApplicationRequest
	CreateApplicationSpec
}

type UpdateServiceRequest

type UpdateServiceRequest struct {
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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