# devops-runner **Repository Path**: daka1004/devops-runner ## Basic Information - **Project Name**: devops-runner - **Description**: 准备实现一个供流水线系统调用的节点的runner,参考gitlab-runner,bkagent,bk-ci agent几个开源地址项目,基于go gorm框架实现一个runner, - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-18 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 gin 架构的流水线 Runner 项目 ## 功能特性 1. 跨平台支持(Windows/Linux) 2. 任务隔离执行(独立工作空间) 3. 命令执行超时控制 4. 详细日志记录 5. 心跳检测机制 6. 数据库持久化(SQLite) ## 依赖管理 本项目使用 Go 模块(`go.mod`)进行依赖管理,确保依赖的一致性和可重复性。以下是项目依赖的主要包: - `gorm.io/gorm`:用于数据库操作的 ORM 库。 - `gorm.io/driver/sqlite`:SQLite 数据库驱动。 - `github.com/golang-jwt/jwt/v4`:用于处理 JWT 令牌。 - `github.com/kballard/go-shellquote`:用于解析 shell 命令。 - `github.com/urfave/cli`:用于处理命令行参数。 ## 目录结构. ├── cmd │ └── cmd.go # 命令行处理 ├── models │ └── models.go # 数据模型 ├── db │ └── db.go # 数据库操作 ├── modules │ ├── process │ │ └── process.go # 进程管理 │ └── setting │ └── setting.go # 配置管理 ├── main.go # 入口文件 ├── go.mod # 模块定义 └── sqlite3 # 数据库存储 ## 启动方式 ### Linux/macOS./ops-runner -serverip -token xxx -serverport ### WindowsC:\devops-runner\ops-runner.exe -serverip -token xxx -serverport 请将 `` 替换为实际的服务端 IP 地址,此地址将在运行时传入并用于心跳检测和任务执行结果的回调。 ## 实现架构图 todo ## 实现原理 1. 日志推送:基于go cmd.wait()方法,cmd.stdout()输出结果直接推送到服务端口,同时api,返回给调用方,同时生成同级目录下的 workspace/executeid/run.log文件中 2. 支持不同的架构windows和linux arm架构,初次启动会在工作目录下生成启动和暂停脚本以及配置文件,后续可以直接通过脚本操作,配置文件配置。 3. todo需要监控机器信息的接口 api, 简单收集,telegraf promethos gops 4. 如何选择? 简单系统监控:使用 shirou/gopsutil 直接获取系统指标。 与 Prometheus 集成:使用 prometheus/client_golang 自定义指标。 插件化部署:使用 telegraf 作为 Agent,通过插件扩展功能。 Go 进程专用监控:使用 google/gops 监控 Go 应用内部状态。 可视化需求:结合 netdata 或 Grafana 展示数据。 5. 测试复杂任务的等待问题和日志问题 6. 自动部署的实现 windows linux ## 开发贡献 1. 克隆项目git clone https://github.com/yourusername/runner.git 2. 创建开发分支git checkout -b feature/new-function 3. 提交代码git commit -m "Add new function" git push origin feature/new-function 4. 发起 Pull Request在 GitHub 上提交 Pull Request```