任务发布

任务发布概念

任务发布指将一个项目内的任务连同该任务关联的表、函数等拷贝至另一个项目的过程。严谨的数据开发流程中一般会需要两个或三个项目:两个项目的场景中一个项目作为开发环境,一个作为生产环境,开发者通常会在开发环境的项目内完成代码开发、流程调试、依赖属性和周期调度属性配置,再将任务发布至生产环境的项目调度运行;三个项目场景中则包含开发环境、测试环境和生产环境,与两个项目的场景相比多出来的测试环境的项目则是将开发环境中的任务模拟生产环境进行运行,确认无误后再发布至生产环境,为任务的发布增加了一层安全性校验。

任务发布方式

离线开发中任务的发布方式有一键发布和导入导出式发布两种,分别适用不同的发布场景:当开发环境和生产环境网络打通时,一键发布较为方便快捷,如下左图;当开发环境和生产环境网络隔离时,需要通过将任务从开发环境中导出后在生产环境中导入从而完成发布,如下右图;

image.png

任务提交后才会出现在发布管理页面的"创建发布包"tab下。

发布包创建

创建发布包即将需要一起发布的任务打成一个包,方便后续的发布,以下将对一些关键操作进行说明。
添加关联:将任务中第一次用到或需要更新的资源、函数、表选择关联后,它们将随任务的发布一起在生产环境完成创建或覆盖。
更新环境参数:环境参数若发生变更,需要更新到生产环境则需要在待打包对象中勾选。
打包:将待打包对象中选中的所有任务、资源、函数、表打成一个包,打包成功后会出现在"发布至目标项目"tab下。

一键发布

导入导出式发布

发布包导出

"发布至目标项目"tab中的发布包点击"导出"后在本项目中创建的发布包将以zip格式下载到本地,包的内容包括源项目引擎类型信息、任务和所在目录及其配置(任务jar包、系统参数、同步任务配置、任务上下游依赖信息、环境参数、告警配置、任务责任人),自定义函数(函数jar包,注册语句)、表(建表语句)。
注意:已创建的发布包在本项目中有修改提交后再次导出,会导出最新修改的发布包;

发布包导入

"发布至本项目"tab中点击"导入发布包"可上传zip格式的发布包,导入成功后后台会自动提交,并对发布包进行解压和解析发布包的发布对象,列表最上方会有对应的发布包记录,可查看发布包内容。

发布

新导入的发布包/发布失败的发布包对应的操作列有发布按钮,点击可发布/再次发布,发布成功的发布包无法再次发布。

  • 发布包检查

点击发布后,后台首先会执行发布包检查:

  1. 本项目支持的任务类型与发布包中的任务类型是否一致,若不同会列出不同的任务类型;

  2. schema是否相同,若不同会列出不同schema的具体内容;

  3. 每个任务配置的告警接收人是否存在,若不存在会提示哪些告警接收人在本项目中不存在;

    • 发布任务

  4. 任务负责人若不在本项目,则相应任务将发布失败;

  5. 若任务关联的资源、表、函数在发布包或本项目中不存在,则任务发布失败;

  6. 任务告警接收人若不在本项目,则自动变更为本项目的管理员;

  7. 表责任人在发布后统一设置为本项目所有者;

  8. 发布过程中,如果任务所在的源目录在本项目中存在,则任务会放在该目录下,若不存在,则会自动创建相应目录后将任务存放在该目录下;

  9. 发布包中的对象将根据名称进行覆盖,若生产项目中存在与开发环境中目录不同的同名任务,则将自动将生产项目下该任务删除,然后按开发环境该任务的源目录创建目录后将任务发布至该目录下;

  10. 若发布包中存在有上下游关系的任务,则链路中若有一个任务发布失败,则整条链路所有任务都将发布失败(已发布成功的部分任务也会回滚);不同链路之间的任务发布相互不影响。

  11. 数据源连接信息(包括kerberos认证)不会覆盖;

  12. 所有任务发布成功,该发布包的状态才会变更为发布成功,否则会变更为发布失败;

  13. 同一发布包多次导入时每次导入均会生成一条记录;

    • 删除发布包

已发布成功的发布包不可被删除,未发布或发布失败的发布包可被删除;