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.

     

    NOTE: there is an enforcer issue that the initial release:prepare will not complete.  After the poms have been modified simply perform a full build and then re-run release:prepare

     

    Do a dry run of the release process:

     

    $mvn -DautoVersionSubmodules=true -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 -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

     

    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.

     

    Artifact Upload:

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

     

    echo "mkdir <Version>" | sftp teiid@filemgmt.jboss.org:downloads_htdocs/teiid/<Version>

    scp target/checkout/build/target/*.zip target/checkout/build/target/*-jdbc*.jar teiid@filemgmt.jboss.org:downloads_htdocs/teiid/<Version>

     

    The download page should be updated and published as shown below.

     

    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, you can use sftp, scp, rsynch, etc. to copy the files, e.g. to copy the docs:

     

    Create the appropriate version directory on the remote server, then:

     

    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.

     

    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