Agent开发

Agent开发规范与标准化打包方法。

Agent开发

  1. 创建项目并导入libagent

    go get github.com/jkstack/libagent
    
  2. 定义一个结构体并实现App接口

  3. 在main函数中添加RegisterService、UnregisterService和Run等libagent库中的接口调用

    switch *act {
    case "install":
        agent.RegisterService(app)
    case "uninstall":
        agent.UnregisterService(app)
    default:
        agent.Run(app)
    }
    

研发与打包规范

  1. 项目根目录中必须包含一个CHANGELOG.md文件,在打包过程中会自动读取该文件中的内容并自动填写到Release的描述信息中,格式可参考样例
  2. 项目根目录中必须包含一个Makefile文件,在打包过程中会使用该文件中的第一个目标进行打包,打包成功后的产物必须存放到release目录下
  3. 开发的代码在原则上需要支持谷歌维护的最新的两个go语言版本,因此在go.mod文件中目前会被设置为1.18版本
  4. 在项目初始化的过程中需要修改contrib目录下的文件,如修改正确的打包路径等
  5. 为方便于外部工具化部署,需要正确修改manifest.yaml文件,使其符合配置文件中的配置项描述

打包方法

通过在项目中引入workflows目录下的build.yml和release.yml可实现项目的自动化打包。

  1. build.yml中定义了当master分支发生合并时会进行代码的lint检查及go build测试
  2. release.yml中定义了当该项目被打上了v*.*.*的标签后将会触发release动作,首先会进行各种系统下的跨平台编译与打包,然后读取CHANGELOG.md中对应版本的描述信息进行创建release操作,并将release目录下的文件进行上传

更多示例

  1. exec-agent: 远程执行脚本以及文件传输
  2. metrics-agent: 监控数据采集