如何完成一次Apache的版本发布
理解Apache發(fā)布的內(nèi)容和流程
總的來說,Source Release是Apache關(guān)注的重點(diǎn),也是發(fā)布的必須內(nèi)容;而Binary Release是可選項(xiàng),Dubbo可以選擇是否發(fā)布二進(jìn)制包到Apache倉(cāng)庫(kù)或者發(fā)布到Maven中央倉(cāng)庫(kù)。
請(qǐng)參考以下鏈接,找到更多關(guān)于ASF的發(fā)布指南:
- Apache Release Guide
- Apache Release Policy
- Maven Release Info
本地構(gòu)建環(huán)境準(zhǔn)備
主要包括簽名工具、Maven倉(cāng)庫(kù)認(rèn)證相關(guān)準(zhǔn)備
安裝GPG,參見?https://www.gnupg.org/download/index.html
-
如Mac OS
$ brew install gpg $ gpg --version #檢查版本,應(yīng)該為2.x
用gpg生成key
- 根據(jù)提示,生成key
-
查看key id
$ gpg --list-keys pub rsa4096/28681CB1 2018-04-26 # 28681CB1就是key id uid [ultimate] liujun (apache-dubbo) <liujun@apache.org> sub rsa4096/D3D6984B 2018-04-26# 通過key id發(fā)送public key到keyserver $ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1 # 其中,pgpkeys.mit.edu為隨意挑選的keyserver,keyserver列表為:https://sks-keyservers.net/status/,因?yàn)橄嗷ブg是自動(dòng)同步的,選任意一個(gè)都可以。 -
如果有多個(gè)public key,設(shè)置默認(rèn)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
設(shè)置Apache中央倉(cāng)庫(kù)
-
Dubbo項(xiàng)目的父pom為apache pom
<parent><groupId>org.apache</groupId><artifactId>apache</artifactId><version>19</version> </parent> -
添加以下內(nèi)容到.m2/settings.xml
所有密碼請(qǐng)使用[maven-encryption-plugin](http://maven.apache.org/guides/mini/guide-encryption.html)加密后再填入
?
打包&上傳
首先,在2.6.4-release分支驗(yàn)證maven組件打包、source源碼打包、簽名等是否都正常工作
$ mvn clean install -Papache-release $ mvn deploy # 將snapshot包推送到maven中央倉(cāng)庫(kù),處于staging狀態(tài)用maven-release-plugin發(fā)布
-
先用dryRun驗(yàn)證是否ok
$ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DdryRun=true - 驗(yàn)證通過后,執(zhí)行release:prepare
-
執(zhí)行release:perform,做正式發(fā)布
$ mvn -Prelease release:perform -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID # 所有artifacts發(fā)布到配置的遠(yuǎn)程maven中央倉(cāng)庫(kù),處于staging狀態(tài)
準(zhǔn)備Apache發(fā)布
將dubbo checkout到本地目錄
$ svn checkout https://dist.apache.org/repos/dist/dev/incubator/dubbo # 假定本地目錄為 ~/apache/incubator/dubbo當(dāng)前發(fā)布版本為2.6.4,新建目錄
$ cd ~/apache/incubator/dubbo # dubbo svn根目錄 $ mkdir 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要同時(shí)發(fā)布
# 到dubbo項(xiàng)目distribution的module下,執(zhí)行: $ mvn install # target目錄下,拷貝bin-release.zip以及bin-release.zip.asc到svn本地倉(cāng)庫(kù)dubbo/2.6.4 # 參考第6步,生成sha512簽名提交到Apache svn
$ svn status $ svn commit -m 'prepare for 2.6.4 RC1'驗(yàn)證Release Candidates
證環(huán)節(jié)包含但不限于以下內(nèi)容和形式:
- 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.
進(jìn)入投票
投票分兩個(gè)階段:
郵件模板:
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正式發(fā)布
完成Maven Convenient Binary發(fā)布(可選)
apache.repository.org?nexus倉(cāng)庫(kù)的權(quán)限已經(jīng)申請(qǐng),參見jira。
之前發(fā)布到maven倉(cāng)庫(kù)的atifacts都處于staging狀態(tài),用Apache?id登錄apache.repository.org,完成發(fā)布。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的如何完成一次Apache的版本发布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 React 工程中利用 Mota 编
- 下一篇: 阿里云新推出 HiTSDB + IoT套