All checks were successful
DevStar Studio CI Pipeline - dev branch / build-and-push-x86-64-docker-image (push) Successful in 21m49s
* DELETE /api/devcontainer?repoId=${repoId} 删除 DevContainer
* refactor
* GET /api/devcontainer?repoId=${repoId}&wait=true 阻塞式等待打开就绪的 DevContainer
* POST /api/devcontainer 创建 DevContainer
* refactored the code
* Updated context usage with cancel function
* 预留接口,适配单机版 DevStar DevContainer
* bugFix: context canceled while deleting k8s CRD DevcontainerApp
* 用户界面删除 k8s CRD DevContainer
* 用户界面创建 DevContainer 并更新 NodePort
* 完成用户界面创建 DevContainer
* transplant test code into DevStar Studio
* refactored API router to /routers/api
* 更改 DevContainer Doc
* 更改 DevContainer namespace
* 特殊仓库重定向
* [Doc] 更新 Kubernetes 部署 DevStar Studio 文档说明,特别是 namespace 管理
* [Doc] 更新 CI脚本说明
* Revert "optimized CI workflow"
* optimized CI workflow
* fix typo
* [feature test]: 测试 Pod 内使用 Kubernetes Operator 功能
* [Optimization] error msg for archived repo
* [Optimization]: display detailed err msg on creating devContainer for …
59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package setting
|
||
|
||
import (
|
||
"code.gitea.io/gitea/modules/log"
|
||
)
|
||
|
||
const (
|
||
DEVCONTAINER_AGENT_NAME_K8S string = "k8s"
|
||
DEVCONTAINER_AGENT_NAME_DOCKER string = "docker"
|
||
)
|
||
|
||
// package 内部私有变量,是一个 Set 结构,标识目前系统所有支持的 DevContainer Agent 类型
|
||
var validDevcontainerAgentSet = map[string]struct{}{
|
||
DEVCONTAINER_AGENT_NAME_K8S: {},
|
||
DEVCONTAINER_AGENT_NAME_DOCKER: {},
|
||
}
|
||
|
||
var Devstar = struct {
|
||
Devcontainer DevcontainerType `ini:"devstar.devcontainer"`
|
||
}{
|
||
Devcontainer: DevcontainerType{
|
||
Enabled: false,
|
||
Namespace: "default",
|
||
TimeoutSeconds: 900, // 最长等待 DevContainer 就绪时间(阻塞式),默认15分钟,可被 app.ini 指定值覆盖
|
||
},
|
||
}
|
||
|
||
type DevcontainerType struct {
|
||
Enabled bool `ini:"enabled"`
|
||
Host string `ini:"host"`
|
||
Agent string `ini:"agent"`
|
||
Namespace string `ini:"namespace"`
|
||
TimeoutSeconds int64 `ini:"timeout_seconds"`
|
||
}
|
||
|
||
// loadDevstarDevcontainerFrom 从 ini 配置文件中读取 DevStar DevContainer 配置信息,并进行检查,若数据无效,则自动禁用 DevContainer
|
||
func loadDevstarDevcontainerFrom(rootCfg ConfigProvider) {
|
||
|
||
mustMapSetting(rootCfg, "devstar", &Devstar)
|
||
|
||
// 检查 Host 是否为空,若为空,则自动将 DevContainer 设置为禁用
|
||
if len(Devstar.Devcontainer.Host) == 0 {
|
||
log.Warn("INVALID config 'host' for DevStar DevContainer")
|
||
Devstar.Devcontainer.Enabled = false
|
||
}
|
||
|
||
// 检查用户输入的 DevContainer Agent 是否存在支持列表,若不支持,则将 DevContainer 设置为禁用
|
||
if _, exists := validDevcontainerAgentSet[Devstar.Devcontainer.Agent]; !exists {
|
||
log.Warn("INVALID config 'agent' for DevStar DevContainer")
|
||
Devstar.Devcontainer.Enabled = false
|
||
}
|
||
|
||
if Devstar.Devcontainer.Enabled == false {
|
||
log.Warn("DevStar DevContainer Service Disabled")
|
||
} else {
|
||
log.Info("DevStar DevContainer Service Enabled")
|
||
}
|
||
}
|