PicketLink 2.1.x release procedure

Prerequisites

  • your local git repository has following remotes:
$ git remote -v show
origin  git@github.com:<git_user>/federation.git (fetch)
origin  git@github.com:<git_user>/federation.git (push)
rhgit   git+ssh://git.app.eng.bos.redhat.com/srv/git/picketlink/federation.git (fetch)
rhgit   git+ssh://git.app.eng.bos.redhat.com/srv/git/picketlink/federation.git (push)
upstream        git@github.com:picketlink/federation.git (fetch)
upstream        git@github.com:picketlink/federation.git (push)

 

Pre-release steps:

use this section when you don't have latest changes from upstream repository

 

  1. fetch the latest changes from upstream remote repository using: git fetch upstream
  2. make sure you are in master branch by git checkout master
  3. rebase mater to upstream/master using git rebase -i upstream/master
  4. inspect master branch using for example gitk --all
    Find exact commit you want to place your master pointer at.
  5. Move master pointer to the commit selected from previous step.
    git reset --hard <commit>
    It can be done directly from gitk right-clicking desired commit line and selecting "Reset master branch to here". Choose hard mode.
    Make sure you have no uncomited changes, because they will go away ;-)

 

 

Ensure that you have created a JIRA release task such as https://issues.jboss.org/browse/PLFED-297

You can clone the upstream projects to do the release.

Workspaces to Release

  1. Federation:   need a deploy of artifacts to nexus
  2. picketlink-quickstarts:  need a deploy of artifacts to nexus
  3. integration-tests:  just tagging is sufficient.

 

 

 

 

 

 

Release: git repo part

if your master is already at last commit you want to release

 

  1. change <version> in all appropriate files:
    perl -pi -e 's/2.1.0-SNAPSHOT/2.1.0.Final/g' `find . -name \pom.xml`
  2. do mvn clean install to see if all is OK.
  3. if all is OK, commit the changes git commit -m "release version change: 2.1.0.Final"
  4. tag the release: git tag -a v2.1.0.Final -m 'version 2.1.0.Final'
  5. eventually merge commits left aside in pre-release steps to master
    1. push all changes in master upstream: git push --tags upstream master
  6. push all changes in master to rhgit (internal git repository): git push --tags rhgit master

 

Release: push artifacts to JBoss Nexus Repository

  • Assuming your maven settings are correct,   do   "mvn deploy"
  • Login to nexus.  Look for the staging repository and your release link.
  • Choose the link with your user id.
  • Click "Close"  and give a description such as "PLFED-297: Release PicketLink 2.1.1.Final"
  • That will move the repo artifacts from stage 1 to stage2.  We are still not finished releasing the artifacts.
  • Now, choose the link again.  Press "Release" button and you can give the same description.  That is it.!!!
  • Choosing "Drop" will delete the link and artifacts.  So you can run "mvn deploy" again to fix any issues you may have.

Post Release Tagging

  • perl -pi -e 's/2.1.1.Final/2.1.2-SNAPSHOT/g' `find . -name \pom.xml`
  • Commit and push
  • Check in github whether you have pushed correctly.

 

You can always verify whether your artifacts are available in JBoss Nexus Public Repo at https://repository.jboss.org/nexus/content/groups/public/org/picketlink/

 

Update the magnolia pages for PicketLink
  • Mainly for the download page. (Contact the PicketLink Team Members on this as you will need the magnolia username/pass)

 

Announce the Release
  • Blog, User Forum

Party time:

Spread the word about new release.

- user forum, blog, the core, twitter, G+, #whateveryouareusing

- in case of twitter consider: direct message @JBossNews to get a release pushed on all the social media streams

Troubleshooting

Deleting the wrong tag

 

anil@sadbhav:~/github/picketbox-keystore$ git tag -d 2012aug21
Deleted tag '2012aug21' (was 2ea0939)

anil@sadbhav:~/github/picketbox-keystore$ git push origin :refs/tags/2012aug21
Enter passphrase for key '/home/anil/.ssh/id_rsa': 
remote: warning: Deleting a non-existent ref.
To git@github.com:anilsaldhana/picketbox-keystore.git
 - [deleted]         2012aug21

anil@sadbhav:~/github/picketbox-keystore$ git push upstream :refs/tags/2012aug21
Enter passphrase for key '/home/anil/.ssh/id_rsa': 
To git@github.com:picketbox/picketbox-keystore.git
 - [deleted]         2012aug21

 

Changing/Adding Upstream

 

anil@sadbhav:~/github/picketbox-ldap$ git remote -v show
origin  git@github.com:anilsaldhana/picketbox-ldap.git (fetch)
origin  git@github.com:anilsaldhana/picketbox-ldap.git (push)
anil@sadbhav:~/github/picketbox-ldap$ git remote add upstream git@github.com:picketbox/picketbox-ldap.git
anil@sadbhav:~/github/picketbox-ldap$ git remote -v
origin  git@github.com:anilsaldhana/picketbox-ldap.git (fetch)
origin  git@github.com:anilsaldhana/picketbox-ldap.git (push)
upstream        git@github.com:picketbox/picketbox-ldap.git (fetch)
upstream        git@github.com:picketbox/picketbox-ldap.git (push)
anil@sadbhav:~/github/picketbox-ldap$ 

 

Other GIT related resources

If you want to merge two workspaces etc: http://scottwb.com/blog/2012/07/14/merge-git-repositories-and-preseve-commit-history/