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