如何完成一次Apache的版本发布

摘要: 理解Apache发布的内容和流程 总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。

理解Apache发布的内容和流程
总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。

请参考以下链接,找到更多关于ASF的发布指南:

Apache Release Guide
Apache Release Policy
Maven Release Info
本地构建环境准备
主要包括签名工具、Maven仓库认证相关准备

安装GPG,参见 https://www.gnupg.org/download/index.html

如Mac OS

$ brew install gpg
$ gpg --version #检查版本,应该为2.x
用gpg生成key

根据提示,生成key
$ gpg2 --full-gen-key
gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Robert Burrell Donkin
Email address: [email protected]
Comment: CODE SIGNING KEY
You selected this USER-ID:
"Robert Burrell Donkin (CODE SIGNING KEY) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key. # 填入密码,以后打包过程中会经常用到
查看key id

$ gpg --list-keys
pub rsa4096/28681CB1 2018-04-26 # 28681CB1就是key id
uid [ultimate] liujun (apache-dubbo) <[email protected]>
sub rsa4096/D3D6984B 2018-04-26

通过key id发送public key到keyserver

$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1

其中,pgpkeys.mit.edu为随意挑选的keyserver,keyserver列表为:https://sks-keyservers.net/status/,因为相互之间是自动同步的,选任意一个都可以

如果有多个public key,设置默认key

~/.gnupg/gpg.conf

If you have more than 1 secret key in your keyring, you may want to

uncomment the following option and set your preferred keyid.

default-key 28681CB1
设置Apache中央仓库

Dubbo项目的父pom为apache pom

<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>19</version>
</parent>
添加以下内容到.m2/settings.xml

所有密码请使用maven-encryption-plugin加密后再填入
<settings>
...
<servers>

apache.snapshots.https

apache.releases.https

...

gpg.passphrase

?
打包&上传
从主干分支拉取新分支作为发布分支,如现在要发布2.6.4版本,则从2.6.x拉出新分支2.6.4-release,此后2.6.4 Release Candidates涉及的修改及打标签等都在2.6.4-release分支进行,最终发布完成后合入主干分支。
首先,在2.6.4-release分支验证maven组件打包、source源码打包、签名等是否都正常工作
$ mvn clean install -Papache-release
$ mvn deploy
# 将snapshot包推送到maven中央仓库,处于staging状态
用maven-release-plugin发布
先用dryRun验证是否ok
$ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DdryRun=true
验证通过后,执行release:prepare
$ mvn release:clean
$ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID
# 执行完成后:1.生成source.zip包; 2.打出tag,并推送到github仓库; 3.分支版本自动升级为2.6.4-SNAPSHOT,并将修改推送到github仓库
执行release:perform,做正式发布
$ mvn -Prelease release:perform -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID
# 所有artifacts发布到配置的远程maven中央仓库,处于staging状态
准备Apache发布
准备svn本机环境(Apache使用svn托管项目的发布内容)
将dubbo checkout到本地目录
$ svn checkout https://dist.apache.org/repos/dist/dev/incubator/dubbo
# 假定本地目录为 ~/apache/incubator/dubbo
当前发布版本为2.6.4,新建目录
$ cd ~/apache/incubator/dubbo # dubbo svn根目录
$ mkdir 2.6.4
添加public key到KEYS文件。KEYS主要是让参与投票的人在本地导入,用来校验sign的正确性
拷贝Dubbo根目录下的source.zip包到svn本地仓库dubbo/2.6.4
生成sha512签名
$ shasum -a 512 dubbo-incubating-2.6.4-source-release.zip >> dubbo-incubating-2.6.4-source-release.zip.sha512
如果有binary release要同时发布
# 到dubbo项目distribution的module下,执行:
$ mvn install
# target目录下,拷贝bin-release.zip以及bin-release.zip.asc到svn本地仓库dubbo/2.6.4
# 参考第6步,生成sha512签名
提交到Apache svn
$ svn status
$ svn commit -m ‘prepare for 2.6.4 RC1‘
验证Release Candidates
证环节包含但不限于以下内容和形式:
Check signatures and hashes are good
sha512 dubbo-incubating-${release_version}-bin-release.zip.sha512
sha512 dubbo-incubating-${release_version}-source-release.zip.sha512
unzip dubbo-incubating-&dollar;{release_version}-source-release.zip to the default directory and check the following:
Directory with incubator in name
dubbo-incubating-${release_version}-bin-release
DISCLAIMER file exists
LICENSE and NOTICE file exists and contents are good
All files and no binary files exist
All files has standard ASF License header
Can compile from source
All unit tests can pass
mvn clean test # This will run all unit tests
# you can also open rat and style plugin to check if every file meets requirements.
mvn clean install -Drat.skip=false -Dcheckstyle.skip=false
Release candidates match with corresponding tags, you can find tag link and hash in vote email.
进入投票
投票分两个阶段:
Dubbo社区投票,发起投票邮件到[email protected]。在社区开发者Review,并统计到3个同意发版的binding票后,即可进入下一阶段的投票。
Apache社区投票,发起投票邮件到[email protected]。在Apache PMC Review,并统计到3个统一发版的binding票后,即可进行正式发布。
邮件模板:
Hello Dubbo Community,
This is a call for vote to release Apache Dubbo (Incubating) version 2.6.4.
The release candidates:
https://dist.apache.org/repos/dist/dev/incubator/dubbo/2.6.4/
Git tag for the release:
https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.4
Hash for the release tag:
afab04c53edab38d52275d2a198ea1aff7a4f41e
Release Notes:
https://github.com/apache/incubator-dubbo/releases/tag/untagged-4775c0a22c60fca55118
The artifacts have been signed with Key : 28681CB1, which can be found in the keys file:
https://dist.apache.org/repos/dist/dev/incubator/dubbo/KEYS
The vote will be open for at least 72 hours or until necessary number of votes are reached.
Please vote accordingly:
[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove with the reason
Thanks,
The Apache Dubbo (Incubating) Team
正式发布
提交https://dist.apache.org/repos/dist/dev/incubator/dubbo目录下的发布包到https://dist.apache.org/repos/dist/release/incubator/dubbo/,完成正式发布。
发邮件到[email protected]和[email protected],通知社区发布完成。
完成Maven Convenient Binary发布(可选)
apache.repository.org nexus仓库的权限已经申请,参见jira。
之前发布到maven仓库的atifacts都处于staging状态,用Apache id登录apache.repository.org,完成发布。
[原文链接](http://click.aliyun.com/m/1000017271/)
本文为云栖社区原创内容,未经允许不得转载。

原文地址:http://blog.51cto.com/13952056/2286776

时间: 2024-10-15 07:39:57

如何完成一次Apache的版本发布的相关文章

关于如何做版本发布

问题: 最近的项目经常需要做版本发布,但是版本发布老是出现问题,问题如下: 比如,新手小接了一个新需求,一个功能开发完了,在本地环境和测试环境都测试通过了, 把版本更新包提交到运维或者一线开发手上, 发布到线上, 通知开发,测试人员进行功能更新的确认: 如果确认ok,更新结束: 如果确认不ok,进入下面的循环: while(线上测试确认结果不OK) { //温习下开发的功能的流程 //在出错的代码行前后加上日志 //部署到线上 //测试确认?OK:NO; if(OK) break; else {

Spark 1.0.0版本发布

前言 今天Spark终于跨出了里程碑的一步,1.0.0版本的发布标志着Spark已经进入1.0时代.1.0.0版本不仅加入了很多新特性,并且提供了更好的API支持.Spark SQL作为一个新的组件加入,支持在Spark上存储和操作结构化的数据.已有的标准库比如ML.Streaming和GraphX也得到了很大程度上的增强,对Spark和Python的接口也变得更稳定.以下是几个主要的改进点: 融合YARN的安全机制 Hadoop有着自己的安全机制,包括认证和授权.Spark现在可以和Hadoo

Git+Jenkins学习之路(八)之发布maven项目及按版本发布

一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 maven是属于Apache的开源项目 maven主要服务于java平台的构建.依赖管理.项目管理. 二.手动安装MAVEN (1)下载maven [[email protected]-node2 ~]# wget http://mirrors.hust.edu.cn/apache/maven/m

意料之外,情理之中,Spring.NET 3.0 版本发布-

意料之外,情理之中,Spring.NET 3.0 版本发布- 备受社区和企业开发者广泛关注的Spring.NET在上周发布了3.0版本,并且目前已经保持着持续的更新,让我们一起来看一看他究竟发布了哪些令人激动的新特性吧! Github上的原贴地址为:https://github.com/spring-projects/spring-net. 1.引言 Spring.NET 3.0.0版本包含 一个功能齐全的控制反转容器 面向方面的编程框架 轻量级脚本的表达式语言 UI不可知的验证框架 ASP.N

基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布

Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读     平台首页UI升级,精美的首页支持多模式 提供4套代码生成器模板(支持单表.一对多) 集成Excel简易工具类,支持单表.一对多导入导出 代码生成器,生成代码自带Excel导入导出,表单提供弹出风格和抽屉表单选择 系统权限大升级,支持按钮权限,数据权限(可控制不同人看不同数据) 数据日志记录功能,可记录数据变更日志,对比版本功能 查询过滤器开发完成,根据页面配置自动生成查询条件,支持多种匹配规则 Online在线报表配置功能完成

Go 1.7.1 版本发布,修复编译器和运行库

在发布了1.7正式版的20多天后,Go 1.7.1版本发布了. 该版本修复了编译器,运行库,文档,以及compress/flate,hash/crc32, io net, net/http, path/filepath, reflect, 和系统调用包. 更多细节见 Go 1.7.1 发布说明:https://github.com/golang/go/issues?q=milestone%3AGo1.7.1

恭喜CocoStudio 1.5和Mac版本发布

落后了,过了几天才发现CocoStudio又发布了新版本 1.5.论坛中说亮点有三: UI, 动画, 场景编辑器支持导出为二进制文件 增加选择cocos2d-x目录来创建cocos2d-x项目功能 增加注册登陆CocoChina网站功能 显然,第一个是大家最关注的.此前,很多人,INCLUDING ME,都关心COCOSTUDIO制作的JSON文件压缩与加密的问题.通过新添加的功能,转换为二进制后,数据加载速度将会明显加快,这一点,对于"速度第一位"(内存当然也相当重要哟!)的手机游戏

apache 隐藏版本信息隐藏敏感信息

如果我们想隐藏apache的版本信息,或者隐藏apache的敏感信息需要我们在编译之前对以下文件进行修改:(我们以apache的2.2.27版本为列) vim /usr/local/tools/httpd-2.2.27/include/ap_release.h #define AP_SERVER_BASEPRODUCT "Apache"                   改成  Microsoft-IIS 下面标红的是指的apache的版本信息,我们可以做相对应的修改#define

Linux内核版本发布时间整理

有了这个Linux内核版本发布时间表(0.00到3.19,当然没有包含全部的版本), 大家就可以看看自己用的版本是何时发布的了! 或许有同学会大吃一惊,哇(⊙0⊙)我用的版本10年前就有了啊! 发展史我也没写全,有时间和必要的话再写吧! 版本号 时间 发展史 0.00 1991.2-4 两个进程分别显示AAABBB 0.01 1991.9 第一个正式向外公布的Linux内核版本 0.02 1991.10.5 Linux的第一个稳定的工作版本 0.03 1991.10.5 0.10 1991.10