从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!

本文主要是介绍从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

file

引言

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

一、发版物料

(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配合。

二、发版流程

  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 ),低版本会报错

file

  • 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安装 按照文档执行操作

file (2)配置maven仓库

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

file

可以查看pom的提交日志,查看修改记录,正常在review pr的时候会检查这一项。但是可能会有遗漏或重复的情况。

  1. 修改版本

(1)为了方便后续打包等操作,可以增加环境变量。包括后续对svn的一些操作所需的环境变量,建议在文档中新建的变量都创建为环境变量。

file

(2)文档版本修改

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

file

  1. 部署包构建发布

部署包的构建分为三个部分

(1)发布检查

a.分支准备

file

首先要在官方的github仓库创建prepare分支,fetch分支后运行上述命令。文档中的origin要根据用户clone的仓库决定,如果直接clone的是官方仓库,这里使用origin没有问题。如果使用的是fork的仓库,创建upstream(如果叫upstream的话)指向官方仓库,那GH_REMOTE得是upstream。发版的所有操作都是直接推到官方仓库。

一般情况prepare分支是基于dev创建的。 在clone或者创建upstream时,最好是使用git协议,不要使用https,否则推送tag会失败。

b.发版校验

命令运行大概需要8G内存,注意资源。

file

运行结束后最好检查一下dolphinscheduler-dist/target文件夹的大小,如果超过950M,并且没有瘦身策略,发版得暂停。

这一步主要是为了验证构建部署包的过程是否正确。

(2)发版准备

需要清理掉发版校验的文件,执行clean命令。clean命令执行后可能会存在部分文件未清理的情况,可以考虑执行git stash暂存。

这里如果是多次发版,需要再执行 mvn release命令之前清理掉本地和远程(官方仓库)的tag,否则会报错。这里需要提前配置 注意1 的内容。

该步骤不会有成果。

如果在命令中出现clone prepare分支失败的问题需要检查upstream的协议,网络等情况,如果网络不稳定可以重试。

此处需要检查仓库中prepare分支和tag的commit,需要一致。

file

(3)部署发布

 a. 执行命令

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

file

如果发版过程中发现有代码的修改,需要重新执行发版的操作,必须至少要从【发版准备】开始,执行【发版准备】前需要执行git release:clean 命令,如果有多余文件可以git stash暂存。多次发版需要注意stagingRepositories中文件的时间,如果发现时间与执行发版命令时间不对应情况可能说明包为同步。正常stagingRepositories的文件会替换,无需主动删除。

发版过程会使用到gpg -s的命令,命令的密码缓存应该是十分钟,如果服务器资源不太够,构建时间会超过十分钟,这里需要保证gpg 密码的缓存时间。

file

到这里所有发布包的构建流程已经结束。

b. 发布包提交apache仓库

file

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

file

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

file

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

file

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

部分服务器 shasum的命令没有,可以使用sha512sum shasum -a 512 = sha512sum.

file

打包日志里面写了生成的asc文件位置。

c. 发版文件检查

file

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

创建RELEASE NODE

file

这里要求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.第三封邮件在后续内容介绍

8. 官网文档修改

file

如果新增是一个两个版本号的版本,需要在 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版本执行。

三、版本验证

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

file

发版完成

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

本文由 白鲸开源科技 提供发布支持!

这篇关于从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094905

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除