fix: agent secret masking
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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"`
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user