暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从零到一全面掌握Apache DolphinScheduler发版流程!

大数据技能圈 2024-08-20
87

点击蓝字,关注我们



引言



Apache DolphinScheduler的发版流程对于确保软件质量和社区协作至关重要,社区Committer王兴杰为我们详细介绍了Apache DolphinScheduler的发版流程,包括环境准备、流程文档、基础工具准备、依赖包确认等关键步骤,并指出了发版流程中可能会遇到的麻烦以及相应的解决方案,欢迎学习指正。

1

发版物料

(1)Apache要求
a. Maven仓库物料(发版过程中会存储在临时库中)
https://repository.apache.org/content/repositories/orgapachedolphinscheduler-{index}/org/apache/dolphinscheduler/
b. 发布包、签名文件和keys
对发布版本签名,用户也可据此判断下载的版本是否被篡改。
(2)DolphinScheduler要求
Dockerhub 镜像
Helm 文件
(3)权限要求
  • PMC Member拥有完整的发版权限;
  • Committer会有小部分权限缺失,需要PMC Member配合。


2

发版流程

  1. 环境准备
  • jdk :1.8版本以上 (1.8.0_271)
  • Maven:尽可能保证3.9版本以上(3.9.6)
  • 低版本maven构建部署包会失败
  • gpg:各版本均可 (2.0.22)
  • svn:高于1.6版本(1.7.14 ),低版本会报错

  • git:1.8.3.1
  • 服务器系统:MacOS,Linux(Linux服务器、CentOS7)
  • 服务器要求需要能访问Apache官网或GitHub,目前Window在同步gpg、公钥ID时会出现异常,建议尽可能使用非Window系统。
  1. 发版流程文档
  • 中文:
    https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/zh/contribute/release.md
  • 英文:
    https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/en/contribute/release.md
  1. 基础工具准备
    (1)gpg安装
    按照文档执行操作

    (2)配置maven仓库
  • 修改settings-security.xml
    文件
  • 修改conf/settings.xml
    配置文件(注意路径),文件中的apache LDAP是apache对应的用户名密码,明文。
  1. 依赖包确认
    这里主要检查依赖包对一个的license 和对应的下载地址。

可以查看pom的提交日志,查看修改记录,正常在review pr的时候会检查这一项。但是可能会有遗漏或重复的情况。
  1. 修改版本
(1)为了方便后续打包等操作,可以增加环境变量。包括后续对svn的一些操作所需的环境变量,建议在文档中新建的变量都创建为环境变量。

(2)文档版本修改
注意:docsdev.js
是Apache DolphinScheduler官网该版本的引用位置相关文件,文件修改的效果只有在website的pr被merge之后才能体现,所以这部分文件需要严格按照文档修改,建议在打包之前检查一下文件的修改情况。

6. 部署包构建发布
部署包的构建分为三个部分
(1)发布检查
a.分支准备

首先要在官方的github仓库创建prepare分支,fetch分支后运行上述命令。文档中的origin要根据用户clone的仓库决定,如果直接clone的是官方仓库,这里使用origin没有问题。如果使用的是fork的仓库,创建upstream(如果叫upstream的话)指向官方仓库,那GH_REMOTE得是upstream。发版的所有操作都是直接推到官方仓库。
一般情况prepare分支是基于dev创建的。
在clone或者创建upstream时,最好是使用git协议,不要使用https,否则推送tag会失败。
b.发版校验

命令运行大概需要8G内存,注意资源。
运行结束后最好检查一下dolphinscheduler-dist/target
文件夹的大小,如果超过950M,并且没有瘦身策略,发版得暂停。
这一步主要是为了验证构建部署包的过程是否正确。
(2)发版准备
需要清理掉发版校验的文件,执行clean命令。clean命令执行后可能会存在部分文件未清理的情况,可以考虑执行
git stash
暂存。
这里如果是多次发版,需要再执行 mvn release命令之前清理掉本地和远程(官方仓库)的tag,否则会报错。这里需要提前配置 注意1 的内容。
该步骤不会有成果。
如果在命令中出现clone prepare分支失败的问题需要检查upstream的协议,网络等情况,如果网络不稳定可以重试。
此处需要检查仓库中prepare分支和tag的commit,需要一致。

(3)部署发布
a. 执行命令
该命令基于发版准备的结果,所以【发版准备】的结果不能做任何修改(包括代码),命令结束后会在
https://repository.apache.org/#stagingRepositories中显示内容。这个内容可能会有一点点延迟,但正常不会超过五分钟。如果发现没有文件,大概率是maven的远程仓库配置问题,可以排查一下。

如果发版过程中发现有代码的修改,需要重新执行发版的操作,必须至少要从【发版准备】开始,执行【发版准备】前需要执行git release:clean 命令,如果有多余文件可以git stash暂存。多次发版需要注意stagingRepositories中文件的时间,如果发现时间与执行发版命令时间不对应情况可能说明包为同步。正常stagingRepositories的文件会替换,无需主动删除。
发版过程会使用到gpg -s的命令,命令的密码缓存应该是十分钟,如果服务器资源不太够,构建时间会超过十分钟,这里需要保证gpg 密码的缓存时间。

到这里所有发布包的构建流程已经结束。
b. 发布包提交apache仓库

建议将SVN_DIR_DEV和 SVN_DIR_RELEASE 也都设置为环境变量。

如果是committer这部其实可以不用执行, commit没有权限。

这里DolphinScheduler并没有打开对应的设置,所以这部分需要将gpg-key-id导出来后发给PMC帮忙添加,或者在发版邮件后补充。但是尽可能是添加到KEYS里面。

这里需要注意的是tar.gz.asc
文件,可以使用【注意】部分的命令添加,但是在打包的时候其实是已经生成了。也可以手动在maven本地仓库里面拷贝出来。
部分服务器 shasum的命令没有,可以使用sha512sum shasum -a 512 = sha512sum
.

打包日志里面写了生成的asc文件位置。
c. 发版文件检查


除了上述的文件,建议在检查一下
doc/conf/docsdev.js
文件。
到此为止发版打包的工作就已经结束了。
7. 发版邮件
创建RELEASE NODE

这里要求python要在3.0版本,生成的结果是一个md文件,文件中自带了pr的链接,最好是在检查一下pr的名称和对应的位置,这里的位置错误会较多,很多bug也到了improvement里。
RELEASE NODE创建好后会马上触发一个工作流,用来构建docker镜像和helm文件。构建的流水线日志可以在https://github.com/apache/dolphinscheduler/actions中查看。
【注意】如果是多次创建RELEASE NODE的话,需要检查一下
https://github.com/apache/dolphinscheduler/releases是不是有重复的内容,或者先把原来的删掉再创建新的。这里新创建的不会覆盖,只会新增。
邮件一共有三封
a. 发版投票邮件
按照指导文档中的内容编写邮件即可,发送邮件的邮箱需要提前订阅dev邮件,否则其他人回复的邮件无法看到。
邮件写完后再次检查一下里面涉及到所有的链接,是否有正确的内容。
等待72小时以上,至少有三名pmc参与投票,committer和contributor不要求数量。没有一名PMC发出-1的投票,则投票结束。
b.投票结束邮件
按照指导文档中的内容编写邮件即可,投票人员的title需要问社区,以前官网有pmc和committer的名单,但是最近找不到了。
c.第三封邮件在后续内容介绍
  1. 官网文档修改

如果新增是一个两个版本号的版本,需要在
https://github.com/apache/dolphinscheduler/blob/dev/.github/ISSUE_TEMPLATE/bug-report.yml中添加对应的版本。比如3.3*这种。
这里的修改一定要仔细,如果修改错误官网就会有内容丢失甚至无法访问,注意符号的转义。
pr被merge后,官网的文档就已经可以查看了,这里浏览器会有缓存,清一下,或者无痕打开。
这里还需要再发一封邮件,通知发版已经结束。
邮件发布后需要删除prepare分支。
  1. 新闻稿件
新闻稿件主要是描述这次发版的主要变更,一般三位版本号的版本主要修复bug,和一些improvement。稿件中需要简述一下重点的pr内容,图片可以查看pr提交的内容,有的文档中会有对应的图片,中文文档的pr列表中需要翻译一下pr的名字。最后的贡献者在tool中有对应的工具,同样使用python3.0版本执行。


3

版本验证

  1. 官网文档
    登录官网查看对应版本是否正常
  2. dockerhub镜像
    不同的服务镜像不同,需要检查所有的镜像更新时间和tag

4

发版完成

恭喜你,完成以上步骤后,Apache DolphinScheduler的发版流程就全部结束了。感谢所有贡献者的辛勤工作和社区的支持,对发版工作感兴趣的朋友可以根据教程实操一下,社区欢迎这样的尝试。

< 🐬🐬 >
精彩推荐


用户实践案例
奇富科技  蜀海供应链 联通数科 拈花云科
蔚来汽车 长城汽车 集度 长安汽车
思科网讯 生鲜电商 联通医疗 联想
新网银行 消费金融  腾讯音乐 自如
有赞 伊利 当贝大数据
联想 传智教育 Bigo
通信行业  作业帮


迁移实践
Azkaban   Ooize   
Airflow (有赞案例) Air2phin(迁移工具)
Airflow迁移实践
Apache DolphinScheduler 3.0.0 升级到 3.1.8 教程


新手入门
选择Apache DolphinScheduler的10个理由
Apache DolphinScheduler 3.1.8 保姆级教程【安装、介绍、项目运用、邮箱预警设置】轻松拿捏!
Apache DolphinScheduler 如何实现自动化打包+单机/集群部署?
Apache DolphinScheduler-3.1.3 版本安装部署详细教程
Apache DolphinScheduler 在大数据环境中的应用与调优
< 🐬🐬 >
参与社区
参与Apache DolphinScheduler 社区有非常多的参与贡献的方式,包括:


贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?
q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

参与社区贡献:https://dolphinscheduler.apache.org/zh-cn/community

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的!


我知道你在看

文章转载自大数据技能圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论