fix: agent secret masking

This commit is contained in:
engigu
2026-03-27 17:33:37 +08:00
parent f58ae241fb
commit 18bc3ec6c8
4 changed files with 22 additions and 7 deletions
+7
View File
@@ -53,6 +53,7 @@ type AgentTask struct {
Envs string `json:"envs"`
Languages []map[string]string `json:"languages"`
RandomRange int `json:"random_range"`
Secrets []string `json:"secrets"`
Enabled bool `json:"enabled"`
}
@@ -84,6 +85,10 @@ func (t *AgentTask) GetEnvVars() []string {
return nil
}
func (t *AgentTask) GetSecrets() []string {
return t.Secrets
}
func (t *AgentTask) GetLanguages() []map[string]string {
return t.Languages
}
@@ -494,6 +499,7 @@ func (a *Agent) handleExecute(data json.RawMessage) {
TaskID string `json:"task_id"`
LogID string `json:"log_id"`
Envs string `json:"envs"`
Secrets []string `json:"secrets"`
}
if err := json.Unmarshal(data, &req); err != nil {
logger.Errorf("解析立即执行请求失败: %v", err)
@@ -524,6 +530,7 @@ func (a *Agent) handleExecute(data json.RawMessage) {
Command: task.Command,
WorkDir: task.WorkDir,
Envs: executor.ParseEnvVars(envs),
Secrets: req.Secrets,
Timeout: task.Timeout,
Languages: task.Languages,
UseMise: task.UseMise(),
+5
View File
@@ -61,6 +61,7 @@ type AgentTask struct {
Envs string `json:"envs"`
Languages []map[string]string `json:"languages"`
RandomRange int `json:"random_range"`
Secrets []string `json:"secrets"`
Enabled bool `json:"enabled"`
}
@@ -84,6 +85,10 @@ func (t AgentTask) GetRandomRange() int {
return t.RandomRange
}
func (t AgentTask) GetSecrets() []string {
return t.Secrets
}
// AgentTaskResult Agent 上报的任务执行结果
type AgentTaskResult struct {
TaskID string `json:"task_id"`
+4 -2
View File
@@ -335,10 +335,11 @@ func (s *AgentService) GetTasks(agentID string) []models.AgentTask {
}
}
var secrets []string
if allEnvs {
envVars = envService.GetAllEnvVars()
envVars, secrets = envService.GetAllEnvVarsAndSecrets()
} else if string(task.Envs) != "" {
envVars = envService.GetEnvVarsByIDs(string(task.Envs))
envVars, secrets = envService.GetEnvVarsAndSecretsByIDs(string(task.Envs))
}
envVarsStr := executor.FormatEnvVars(envVars)
@@ -353,6 +354,7 @@ func (s *AgentService) GetTasks(agentID string) []models.AgentTask {
Envs: envVarsStr,
Languages: []map[string]string(task.Languages),
RandomRange: task.RandomRange,
Secrets: secrets,
Enabled: task.Enabled,
}
}
+3 -2
View File
@@ -456,7 +456,7 @@ func (es *ExecutorService) ExecuteDispatcher(ctx context.Context, req *executor.
// 远程任务
if task.AgentID != nil && *task.AgentID != "" {
// 将请求中已包含的环境变量(已合并)传递给 Agent
return es.ExecuteRemoteForScheduler(task, req.LogID, executor.FormatEnvVars(req.Envs))
return es.ExecuteRemoteForScheduler(task, req.LogID, executor.FormatEnvVars(req.Envs), req.Secrets)
}
// 本地任务
@@ -859,7 +859,7 @@ func (es *ExecutorService) RemoveRunningGo(taskID string, goid int64) {
}
// ExecuteRemoteForScheduler 供 Scheduler 调用,执行远程任务并等待结果
func (es *ExecutorService) ExecuteRemoteForScheduler(task *models.Task, logID string, envs string) (*executor.Result, error) {
func (es *ExecutorService) ExecuteRemoteForScheduler(task *models.Task, logID string, envs string, secrets []string) (*executor.Result, error) {
agentID := *task.AgentID
logger.Infof("[Executor] 远程执行任务 #%s: %s (Agent #%s, LogID: %s)", task.ID, task.Name, agentID, logID)
@@ -885,6 +885,7 @@ func (es *ExecutorService) ExecuteRemoteForScheduler(task *models.Task, logID st
"task_id": task.ID,
"log_id": logID,
"envs": envs,
"secrets": secrets,
})
if err != nil {
return nil, fmt.Errorf("发送执行命令失败: %v", err)