我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

理解Apache发布的内容和流程

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

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

  • Apache Release Guide

  • Apache Release Policy

  • Maven Release Info

本地构建环境准备

主要包括签名工具、Maven仓库认证相关准备

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

    • 如Mac OS

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

    $ gpg2 --full-gen-keygpg (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? 1RSA keys may be between 1024 and 4096 bits long.What keysize do you want? (2048) 4096Requested keysize is 4096 bitsPlease 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 yearsKey is valid for? (0) Key does not expire at allIs this correct? (y/N) yGnuPG needs to construct a user ID to identify your key.Real name: Robert Burrell DonkinEmail address: rdonkin@apache.orgComment: CODE SIGNING KEYYou selected this USER-ID:    "Robert Burrell Donkin (CODE SIGNING KEY) <rdonkin@apache.org>"Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? OYou need a Passphrase to protect your secret key. # 填入密码,以后打包过程中会经常用到
    • 查看key id

      $ gpg --list-keyspub   rsa4096/28681CB1 2018-04-26 # 28681CB1就是key iduid       [ultimate] liujun (apache-dubbo) <liujun@apache.org>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
    • 根据提示,生成key

  3. 设置Apache中央仓库

    <settings>...  <servers>    <!-- To publish a snapshot of some part of Maven -->    <server>      <id>apache.snapshots.https</id>      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>    </server>    <!-- To stage a release of some part of Maven -->    <server>      <id>apache.releases.https</id>      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>    </server>   ...      <!-- gpg passphrase used when generate key -->     <server>      <id>gpg.passphrase</id>      <passphrase><!-- yourKeyPassword --></passphrase>    </server>  </servers></settings>
    • Dubbo项目的父pom为apache pom

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

      所有密码请使用[maven-encryption-plugin](http://maven.apache.org/guides/mini/guide-encryption.html)加密后再填入

打包&上传

  1. 从主干分支拉取新分支作为发布分支,如现在要发布2.6.4版本,则从2.6.x拉出新分支2.6.4-release,此后2.6.4 Release Candidates涉及的修改及打标签等都在2.6.4-release分支进行,最终发布完成后合入主干分支。

  2. 首先,在2.6.4-release分支验证maven组件打包、source源码打包、签名等是否都正常工作

    $ mvn clean install -Papache-release$ mvn deploy# 将snapshot包推送到maven中央仓库,处于staging状态
  3. 用maven-release-plugin发布

    $ 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状态
    • 先用dryRun验证是否ok

      $ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DdryRun=true
    • 验证通过后,执行release:prepare

准备Apache发布

  1. 准备svn本机环境(Apache使用svn托管项目的发布内容)

  2. 将dubbo checkout到本地目录

    $ svn checkout https://dist.apache.org/repos/dist/dev/incubator/dubbo# 假定本地目录为 ~/apache/incubator/dubbo
  3. 当前发布版本为2.6.4,新建目录

    $ cd ~/apache/incubator/dubbo # dubbo svn根目录$ mkdir 2.6.4
  4. 添加public key到KEYS文件。KEYS主要是让参与投票的人在本地导入,用来校验sign的正确性

  5. 拷贝Dubbo根目录下的source.zip包到svn本地仓库dubbo/2.6.4

  6. 生成sha512签名

    $ shasum -a 512 dubbo-incubating-2.6.4-source-release.zip >> dubbo-incubating-2.6.4-source-release.zip.sha512
  7. 如果有binary release要同时发布

    # 到dubbo项目distribution的module下,执行:$ mvn install# target目录下,拷贝bin-release.zip以及bin-release.zip.asc到svn本地仓库dubbo/2.6.4# 参考第6步,生成sha512签名
  8. 提交到Apache svn

    $ svn status$ svn commit -m 'prepare for 2.6.4 RC1'

验证Release Candidates

证环节包含但不限于以下内容和形式:

  1. Check signatures and hashes are good

sha512 dubbo-incubating-${release_version}-bin-release.zip.sha512sha512 dubbo-incubating-${release_version}-source-release.zip.sha512
  1. 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.

进入投票

投票分两个阶段:

  1. Dubbo社区投票,发起投票邮件到dev@dubbo.apache.org。在社区开发者Review,并统计到3个同意发版的binding票后,即可进入下一阶段的投票。

  2. Apache社区投票,发起投票邮件到general@apache.org。在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.4Hash for the release tag:afab04c53edab38d52275d2a198ea1aff7a4f41eRelease Notes:https://github.com/apache/incubator-dubbo/releases/tag/untagged-4775c0a22c60fca55118The artifacts have been signed with Key : 28681CB1, which can be found in the keys file:https://dist.apache.org/repos/dist/dev/incubator/dubbo/KEYSThe 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 reasonThanks,The Apache Dubbo (Incubating) Team

正式发布

  1. 提交https://dist.apache.org/repos/dist/dev/incubator/dubbo目录下的发布包到https://dist.apache.org/repos/dist/release/incubator/dubbo/,完成正式发布。

  2. 发邮件到dev@dubbo.apache.org和general@apache.org,通知社区发布完成。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

如何让突发的多个请求等待第一个完成(分布式)

大家好,我们又见面了啊~本文《如何让突发的多个请求等待第一个完成(分布式)》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~问题
如何让突发的多个请求等待第一个完成(分布式)
2024-04-04

微信二次开发中使用Java如何实现一个微信文本消息的请求与发送

今天就跟大家聊聊有关微信二次开发中使用Java如何实现一个微信文本消息的请求与发送,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一步:新建包com.wtz.message.resp
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录