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.
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 -Dmaven.javadoc.skip
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.
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.
Pre 10.0 releases use https://repository.jboss.org/nexus/index.html.
10.0+ releases use https://oss.sonatype.org [[TEIID-4924] Push Teiid artifacts to maven central - JBoss Issue Tracker ]- which requires that artifacts are signed. Please make sure that gpg2 is setup correctly on your system: Apache Maven GPG Plugin – Introduction
You can find the release artifacts in the target/checkout/build/target directory.
If copying to the JBoss Release Site:
echo "mkdir <Version>" | sftp firstname.lastname@example.org:downloads_htdocs/teiid/<Version>
scp target/checkout/build/target/*.zip target/checkout/build/target/*-jdbc*.jar email@example.com:downloads_htdocs/teiid/<Version>
If just relying on maven, then just ensure the staging repository has been closed and release.
The download page should be updated and published as shown below.
Typically the api Javadoc and docs are not posted for a non-Final release.
Creating and publishing the image requires that docker is installed and the docker daemon is running.
As of Teiid 10.0 building and pushing the image will happen as part of the maven build. This requires specifying the repository information, typically you would do this with a server element with id registry.hub.docker.com and credentials in your settings.xml file.
For prior releases, you need to run a shell script:
Choose y to push the image to Docker Hub.
Use the teiid account with the firstname.lastname@example.org email address.
Generate the Javadocs from target/checkout with:
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 email@example.com:docs_htdocs/teiid/<Version>/apidocs
unzip -d target build/target/teiid-<Version>-wildfly-dist.zip docs/teiid/teiid-releasenotes.html
scp target/docs/teiid/teiid-releasenotes.html firstname.lastname@example.org:docs_htdocs/teiid/<Version>
For a full release the appropriate projects need branched - primarily this is GitHub - teiid/teiid-documents: Community documents for Teiid Engine and Teiid Server
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. Using the jar built from GitHub - teiid/javacc: Customization of JavaCC for Documentation as a patch for JavaCC 6.1.2, run jjdoc against the SQLParser.jj file and copy the resulting contents from SQLParser.html into the BNF_For_SQL_Grammar.adoc.
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/* email@example.com:/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
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
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 restrict the access to this space to only project leads so that community users do not accidentally delete any content.
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.).