准备火花版本

背景

火花的发布经理角色意味着你负责几个不同的东西:

  1. 准备您的设置
  2. 准备发布候选:
    1. 切割一个发布分支
    2. 通知时间的社区
    3. 导致清理JIRA处理组件
    4. 修改代码的分支机构提供必要的版本更新
  3. 运行一个发布的投票过程:
    1. 使用自动化工具创建发布候选
    2. 调用选票和筛选问题
  4. 完成和发布一个版本:
    1. 网站更新的火花
    2. 编写发布说明
    3. 宣布释放

准备您的设置

如果你是一个新版本经理,你可以阅读从以下的过程:

  • 发布https://www.apache.org/dev/release-signing.html签署
  • gpg签署https://www.apache.org/dev/openpgp.html
  • svn https://www.apache.org/dev/version-control.html https-svn

准备gpg密钥

你可以跳过这一部分如果你已经上传你的关键。

生成密钥

这里有一个gpg 2.0.12的例子。如果你使用gpg版本1系列,请参考generate-key获取详细信息。

gpg——美元full-gen-key gpg (GnuPG) 2.0.12;版权(C) 2009自由软件基金会,Inc .这是自由软件:你可以自由变化和重新分配。没有保修,法律允许的程度。请选择你想要什么样的关键:(1)RSA和RSA(默认)(2)DSA和困难问题(3)DSA(仅签名)(4)RSA(仅签署)你的选择吗?1 RSA密钥可能是1024到4096位长。keysize你想生成什么?(2048)4096请求keysize多久4096位请指定生成的关键应该是有效的。0 =键不到期< n > =键在n天到期< n > w =关键到期n周< n > m =关键在n个月到期< n > y =关键到期n年的关键是有效的吗?(0)关键不到期这是正确的吗?(y / N) y GnuPG需要构建一个用户ID来识别你的关键。 Real name: Robert Burrell Donkin Email address: rdonkin@apache.org Comment: CODE SIGNING KEY You selected this USER-ID: "Robert Burrell Donkin (CODE SIGNING KEY) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: key 04B3B5C426A27D33 marked as ultimately trusted gpg: revocation certificate stored as '/home/ubuntu/.gnupg/openpgp-revocs.d/08071B1E23C8A7E2CA1E891A04B3B5C426A27D33.rev' public and secret key created and signed. pub rsa4096 2021-08-19 [SC] 08071B1E23C8A7E2CA1E891A04B3B5C426A27D33 uid Jack (test)  sub rsa4096 2021-08-19 [E]

注意,最后8位数字(26 a27d33)的公钥键ID

上传关键

生成公钥后,我们应该上传到公钥服务器:

gpg——美元keyserver hkps: / / keys.openpgp.org——将钥匙26 a27d33

请参考keyserver-upload获取详细信息。

和你的代码签名密钥更新密钥文件

代码签名密钥(a.k.。一个ascii保护内存公钥),运行以下命令:

gpg——出口——甲26 a27d33美元

然后将生成的密钥文件的关键:

#移动dev /释放/投票时完成。见下面的完成释放svn co -深度= " https://dist.apache.org/repos/dist/dev/spark " svn-spark #文件编辑svn-spark /密钥文件svn ci -用户名ASF_USERNAME美元——密码“ASF_PASSWORD美元”- m“更新键”

如果你想释放另一台机器上,你可以转移你的秘密那台机器通过的关键gpg——export-secret-keysgpg——进口命令。

安装码头工人

运行脚本创建发布候选通过码头工人。您需要安装码头工人之前运行这些脚本。请确保您可以运行码头工人作为非根用户。看到https://docs.docker.com/install/linux/linux-postinstall为更多的细节。

准备发布的火花

主要的一步准备释放是创建一个发布分支。这是通过标准的Git分支机构和社区应该宣布一旦创建分支。

减少发布候选版本

如果这不是第一个RC,那么确保JIRA的问题已经解决了自上次RC标记为解决和有一个目标版本这个发布版本。

追踪任何问题悬而未决的公关目标这个版本,创建一个过滤器在JIRA这样的查询项目=火花和“目标版本/ s”=“12340470”和状态(开放、开放、“进步”)

目标版本使用字符串值,找到对应的数值通过释放到现有问题,目标版本和(如点击版本。发现一个问题针对2.2.1和点击版本链接的目标版本字段)

验证从git日志他们是否真的使它在新RC。检查JIRA问题发布说明标签,确保它们是记录在相关迁移指南打破变化或晚些时候在网站上发布新闻。

减少发布候选版本,有4个步骤:

  1. 创建一个git候选版本标签。
  2. 包版本的二进制文件和来源,并上传至Apache分期SVN回购。
  3. 创建发布文档,并上传到Apache分期SVN回购。
  4. 发布一个快照Apache Maven回购。

切割过程中发布候选版本已经自动通过dev /创建发布/ do-release-docker.sh脚本。运行此脚本,类型信息需要,等待,直到它完成。你也可以通过做一个步骤- s选择。请运行do-release-docker。sh - h和看到更多的细节。

调用发布投票的候选人

发布投票发生在Apache火花开发人员列表(PMC)投票。看看过去的投票线程,看看这个收益。电子邮件应该遵循这种格式

  • 使缩短jira使用的完整列表的链接https://s.apache.org/
  • 如果可能,附加草案的发布说明电子邮件
  • 确保投票结束时间是UTC格式。使用这个脚本生成
  • 确保电子邮件的文本格式和链接是正确的

一旦完成了投票,你也应该发总结邮件总数,看起来像一个主题【投票】[结果]…

完成发布

请注意,dev /创建发布/ do-release-docker.sh脚本(完成步骤)自动化大多数以下步骤除了:

  • 发布到凹口
  • 更新的配置Algolia履带
  • 从镜像网络删除旧版本
  • 更新其他的火花的网站
  • 创建和上传火花码头工人图像
  • 创建一个消息

每一步完成后都要请手动验证结果。

Apache版本上传目录

小心!

这一步是不可逆所以确保你选择正确的暂存库。一旦你的工件进入发布文件夹,他们不能被删除。

投票通过后,将二进制文件上载到Apache的镜子,您将二进制文件从dev目录(这应该是他们在哪里投票)发布目录。这种“移动”是唯一的方法可以添加东西实际发布目录。(注意:只有PMC可以搬到发布目录)

#“开发”的子目录移动到#相应目录“释放”出口SVN_EDITOR = vim svn美元mv https://dist.apache.org/repos/dist/dev/spark/v1.1.1-rc2-bin https://dist.apache.org/repos/dist/release/spark/spark-1.1.1 #如果你添加你的签名密钥文件的关键,也更新版本复制。svn co -深度= " https://dist.apache.org/repos/dist/release/spark "文件svn-spark旋度" https://dist.apache.org/repos/dist/dev/spark/KEYS " > svn-spark /键(cd svn-spark & & svn ci -用户名ASF_USERNAME美元——密码“ASF_PASSWORD美元”- m“更新键”)

验证中存在的资源https://www.apache.org/dist/spark/。这可能需要一段时间对他们来说是可见的。这将是在Apache网络镜像。检查版本发布的检查结果https://checker.apache.org/projs/spark.html

对于Maven中央存储库,您可以发布的Apache Nexus Repository Manager。这是已填充的发布构建版本。sh publish-release的一步。登录,打开暂存库,找到一个投票表决(如。orgapachespark - 1257为https://repository.apache.org/content/repositories/orgapachespark-1257/),选择并点击释放并确认。如果成功的话,它应该出现在https://repository.apache.org/content/repositories/releases/org/apache/spark/spark-core_2.11/2.2.1/和https://repository.apache.org/content/groups/maven-staging-group/org/apache/spark/spark-core_2.11/2.2.1/下相同的(寻找正确的发布版本)。一段时间后,这将是想同步Maven中央自动。

上传到PyPI

你需要的凭证spark-upload账户,可以发现这个消息(仅PMC成员可见)。

可以上传使用的构件线。运行:

线上传——repository-url https://upload.pypi.org/legacy/ pyspark - {version} . tar。广州pyspark - {version} .tar.gz.asc

调整的命令文件相匹配的新版本。如果由于某种原因线上传是不正确的(如http故障或其他问题),您可以重命名工件pyspark-version.post0.tar.gz从PyPI并重新上传,删除旧的工件。

发布到凹口

出版使用凹口这种形式。因为它需要进一步手动步骤,还请联系PMC

将钢筋混凝土构件从存储库

投票过后,你将通过RC版本库,你应该删除RC目录从暂存库。例如:

svn rm https://dist.apache.org/repos/dist/dev/spark/v2.3.1-rc1-bin/ https://dist.apache.org/repos/dist/dev/spark/v2.3.1-rc1-docs/ \ \ - m“删除RC构件。”

也一定要删除未暂存库的Apache Nexus Repository Manager

从镜像网络删除旧版本

火花总是保持最新发布的维修在镜子里的每个分支网络。删除旧版本简单地使用svn rm:

美元svn rm https://dist.apache.org/repos/dist/release/spark/spark-1.1.0

您还需要更新js / download.js指示释放不再反映,以便正确的链接在网站上生成。

更新Apache火花存储库

查看提交的候选版本标记传递和应用正确的版本标签。

git标签v1.1.1 v1.1.1-rc2 #美元RC通过apache v1.1.1 git推动美元

更新的配置Algolia履带

上的搜索框火花文档网站利用Algolia履带。在发布之前,请更新爬虫配置Apache引发的新版本Algolia爬虫管理控制台。如果你没有访问配置,接触Gengliang王小李寻求帮助。

网站更新的火花

上传文档生成

网站存储库位于https://github.com/apache/spark-website

建议不要删除生成的文档的最新RC,这样我们就可以将其复制到直接spark-website,否则你需要重建文档。

#建立最新的文档美元git checkout v1.1.1 cd文档生产= 1美元包exec哲基尔构建#新文档复制到Apache git克隆https://github.com/apache/spark-website美元……cp - r美元_site spark-website /网站/ docs / 1.1.1 #更新“最新”链接$ cd spark-website /网站/ docs rm最新ln - s 1.1.1最新的美元
更新其他的火花的网站

接下来,更新引发的其他网站。看看以前的版本记录(所有生成的HTML文件的变化变身怪医)。特别是:

  • 更新_layouts / global.html如果新版本是最新的一个
  • 更新documentation.md添加新版本的文档链接
  • 添加新版本js / downloads.js(注意版本的顺序)
  • 检查security.md任何更新
git添加1.1.1 git commit - m美元“火花1.1.1添加文档”

然后,创建发布说明。去在JIRA发布页面从列表中选择发布版本,然后单击“版本说明”。复制这个网址,然后做一个短的URLs.apache.orgApache,登录到您的帐户,选择ID作为类似spark-2.1.2。创建一个新版本发布版本/ _post包括这个短URL。文章的日期应该是您创建的日期。

然后运行包exec哲基尔构建更新网站目录中。

考虑拉请求将会很大,请单独提交的代码和生成变化网站目录一个简单的回顾。

合并后变成的asf-site分支,您可能需要创建一个后续空提交迫使ASF的git和网站之间的同步,GitHub镜像。由于某种原因这个存储库同步似乎不可靠。

有一点需要注意,确保版本是标记为JIRA上发布。去找上面的发布页面中,如,https://issues.apache.org/jira/projects/SPARK/versions/12340295,然后点击右边的“发布”按钮,进入发布日期。

(一般来说,这仅仅是对于主要和次要的,但不是补丁版本)贡献者名单可以通过自动生成这个脚本。它接受标签对应于当前版本,另一个标签,对应于前面的(不包括维护发行版)。举例来说,如果你释放引发1.2.0,设置当前标签v1.1.0 v1.2.0-rc2和前面的标记。一旦生成最初的贡献者名单,这极有可能会有警告作者姓名不正确翻译。为了解决这个问题,运行这个脚本从GitHub, JIRA,获取潜在的替代品。例如:

$ cd release-spark / dev /创建发布# RELEASE_TAG和PREVIOUS_RELEASE_TAG出口RELEASE_TAG = v1.1.1出口美元PREVIOUS_RELEASE_TAG = v1.1.0 #生成初始贡献者名单,可能与美元。/ generate-contributors警告。py #集JIRA_USERNAME、JIRA_PASSWORD GITHUB_API_TOKEN出口JIRA_USERNAME =鼓励性产业出口美元JIRA_PASSWORD =鼓励性产业出口GITHUB_API_TOKEN美元=鼓励性#翻译名字前一步中生成的,阅读。美元/ translate-contributors.py known_translations如果必要的

此外,如果您希望给更具体的信用为开发人员更大的补丁,您可以使用以下命令来确定大型补丁。尤其要注意确保提交从以前版本并不算git无法轻易将提交后移植到不同的分支。

#确定公关数字收只在新版本git日志v1.1.1美元| grep“关闭#”| - d”“- f 5、6 | grep关闭|分类> closed_1.1.1美元git日志v1.1.0 | grep“关闭#”| - d”“- f 5、6 | grep关闭|分类> closed_1.1.0 $ diff - new-line-format = " - unchanged-line-format =”“closed_1.1.1 closed_1.1.0 > diff.txt # grep表达式与所有新补丁EXPR =美元(猫diff.txt | awk的{打印”\ \(“$ 1”\ \“2美元”)”;}’| tr“\ n”“| |”sed - e " s / | \ \ \ | / g”| sed“s / \ \ \ | $ / / ") #贡献者名单git shortlog v1.1.1美元——grep > contrib“EXPR美元”。txt #大补丁列表(300 +线)美元git日志v1.1.1——grep“expr美元”——shortstat oneline | grep - b 1 - e”[3 - 9][0 - 9][0 - 9]插入“e”(1 - 9)(1 - 9)(1 - 9)(1 - 9)插入”| grep火花> large-patches.txt

创建和上传火花码头工人图像

apache / spark-docker提供dockerfiles和Github行动引发码头工人的图片发布。

  1. 上传火花Dockerfiles apache / spark-docker存储库,请参考链接
  2. 发布火花码头工人图片:
    1. 输入发布页面
    2. 点击“运行工作流”。
    3. 选择“火花的火花版本图像”,点击“发布”,选择“apache”目标注册表。
    4. 点击“运行工作流”按钮发布图片到Apache dockerhub。

创建一个消息

一旦一切都工作(网站文档、网站更改)创建一个公告在网站上,然后将电子邮件发送到邮件列表看起来像的一个主题(宣布)……。创建一个公告,创建下一个帖子新闻/ _post然后运行包exec哲基尔构建

享受您所选择的成人饮料,祝贺火花释放。

最新消息

存档

Baidu
map