Background

Since griffin's parent pom is apache, our release process is inherited from apache parent pom(https://svn.apache.org/viewvc/maven/pom/tags/apache-18/pom.xml?view=markup).

Apache release process is different from local release as it needs to do gpg check.

So you need to have created a PGP (or GPG) key pair, which will be used in signing the release artifacts. For more information on using the Maven GPG plugin, see this introduction from Sonatype and the Maven GPG Plugin usage page. You may also want to run gpg-agent in order to avoid being prompted multiple times for the GPG key passphrase when performing a release.

Preparations

  • Install git

    sudo apt-get update
    sudo apt-get install git -y
  • Install maven3

    sudo apt-add-repository ppa:andrei-pozolotin/maven3
    sudo apt-get update
    sudo apt-get install maven3 -y
    
    
    # sudo vi /etc/profile
    export M2_HOME=/usr/share/maven3
    export PATH=$PATH:$M2_HOME/bin
    
    source /etc/profile
  • Install gpg-agent

    sudo apt-get install gnupg-agent -y
    
    # vi ~/.bashrc
    if test -f $HOME/.gpg-agent-info && \
        kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
        GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
    else
        # No, gpg-agent not available; start gpg-agent
        eval `gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info`
    fi
    export GPG_TTY=`tty`
    export GPG_AGENT_INFO
    
    # exit and login again
  • Import gpg keys

    # import or generate your gpg key
    ## import
    gpg --import XXX.asc
    ## generate
    gpg --full-generate-key
    
    # trust the key
    gpg --edit-key XXX
    trust
    5
    y
    quit
  • Install jdk8

    sudo mkdir /apache && sudo chmod 777 /apache
    cd /apache
    wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz -O jdk8-linux-x64.tar.gz
    tar -xvzf jdk8-linux-x64.tar.gz
    ln -s jdk1.8.0_131 jdk
    
    # sudo vi /etc/profile
    export JAVA_HOME=/apache/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    
    source /etc/profile
    
    # sudo vi $M2_HOME/bin/mvn
    JAVA_HOME=/apache/jdk
  • Install svn

    sudo apt-get install subversion -y
    mkdir ~/svn

Update maven Settings.xml File to authenticate scm servers

<?xml version="1.0" encoding="UTF-8"?>
  <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
      xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <servers>
	  <!-- To publish a snapshot of some part of Maven -->
      <server>
        <id>apache.snapshots.https</id>
        <username>USERNAME</username>
        <password>PASSWORD</password>
      </server>
	  <!-- To stage a release -->
      <server>
       <id>apache.staging.https</id>
       <username>USERNAME</username>
       <password>PASSWORD</password>
      </server>
	  <!-- To stage a release of some part of Maven -->
      <server>
        <id>apache.releases.https</id>
        <username>USERNAME</username>
        <password>PASSWORD</password>
      </server>


	  <!-- To stage a website of some part of Maven -->
      <server>
       <id>stagingSite</id>
       <!-- must match hard-coded repository identifier in site:stage-deploy -->
       <username>USERNAME</username>
       <filePermissions>664</filePermissions>
       <directoryPermissions>775</directoryPermissions>
      </server>
      <server>
       <id>gpg.passphrase</id>
       <passphrase>GPG_PASSWORD</passphrase>
      </server>
    </servers>
  </settings>

Release Repository Preparation

  • Pull repository

    mkdir ~/git && cd ~/git
    git clone https://github.com/apache/griffin.git
    cd griffin
    git remote add apache-git https://gitbox.apache.org/repos/asf/griffin.git
  • Compile the project

    mvn clean install

Update Change Log

  • Cleanup JIRA so the Fix Version in issues resolved since the last release includes this release version correctly.
  •  Update the CHANGELOG based on the Text release reports from JIRA.
  • Review and update README.md if needed.
  • Commit any changes back to git
  • Stage any Roadmap or Release landing pages on the site.

Create release branch

git checkout master
git pull
git checkout -b griffin-x.x.x-rcX

Check license

mvn -Papache-release clean apache-rat:check -e -DskipTests

Dry run release

version=x.x.x
tag=griffin-$version
mvn -Papache-release release:prepare -DautoVersionSubmodules=true -DdryRun=true -Dtag=$tag -DreleaseVersion=$version

Verify

compare pom.xml with pom.xml.tag files, the only differences should be version number.

check release.properties to make sure scm has right versions.

verify signatures.

Cleanup for release

mvn -Papache-release release:clean

Prepare for release

mvn -Papache-release -U clean release:prepare -DautoVersionSubmodules=true -Dtag=$tag -DreleaseVersion=$version

Perform the release

mvn -Papache-release -Darguments='-Dmaven.test.skip.exec=true' release:perform -Dgoals=deploy -DlocalRepoDirectory=. -DlocalCheckout=true -Dusername=[your_apache_id]

Verify nexus release artifacts

  1. Verify the staged artifacts in the nexus repo
  2. Close the nexus staging repo
    • https://repository.apache.org/index.html
    • Staging repositories (under Build Promotion) --> Name column --> org.apache.griffin
    • Click checkbox for the open staging repo (org.apache.streams-XXX) and press Close in the menu bar.

svn submit artifacts to  

source:

https://repository.apache.org/content/repositories/orgapachegriffin-1022/org/apache/griffin/griffin/0.6.0/

target:

https://dist.apache.org/repos/dist/release/griffin/0.5.0/

Download the zip, pom and asc files from source, DO NOT include md5 or sha1 files.

Create sha512 checksum files for zip and pom files.

sha512sum griffin-x.x.x-incubating-source-release.zip > griffin-x.x.x-incubating-source-release.zip.sha512
sha512sum griffin-x.x.x-incubating.pom > griffin-x.x.x-incubating.pom.sha512

Edit a CHANGES.txt for release notes.

Commit to the target in the right version directory.

Vote in dev@griffin.apache.org

title : [VOTE] Release of Apache Griffin-0.4.0

Hi all,

	This is a call for a vote on releasing Apache Griffin 0.4.0, release candidate 3. This is the first release of Griffin.
	Apache Griffin is data quality service for modern data system, it defines a standard process to define, 
	measure data quality for well-known dimensions. With Apache Griffin, users will be able to quickly define their data quality requirements and then get the result in near real time in systematical approach.
	 
	The source tarball, including signatures, digests, etc. can be found at:
	https://dist.apache.org/repos/dist/dev/incubator/griffin/0.4.0
	The tag to be voted upon is 0.4.0:
	https://gitbox.apache.org/repos/asf?p=griffin.git;a=shortlog;h=refs/tags/0.4.0
	The release hash is :
	https://gitbox.apache.org/repos/asf?p=griffin.git;a=commit;h=fb3c197ff801127a21838969be5392d4ed67c878
	The Nexus Staging URL:
	https://repository.apache.org/content/repositories/orgapachegriffin-1006
	Release artifacts are signed with the following key:
	753AD8D8DF507D7232A9BDBD9B403B9B1BFBCC23
	KEYS file available:
	https://dist.apache.org/repos/dist/dev/incubator/griffin/KEYS
	For information about the contents of this release, see:
	https://dist.apache.org/repos/dist/dev/incubator/griffin/0.4.0/CHANGES.txt

	Please vote on releasing this package as Apache Griffin 0.4.0
	The vote will be open for 72 hours.

	[ ] +1 Release this package as Apache Griffin 0.4.0
	[ ] +0 no opinion
	[ ] -1 Do not release this package because ...

Thanks,
William
On behalf of Apache Griffin PPMC

What if vote failed

git tag -d apache-griffin-<VERSION> # delete locally
git push apache-git --delete tagname # delete remote tag
git push apache-git :apache-griffin-<VERSION> # delete in the Apache git repo
git push apache-git --delete <branch_name>  # delete remote branch


If vote succeed, 

send out result email with

title : [RESULT][VOTE]Release Apache Griffin 0.4.0

Thanks to everyone who has tested the release candidate and given their comments and votes.  


The tally is as follows.  
4 binding +1s:  
* William Guo
* Eugene Liu 
* Jason Liao
* Lionel Liu


No 0s or -1s.  


Therefore I am delighted to announce that the proposal to release Apache Griffin 0.4.0 has passed.  


We will publish the release soon.


Best regards,
Jason Liao
On the behalf of Griffin Team

then merge into the origin branch, otherwise, rollback as above.

git checkout master
git merge griffin-0.4.0-rc3
#git rename branch
#git branch -m griffin-0.4.0-rc3 griffin-0.4.0
git push apache-git griffin-0.4.0
git push apache-git master
 

Login into https://repository.apache.org/ , then click Release. It should then propagate to Apache release maven repository and eventually mirrored to maven central.

Wait and check 

http://repo2.maven.org/maven2/org/apache/griffin

https://dist.apache.org/repos/release/dev/griffin

https://www.apache.org/dyn/closer.cgi/griffin

Update website and announce the new release.

announce in dev mailing list and announce@apache.org

title : [Announce] Apache Griffin 0.4.0 released

The Apache Griffin team is pleased to announce the immediate availability of the 0.4.0 release.  

This is the first release after the Apache Software Foundation(ASF) announced Apache Griffin as a Top-Level Project(TLP).
All of the changes in this release can be found in: 
https://archive.apache.org/dist/griffin/0.4.0/CHANGES.txt

You can download the source release from Apache Griffin's download page: https://www.apache.org/dyn/closer.cgi/griffin/0.4.0/  

Apache Griffin is data quality service for modern data system, it defines a standard process to define, measure data quality for well-known
dimensions.
With Apache Griffin, users will be able to quickly define their data quality requirements and then get the result in near real time in systematical approach.

Thanks to everyone who has contributed to the 0.4.0 release.  

We welcome your help and feedback. For more information on how to report problems, and to get involved, visit the project website at http://griffin.apache.org/docs/latest.html

Griffin Useful Links : 
- JIRA : https://issues.apache.org/jira/projects/GRIFFIN/
- Mailing lists: dev@griffin.apache.org

Best regards, 
Jason Liao
On the behalf of Griffin Team

update website 

http://griffin.incubator.apache.org/2017/07/25/release/



  • No labels