feat: add multi env setting support

This commit is contained in:
engigu
2026-02-13 19:26:20 +08:00
parent 8a52be9241
commit 3ab1ddc03a
13 changed files with 322 additions and 302 deletions
+9 -10
View File
@@ -311,16 +311,15 @@ func (s *AgentService) GetTasks(agentID uint) []models.AgentTask {
envVarsStr := s.buildEnvVarsString(task.Envs)
result[i] = models.AgentTask{
ID: task.ID,
Name: task.Name,
Command: task.Command,
Schedule: task.Schedule,
Timeout: task.Timeout,
WorkDir: task.WorkDir,
Envs: envVarsStr, // 传递 "KEY1=VALUE1,KEY2=VALUE2" 格式
Language: task.Language,
LangVersion: task.LangVersion,
Enabled: task.Enabled,
ID: task.ID,
Name: task.Name,
Command: task.Command,
Schedule: task.Schedule,
Timeout: task.Timeout,
WorkDir: task.WorkDir,
Envs: envVarsStr, // 传递 "KEY1=VALUE1,KEY2=VALUE2" 格式
Languages: task.Languages,
Enabled: task.Enabled,
}
}
+15 -14
View File
@@ -352,13 +352,12 @@ func (es *ExecutorService) ExecuteDispatcher(ctx context.Context, req *executor.
// 本地任务
hooks := &LocalTaskHooks{es: es, logID: req.LogID}
return executor.ExecuteWithHooks(ctx, executor.Request{
Command: req.Command,
WorkDir: req.WorkDir,
Envs: req.Envs,
Timeout: req.Timeout,
Language: task.Language,
LangVersion: task.LangVersion,
UseMise: true, // 本地业务任务启用 mise
Command: req.Command,
WorkDir: req.WorkDir,
Envs: req.Envs,
Timeout: req.Timeout,
Languages: task.Languages,
UseMise: true, // 本地业务任务启用 mise
}, stdout, stderr, hooks)
}
@@ -470,13 +469,15 @@ func (es *ExecutorService) ExecuteTask(taskID int, extraEnvs []string) *executor
}
req := &executor.ExecutionRequest{
TaskID: fmt.Sprintf("%d", task.ID),
Name: task.Name,
Command: task.Command,
WorkDir: task.WorkDir,
Envs: envs,
Timeout: task.Timeout,
Type: executor.TaskTypeManual,
TaskID: fmt.Sprintf("%d", task.ID),
Name: task.Name,
Command: task.Command,
WorkDir: task.WorkDir,
Envs: envs,
Timeout: task.Timeout,
Languages: task.Languages,
UseMise: task.UseMise(),
Type: executor.TaskTypeManual,
}
es.scheduler.EnqueueOrExecute(req)
+4 -6
View File
@@ -11,7 +11,7 @@ func NewTaskService() *TaskService {
return &TaskService{}
}
func (ts *TaskService) CreateTask(name, command, schedule string, timeout int, workDir, cleanConfig, envs, taskType, config string, agentID *uint, language, langVersion string) *models.Task {
func (ts *TaskService) CreateTask(name, command, schedule string, timeout int, workDir, cleanConfig, envs, taskType, config string, agentID *uint, languages []map[string]string) *models.Task {
if taskType == "" {
taskType = "task"
}
@@ -25,8 +25,7 @@ func (ts *TaskService) CreateTask(name, command, schedule string, timeout int, w
WorkDir: workDir,
CleanConfig: cleanConfig,
Envs: envs,
Language: language,
LangVersion: langVersion,
Languages: languages,
AgentID: agentID,
Enabled: true,
}
@@ -67,7 +66,7 @@ func (ts *TaskService) GetTaskByID(id int) *models.Task {
return &task
}
func (ts *TaskService) UpdateTask(id int, name, command, schedule string, timeout int, workDir, cleanConfig, envs string, enabled bool, taskType, config string, agentID *uint, language, langVersion string) *models.Task {
func (ts *TaskService) UpdateTask(id int, name, command, schedule string, timeout int, workDir, cleanConfig, envs string, enabled bool, taskType, config string, agentID *uint, languages []map[string]string) *models.Task {
var task models.Task
if err := database.DB.First(&task, id).Error; err != nil {
return nil
@@ -81,8 +80,7 @@ func (ts *TaskService) UpdateTask(id int, name, command, schedule string, timeou
task.Envs = envs
task.Enabled = enabled
task.AgentID = agentID
task.Language = language
task.LangVersion = langVersion
task.Languages = languages
if taskType != "" {
task.Type = taskType
}