Teiid Release Procedure

Once the release criteria have been met, which will minimally include no test failures and no unresolved issues, the following can be used from your current working copy to create the target release.

 

If there have been grammar changes, the reference grammar confluence page should be updated with the changes.  Currently this is done as a manual process using a customized wiki version of the jjdoc output.  Adding the attached patch to the jjdoc classpath will instead produce wiki markup output.  This output will need to replace the grammar page.  At some point we will want to stop using the generated approach as output is somewhat lacking (non-reserved words are not displayed, there are no comments, etc.).

 

Update the release notes detailed section with the appropriate release notes from JIRA.

 

Maven Build:


NOTE: if you have not created your own settings.xml for maven, then your maven commands below will need an additional -s settings.xml when executed from the root of the Teiid project.

 

Do a dry run of the release process:

 

$mvn -DautoVersionSubmodules=true -DMAVEN_OPTS=-XX:MaxPermSize=384m -DdryRun=true -P release clean package release:prepare

 

$mvn -DdryRun=true -P release release:clean

 

If not already explicitly on the appropriate branch, use you should perform a "git checkout <branch>" and make sure you a rebased to HEAD.

If you are performing a release from an SVN branch and using Maven 3, the root pom scm links must be to the appropriate branch, e.g. <developerConnection>scm:svn:https://svn.jboss.org/repos/teiid/branches/<version></developerConnection>

 

Prepare the release, which will actually create the tag with modified poms and update the current working copy poms to the next version:


$mvn -DautoVersionSubmodules=true -DMAVEN_OPTS=-XX:MaxPermSize=384m -P release  release:prepare

 

Perform the release to generate all of the repository artifacts.  release:perform will check out the release tag into target/checkout. Your settings.xml file should include a property defining the jboss repository location used in the distributionmanagement section of the parent pom.  See the JBoss Maven Release Doc for more.


$mvn release:perform -DMAVEN_OPTS=-XX:MaxPermSize=384m

 

TODO: release:perform should probably automatically include the release profile and the doc generation, see http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

 

Artifacts are automatically copied to the nexus repository.  To manage their promotion, use https://repository.jboss.org/nexus/index.html.  Typically we'll just drop non-final releases.

 

SourceForge Upload:

You can find the release artifacts to copy to Sourceforge and the doc site in the target/checkout/build/target directory.

 

echo "mkdir 7.2/Final" | sftp <user>,teiid@frs.sourceforge.net:/home/pfs/project/t/te/teiid/teiid/

scp target/checkout/build/target/*.zip target/checkout/build/target/*-jdbc*.jar <user>,teiid@frs.sourceforge.net:/home/pfs/project/t/te/teiid/teiid/7.2/Final

 

Note the version is number/qualifier.

 

If you have to create the release directory, be sure to give group writable (775) permissions.

 

The download page should be updated through magnolia https://www.jboss.org/author/teiid/ to reflect the new bits.

 

Typically the api and docs are not posted for a non-Final release.

 

Java Docs:

Generate the Javadocs from target/checkout with:

 

$cd target/checkout

 

$mvn javadoc:aggregate

 

After setting up your id: https://docspace.corp.redhat.com/docs/DOC-25936 you can use sftp, scp, rsynch, etc. to copy the files, e.g. to copy the docs:

 

scp -r target/site/apidocs teiid@filemgmt.jboss.org:docs_htdocs/teiid/<Version>/apidocs

 

unzip -d target build/target/teiid-<Version>-jboss-dist.zip docs/teiid/teiid-releasenotes.html

scp target/docs/teiid/teiid-releasenotes.html teiid@filemgmt.jboss.org:docs_htdocs/teiid/<Version>

 

Confluence:

The project documents are in confluence at location https://docs.jboss.org/author/display/TEIID/Home, go to this location and select Browse ->Space Admin. Then choose to copy the space, and give the new space release name and edit the home page for any additional notes. Also using space admin retrict the access to this space to only project leads so that community users do not accidentally delete any content.

 

Teiid Web Site (Awestruct):

The documentation page and the quick start link should be updated through the community-website git repository - teiid/community-website at Teiid · GitHub  Use a regex pattern/replacement such as the following to generate new list entries:

 

<option value="http://docs\.jboss\.org/teiid/7\.4\.0\.Final/([^"]*)">7\.4</option>

<option value="http://docs\.jboss\.org/teiid/7\.5\.0\.Final/$1">7\.5</option>\n<option value="http://docs\.jboss\.org/teiid/7\.4\.0\.Final/$1">7\.4</option>

 

To upload the site, run awestruct* on the modified source:

$ awestruct -P production -g

$ rsync --recursive --protocol=29 --exclude='.*' _site/* teiid@filemgmt.jboss.org:/www_htdocs/teiid/

 

*Awestruct installation requires ruby and a host of gems.  Installation on Fedora:

 

curl -L https://get.rvm.io | bash -s stable

rvm install 2.1.1

/bin/bash --login

rvm --default use 2.1.1

gem install asciidoctor

gem install uglifier

gem install therubyracer

gem install cssminify

gem install htmlcompressor

gem install redcarpet

gem install awestruct