HiveNetBuildTool - 创建自定义构建工具的步骤¶
主要步骤说明¶
您可以基于HiveNetBuildTool创建自定义的构建步骤,参考步骤如下:
1、创建自定义构建工具的基础目录(用于放置自定义构建相关配置和文件),例如:¶
MyBuildTool : 自定义构建工具
|__plugins : 可选, 该目录下放置自定义的构建管道插件
|__build_pipeline.yaml : 必须,自定义构建管道配置(定义构建步骤)
|__config.yaml : 必须,自定义构建工具配置
Build : 构建工具实例
|__src : 可选,放置源码或其他信息,目录名,目录数量由构建工具自定义
|__build.yaml : 必须, 构建配置
|__build.py : 可选, 构建脚本, 也可以不使用脚本,而是自己通过代码方式进行构建
2、开发自定义构建管道插件¶
自定义管道插件必须继承HiveNetPipeline.PipelineProcesser类,实现该类的processer_name和execute两个方法。
完成开发的自定义管道插件请放置在plugins目录下,由框架进行加载。
需要注意的点包括:
(1) processer_name 返回当前处理器名称,建议与实现类的类名一致;
(2) execute 是管道执行方法,也就是当前节点的构建处理方法,可以通过入参的context上下文获取配置信息,推荐的获取方式如下:
from HiveNetPipeline import PipelineProcesser
class ProcesserBuildConfigTemplates(PipelineProcesser):
@classmethod
def processer_name(cls) -> str:
return 'ProcesserBuildConfigTemplates'
@classmethod
def execute(cls, input_data, context: dict, pipeline_obj, run_id: str):
# 获取当前要处理的配置标识
_current_key = context.get('current_key', 'configTemplates') # 获取当前要处理的配置标识(从构建管道配置中获取)
_config = context['build_config'].get(_current_key, None) # 根据标识获取到该配置标识的具体构建配置
# 获取不到配置, 不处理
if _config is None:
return input_data
# 自定义的处理逻辑
...
# 返回输出结果
return input_data
注: context初始化的信息包括:
build_type_config: config.yaml配置文件中对应构建类型(type)的具体配置
base_path: 自定义构建工具目录
cmd_opts: 传入的命令行key-value参数
build: build.yaml配置文件的build(构建参数)配置信息, 注意type、source、output这3个配置,如果cmd_opts有设置则会以cmd_opts中的配置为准
build_config: build.yaml配置文件
3、编写build_pipeline.yaml管道配置文件¶
按照实际构建的顺序要求编写build_pipeline.yaml管道配置文件,该配置文件必须为yaml格式,配置内容要求与HiveNetPipeline的管道配置要求一致。
4、编写config.yaml配置文件¶
在config.yaml配置文件中指定构建类型,以及自定义管道插件所在目录(plugins)和管道配置文件(pipeline),
# ******************************************
# 构建工具配置(支持配置多个不同的构建类型)
# Item Key: 构建类型标识(type)
# plugins: str|list, 该构建类型的自有管道插件目录(构建工具目录的相对路径)
# 注: 如果为str代表指定1个路径, 如果是list则通过数组形式指定多个管道插件目录
# pipeline: str, 构建管道配置文件(构建工具目录的相对路径)
# selfConfig: dict, 不同类型构建工具的自有配置参数
# ******************************************
SeflBuildTool:
plugins: plugins
pipeline: build_pipeline.yaml
selfConfig:
5、在真正的构建实例目录下创建build.yaml构建配置文件¶
build.yaml包含了真正进行构建的具体参数配置。
7、创建构建脚本¶
参考脚本如下:
from HiveNetBuildTool.build import BuildPipeline
if __name__ == '__main__':
# 初始化构建管道对象
_pipeline = BuildPipeline(
'/MyBuildTool', config_file='config.yaml', build_file='build.yaml',
cmd_opts={'source': './源码目录', 'output': './输出目录'}
)
# 启动构建
_pipeline.start_build()