go-agent-development

Go 版本:1.19+ 进程组成:DevopsDaemon(守护进程) + DevopsAgent(主进程) 核心包:api/(API 调用)| config/(配置)| job/(任务)| pipeline/(流水线) 日志:logs.Debug/Info/Error/WithError

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "go-agent-development" with this command: npx skills add tencentblueking/bk-ci/tencentblueking-bk-ci-go-agent-development

Go Agent 开发

Quick Reference

Go 版本:1.19+ 进程组成:DevopsDaemon(守护进程) + DevopsAgent(主进程) 核心包:api/(API 调用)| config/(配置)| job/(任务)| pipeline/(流水线) 日志:logs.Debug/Info/Error/WithError

最简示例

// API 调用 func AgentStartup() (*httputil.DevopsResult, error) { url := buildUrl("/ms/environment/api/buildAgent/agent/thirdPartyAgent/startup") startInfo := &ThirdPartyAgentStartInfo{ HostName: systemutil.GetHostName(), HostIp: systemutil.GetAgentIp(), DetectOs: systemutil.GetOsName(), MasterVersion: config.AgentVersion, } return httputil.NewHttpClient().Post(url).Body(startInfo, false). SetHeaders(config.GAgentConfig.GetAuthHeaderMap()).Execute(nil).IntoDevopsResult() }

When to Use

  • 开发构建机 Agent

  • 实现任务执行逻辑

  • 处理 Agent 与后端通信

  • 编写 Go 工具函数

When NOT to Use

  • 后端 Kotlin/Java 开发 → 使用 backend-microservice-development

  • 调度模块业务逻辑 → 使用 dispatch-module-architecture

项目结构

src/agent/ ├── agent/ # 主代理 │ └── src/pkg/ │ ├── api/ # API 调用 │ ├── config/ # 配置管理 │ ├── collector/ # 数据采集 │ ├── job/ # 任务执行 │ └── util/ # 工具函数 ├── agent-slim/ # 轻量版代理 └── common/ # 通用库

命名规范

// 包命名:小写单词,不使用下划线 package api package config

// 结构体:PascalCase type ThirdPartyAgentStartInfo struct { HostName string json:"hostname" HostIp string json:"hostIp" }

// 常量:驼峰命名 const ( KeyProjectId = "devops.project.id" KeyAgentId = "devops.agent.id" )

// 枚举 type BuildJobType string const ( AllBuildType BuildJobType = "ALL" DockerBuildType BuildJobType = "DOCKER" )

配置管理

type AgentConfig struct { Gateway string ProjectId string AgentId string SecretKey string ParallelTaskCount int }

var GAgentConfig *AgentConfig

func GetGateWay() string { return GAgentConfig.Gateway }

错误处理

// 标准错误检查 if err != nil { logs.WithError(err).Error("agent startup failed") return }

// 重试模式 for { _, err = job.AgentStartup() if err == nil { break } logs.WithError(err).Error("retry startup") time.Sleep(5 * time.Second) }

// Panic 恢复 defer func() { if err := recover(); err != nil { logs.Error("panic recovered: ", err) } }()

日志规范

logs.Debug("debug message") logs.Info("info message") logs.Infof("formatted: %s", data) logs.Error("error message") logs.WithError(err).Error("with error context")

并发模式

// 启动 goroutine go collector.Collect() go cron.CleanJob()

// 使用 defer 清理 defer config.EBus.Unsubscribe(config.IpEvent, eBusId)

// Channel 通信 done := make(chan bool) go func() { // do work done <- true }() <-done

HTTP 客户端

httputil.NewHttpClient(). Post(url). Body(data, false). SetHeaders(headers). Execute(nil). IntoDevopsResult()

Checklist

开发 Agent 功能前确认:

  • 使用标准错误处理模式

  • 添加适当的日志记录

  • goroutine 有 panic 恢复

  • 网络调用有重试机制

  • 资源使用 defer 清理

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

frontend-vue-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

backend-microservice-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

managing-devops-pipeline

No summary provided by upstream source.

Repository SourceNeeds Review