如何完成一次Apache的版本發(fā)布

理解Apache發(fā)布的內容和流程

總的來說,Source Release是Apache關注的重點,也是發(fā)布的必須內容;而Binary Release是可選項,Dubbo可以選擇是否發(fā)布二進制包到Apache倉庫或者發(fā)布到Maven中央倉庫。

為常山等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及常山網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都網(wǎng)站建設、常山網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

請參考以下鏈接,找到更多關于ASF的發(fā)布指南:

  • Apache Release Guide

  • Apache Release Policy

  • Maven Release Info

本地構建環(huán)境準備

主要包括簽名工具、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 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 yearsKey is valid for? (0) 
    Key does not expire at allIs this correct? (y/N) y
    GnuPG needs to construct a user ID to identify your key.Real name: Robert Burrell Donkin
    Email 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? O
    You need a Passphrase to protect your secret key. # 填入密碼,以后打包過程中會經(jīng)常用到
    
    • 查看key id

      $ gpg --list-keys
      pub   rsa4096/28681CB1 2018-04-26 # 28681CB1就是key iduid       [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/,因為相互之間是自動同步的,選任意一個都可以。
      
    • 如果有多個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
      
    • 根據(jù)提示,生成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. 從主干分支拉取新分支作為發(fā)布分支,如現(xiàn)在要發(fā)布2.6.4版本,則從2.6.x拉出新分支2.6.4-release,此后2.6.4 Release Candidates涉及的修改及打標簽等都在2.6.4-release分支進行,最終發(fā)布完成后合入主干分支。

  2. 首先,在2.6.4-release分支驗證maven組件打包、source源碼打包、簽名等是否都正常工作

    $ mvn clean install -Papache-release
    $ mvn deploy# 將snapshot包推送到maven中央倉庫,處于staging狀態(tài)
    
  3. 用maven-release-plugin發(fā)布

    $ mvn release:clean
    $ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID# 執(zhí)行完成后:1.生成source.zip包; 2.打出tag,并推送到github倉庫; 3.分支版本自動升級為2.6.4-SNAPSHOT,并將修改推送到github倉庫
    
    • 執(zhí)行release:perform,做正式發(fā)布

      $ mvn -Prelease release:perform -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID# 所有artifacts發(fā)布到配置的遠程maven中央倉庫,處于staging狀態(tài)
      
    • 先用dryRun驗證是否ok

      $ mvn release:prepare -Papache-release -Darguments="-DskipTests" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DdryRun=true
      
    • 驗證通過后,執(zhí)行release:prepare

準備Apache發(fā)布

  1. 準備svn本機環(huán)境(Apache使用svn托管項目的發(fā)布內容)

  2. 將dubbo checkout到本地目錄

    $ svn checkout https://dist.apache.org/repos/dist/dev/incubator/dubbo# 假定本地目錄為 ~/apache/incubator/dubbo
    
  3. 當前發(fā)布版本為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要同時發(fā)布

    # 到dubbo項目distribution的module下,執(zhí)行:$ 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

證環(huán)節(jié)包含但不限于以下內容和形式:

  1. Check signatures and hashes are good

sha512 dubbo-incubating-${release_version}-bin-release.zip.sha512
sha512 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社區(qū)投票,發(fā)起投票郵件到dev@dubbo.apache.org。在社區(qū)開發(fā)者Review,并統(tǒng)計到3個同意發(fā)版的binding票后,即可進入下一階段的投票。

  2. Apache社區(qū)投票,發(fā)起投票郵件到general@apache.org。在Apache PMC Review,并統(tǒng)計到3個統(tǒng)一發(fā)版的binding票后,即可進行正式發(fā)布。

郵件模板:

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-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/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 reason
Thanks,
The Apache Dubbo (Incubating) Team

正式發(fā)布

  1. 提交 https://dist.apache.org/repos/dist/dev/incubator/dubbo 目錄下的發(fā)布包到 https://dist.apache.org/repos/dist/release/incubator/dubbo/ ,完成正式發(fā)布。

  2. 發(fā)郵件到dev@dubbo.apache.org和general@apache.org,通知社區(qū)發(fā)布完成。

當前文章:如何完成一次Apache的版本發(fā)布
網(wǎng)頁路徑:http://muchs.cn/article2/iiopoc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、全網(wǎng)營銷推廣、自適應網(wǎng)站、網(wǎng)站設計公司、軟件開發(fā)、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設