一 前言
Harness 是Devops的一把利剑,用过drone,gitness都知道,Y(aml)asC/P(ipeline)asC 是其核心,其利用模块化可视化的语言将CICD更加便利更加AI的供用户使用。在从Jenkins做migration到Harness过程中,难免会涉及到数据集的转换,比如input sets,还有一些pipeline stage等的转换。但是Harness在API doc上只提供了go,python,java,curl的API:
所以针对一个python用户,如何快速生成python的SDK呢?办法是有的,一是直接api接口自己手动封装,但是这样比较耗时费力,另外一种办法是使用Swagger Codegen,利用Harness提供的swagger.json生成一个Python SDK。所以下面我就介绍下如何使用Swagger Codegen生成python的SDK。
二 Python SDK生成
2.1 Swagger Codegen简介
Swagger Codegen是一个能够自动化生成各种语言的 SDK,server subs,还有相关API文档的自动化工具。其利用OAS协议活swagger2.0规范,通过yml/json形式定义API内容,通过解析路由等信息生成代码和文档,方便语言间互访,消除服务间的猜忌行为。截至发稿,现在稳定的版本是3.0.51,在官方的文档中详细介绍了如何安装和使用。
2.2 环境准备
环境准备:腾讯轻量应用服务器
OS:CentOS Linux release 7.9.2009 (Core)
Java:openjdk version "11.0.21" 2023-10-17 LTS(可以使用yum安装:yum install java-11-openjdk)
安装过程:
代码语言:shell复制wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.51/swagger-codegen-cli-3.0.51.jar -O swagger-codegen-cli.jar
java -jar swagger-codegen-cli.jar --help
当出现如下结果,则证明安装没问题了:
2.3 Python SDK 生成
从Harness的API官方文档页面第一页可以找到swagger.json的下载路径:Download,点击下载后并上传至服务器目录,我这里是上传在swagger-codegen-cli.jar 的同级目录:
同时在当前目录创建一个目录作为存储生成结果的目录,我这里是tmp
使用Swagger Codegen生成指令:
代码语言:shell复制java -jar swagger-codegen-cli.jar generate -i swagger.json -l python -o tmp
-i: 制定本地文件json路径也可以用-u制定网络文件
-l: 指定生成的语言
-o:指定生成结果存放的目录
一顿操作完成后,会在tmp里面生成一些文件和文件夹:
可以看到生成完毕了,client是SDK的存放的文件夹,还有READ ME docs等,可以利用git_push.sh将结果集推送至你的github仓库上。
至此python的SDK就生成了。接下来就可以验证其有效性了。我将在下篇文章进行验证。
三 总结
本文主要是介绍了Swagger Codegen的原理和使用,通过利用Harness自带的swagger.json文件自动化生成了python的SDK,方便后期二次开发和维护,提升人工效率。