bk-ci插件生态建设:从开发到发布的完整流程
bk-ci插件生态建设从开发到发布的完整流程【免费下载链接】bk-ci蓝鲸持续集成平台(蓝盾)项目地址: https://gitcode.com/gh_mirrors/bk/bk-cibk-ci蓝鲸持续集成平台作为一款强大的DevOps工具其插件生态系统为开发者提供了无限可能。本文将带你探索如何从零开始构建一个bk-ci插件从开发环境搭建到最终发布上线掌握插件生态建设的每一个关键步骤。一、插件开发快速入门1.1 认识bk-ci插件流水线插件Atom是bk-ci流水线中的最小执行单元用于完成特定的构建任务如代码拉取、编译、测试、部署等。无论是简单的脚本执行还是复杂的自动化流程都可以通过插件形式集成到bk-ci中。1.2 支持的开发语言bk-ci插件支持多种主流编程语言选择适合你的技术栈开始开发语言推荐度SDKJava⭐⭐⭐⭐⭐java-atom-sdkPython⭐⭐⭐⭐python-atom-sdkNodeJS⭐⭐⭐tencent/nodejs_atom_sdkGolang⭐⭐⭐golang-atom-sdk1.3 插件开发完整流程插件开发主要分为三个阶段初始化插件登录工作台、新增插件、克隆代码库开发插件编写task.json配置、开发业务逻辑、本地调试发布插件提交构建、测试验证、审核发布二、核心配置文件task.json详解2.1 配置文件结构task.json是插件的核心配置文件定义了插件的基本信息、输入输出和执行方式{ atomCode: myAtom, // 插件唯一标识必填 defaultLocaleLanguage: zh_CN, // 默认语言非必填 execution: { // 执行配置必填 language: python, demands: [], target: demo }, inputGroups: [], // 输入字段分组非必填 input: {}, // 输入字段定义必填 output: {}, // 输出字段定义非必填 config: {} // 插件控制特性非必填 }注意task.json内容长度最大为64KB2.2 输入字段配置输入字段定义了插件在流水线中显示的表单元素支持多种UI组件{ input: { repositoryUrl: { label: 代码库地址, type: vuex-input, placeholder: 请输入 Git 仓库地址, desc: 支持 HTTP/HTTPS/SSH 协议, required: true, rule: { regex: ^(https?|git):// } }, branch: { label: 分支, type: select-input, default: master, optionsConf: { searchable: true, multiple: false, url: /repository/api/user/repositories/{projectId}/branches } } } }支持的UI组件类型包括单行文本框、多行文本框、代码编辑框、下拉框、复选框等满足各种交互需求。2.3 输出字段配置输出字段定义了插件执行完成后产生的结果支持三种类型{ output: { buildResult: { type: string, description: 构建结果 }, artifactPath: { type: artifact, description: 构建产物路径 }, reportHtml: { type: report, description: 测试报告 } } }string字符串变量长度不超过4KBartifact构件文件自动归档到仓库report报告文件支持HTML渲染三、多语言开发实战3.1 Python插件开发Python是开发bk-ci插件的热门选择下面是一个简单的Python插件结构my-python-atom/ ├── task.json ├── setup.py ├── requirements.txt └── demo/ ├── __init__.py └── command_line.py核心代码示例import python_atom_sdk as sdk def main(): sdk.log.info(插件开始执行) # 获取输入参数 input_params sdk.get_input() input_demo input_params.get(inputDemo, ) # 业务逻辑处理 result f处理结果: {input_demo} # 设置输出 output_data { status: sdk.status.SUCCESS, message: 执行成功, data: { outputDemo: { type: sdk.output_field_type.STRING, value: result } } } sdk.set_output(output_data)3.2 Java插件开发Java插件适合构建复杂业务逻辑利用成熟的Java生态系统my-java-atom/ ├── task.json ├── pom.xml └── src/main/ ├── java/com/example/atom/ │ ├── AtomParam.java │ └── DemoAtom.java └── resources/META-INF/services/ └── com.tencent.bk.devops.atom.spi.TaskAtom核心代码示例AtomService(paramClass AtomParam.class) public class DemoAtom implements TaskAtomAtomParam { private static final Logger logger LoggerFactory.getLogger(DemoAtom.class); Override public void execute(AtomContextAtomParam atomContext) { AtomParam param atomContext.getParam(); AtomResult result atomContext.getResult(); logger.info(输入参数: {}, param.getDesc()); // 业务逻辑处理 String output 处理结果: param.getDesc(); // 设置输出 result.setStatus(Status.success); result.getData().put(testResult, new StringData(output)); } }四、插件调试与测试4.1 本地调试环境配置在代码库根目录创建调试配置文件不要提交到代码库input.json- 模拟输入参数{ inputParam1: 测试值1, inputParam2: 测试值2 }.sdk.json- SDK配置{ buildType: DOCKER, projectId: test-project, agentId: 1, secretKey: test-secret, gateway: xxx.xxx.xxx.xxx }4.2 不同语言调试命令Python调试pip install python-atom-sdk python ./setup.py sdist pip install dist/XXX.tar.gz demo # 执行入口命令Java调试mvn clean package java -jar target/myJavaAtom-jar-with-dependencies.jarGolang调试go run main.go # 或构建后运行 go build -o app main.go ./app五、插件发布与版本管理5.1 发布流程插件发布需要经过以下步骤提交发布填写发布信息选择版本类型系统构建自动打包插件上传制品测试验证创建测试流水线验证插件功能审核发布首次发布需要审核升级版本免审核5.2 版本号规范遵循SemVer规范主版本号.次版本号.修正号主版本号不兼容的API修改1.0.0 → 2.0.0次版本号向下兼容的功能性新增1.0.0 → 1.1.0修正号向下兼容的问题修正1.0.0 → 1.0.1六、插件开发最佳实践6.1 参数校验def validate_params(input_params): required_fields [repositoryUrl, branch] for field in required_fields: if not input_params.get(field): return False, f缺少必要参数: {field} return True, 6.2 错误处理try { // 业务逻辑 } catch (IOException e) { result.setErrorInfo( Status.failure, 100002, // 网络错误 ErrorType.THIRD_PARTY, new String[]{接口调用失败: e.getMessage()} ); }6.3 敏感信息处理在task.json中将敏感字段设置isSensitive: true敏感信息不会在日志中明文显示使用插件私有设置管理账号密码等敏感数据七、常见问题解答Q: task.json修改后流水线没有生效A: 需要重新构建插件并刷新流水线页面清除缓存。Q: 如何获取上一个插件的输出变量A: 在参数类中定义同名参数即可自动接收。Q: 插件执行报错Plugin File Sha1 is wrong!A: 联系插件作者重新发布插件版本。Q: 如何让插件支持多操作系统A: 在execution.os中配置不同操作系统的执行命令。通过本文的指南你已经掌握了bk-ci插件开发的全过程。无论是扩展现有功能还是创建全新的自动化工具bk-ci插件生态都能满足你的需求。开始动手开发你的第一个插件吧更多详细文档请参考ai/skills/pipeline-plugin-development/SKILL.md。【免费下载链接】bk-ci蓝鲸持续集成平台(蓝盾)项目地址: https://gitcode.com/gh_mirrors/bk/bk-ci创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考