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
+10 -3
View File
@@ -53,6 +53,7 @@ type AgentTask struct {
Envs string `json:"envs"` Envs string `json:"envs"`
Languages []map[string]string `json:"languages"` Languages []map[string]string `json:"languages"`
RandomRange int `json:"random_range"` RandomRange int `json:"random_range"`
Secrets []string `json:"secrets"`
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
} }
@@ -84,6 +85,10 @@ func (t *AgentTask) GetEnvVars() []string {
return nil return nil
} }
func (t *AgentTask) GetSecrets() []string {
return t.Secrets
}
func (t *AgentTask) GetLanguages() []map[string]string { func (t *AgentTask) GetLanguages() []map[string]string {
return t.Languages return t.Languages
} }
@@ -491,9 +496,10 @@ func (a *Agent) handleTasks(data json.RawMessage) {
func (a *Agent) handleExecute(data json.RawMessage) { func (a *Agent) handleExecute(data json.RawMessage) {
var req struct { var req struct {
TaskID string `json:"task_id"` TaskID string `json:"task_id"`
LogID string `json:"log_id"` LogID string `json:"log_id"`
Envs string `json:"envs"` Envs string `json:"envs"`
Secrets []string `json:"secrets"`
} }
if err := json.Unmarshal(data, &req); err != nil { if err := json.Unmarshal(data, &req); err != nil {
logger.Errorf("解析立即执行请求失败: %v", err) logger.Errorf("解析立即执行请求失败: %v", err)
@@ -524,6 +530,7 @@ func (a *Agent) handleExecute(data json.RawMessage) {
Command: task.Command, Command: task.Command,
WorkDir: task.WorkDir, WorkDir: task.WorkDir,
Envs: executor.ParseEnvVars(envs), Envs: executor.ParseEnvVars(envs),
Secrets: req.Secrets,
Timeout: task.Timeout, Timeout: task.Timeout,
Languages: task.Languages, Languages: task.Languages,
UseMise: task.UseMise(), UseMise: task.UseMise(),
+5
View File
@@ -61,6 +61,7 @@ type AgentTask struct {
Envs string `json:"envs"` Envs string `json:"envs"`
Languages []map[string]string `json:"languages"` Languages []map[string]string `json:"languages"`
RandomRange int `json:"random_range"` RandomRange int `json:"random_range"`
Secrets []string `json:"secrets"`
Enabled bool `json:"enabled"` Enabled bool `json:"enabled"`
} }
@@ -84,6 +85,10 @@ func (t AgentTask) GetRandomRange() int {
return t.RandomRange return t.RandomRange
} }
func (t AgentTask) GetSecrets() []string {
return t.Secrets
}
// AgentTaskResult Agent 上报的任务执行结果 // AgentTaskResult Agent 上报的任务执行结果
type AgentTaskResult struct { type AgentTaskResult struct {
TaskID string `json:"task_id"` 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 { if allEnvs {
envVars = envService.GetAllEnvVars() envVars, secrets = envService.GetAllEnvVarsAndSecrets()
} else if string(task.Envs) != "" { } else if string(task.Envs) != "" {
envVars = envService.GetEnvVarsByIDs(string(task.Envs)) envVars, secrets = envService.GetEnvVarsAndSecretsByIDs(string(task.Envs))
} }
envVarsStr := executor.FormatEnvVars(envVars) envVarsStr := executor.FormatEnvVars(envVars)
@@ -353,6 +354,7 @@ func (s *AgentService) GetTasks(agentID string) []models.AgentTask {
Envs: envVarsStr, Envs: envVarsStr,
Languages: []map[string]string(task.Languages), Languages: []map[string]string(task.Languages),
RandomRange: task.RandomRange, RandomRange: task.RandomRange,
Secrets: secrets,
Enabled: task.Enabled, 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 != "" { if task.AgentID != nil && *task.AgentID != "" {
// 将请求中已包含的环境变量(已合并)传递给 Agent // 将请求中已包含的环境变量(已合并)传递给 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 调用,执行远程任务并等待结果 // 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 agentID := *task.AgentID
logger.Infof("[Executor] 远程执行任务 #%s: %s (Agent #%s, LogID: %s)", task.ID, task.Name, agentID, logID) 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, "task_id": task.ID,
"log_id": logID, "log_id": logID,
"envs": envs, "envs": envs,
"secrets": secrets,
}) })
if err != nil { if err != nil {
return nil, fmt.Errorf("发送执行命令失败: %v", err) return nil, fmt.Errorf("发送执行命令失败: %v", err)