What are the steps to releasing Trinidad Core?

Trinidad has two main trunks. The trunk and the trunk_1.2.x. Typically these will be released around the same time as each other. These steps need to be run on both branches.

Before You Get Started

Prepare Release

First step is to prepare the release. This is done by running the following maven command:

mvn -DprepareRelease release:prepare

The default options should be fine in most cases.

I will typically do this on a brand new trunk or trunk1.2.x working copy. The reason for this is that while you are in the release process (ie. after release:prepare but before release:perform) there are important artifacts saved on your trunk's working copy. Plus, the process is very sensitive to extra files in your view and whatnot.

Generate Release Artifacts

After preparing the release, you'll need to generate the release artifacts and vote on the release. This is done with the following steps:

  1. create a new directory to store your tag
  2. check out the new tag which was created by the release:prepare process. It is important to make sure that if you change code in this branch, to check it in before performing the release.
  3. build the release to a staging directory. This could be sent directly to your Apache Share on people.apache.org but I suggest building everything locally and then taring everything up to transmit to the server. To do this, execute the following command: mvn clean source:jar install deploy -DaltDeploymentRepository=*username*::default::file:*stagingDir* -DperformRelease=true -Dgpg.passphrase=*passphrase*

  4. change your directory into the trinidad-assembly module directory.

  5. build the packaged release artifacts by running the following mvn command: mvn clean install package assembly:assembly

  6. change to the target/assembly/out folder.

  7. sign all the release artifacts in this directory. You can do this from bash by entering the following: for path in `ls -b`;do echo *passphrase*|gpg --clearsign --passphrase-fd "$path" -o "$path.asc";done

  8. generate sha1 and md5 checksums for all the release artifacts and asc files in this directory. You can do this from bash by entering the following: for path in `ls -b *.zip *.tar.gz *.asc`;do md5sum $path > $path.md5;sha1sum $path > $path.sha1;done

  9. move all of the files to the staging directory that you specified in step 3. Note that these artifacts should be at the same level as the org directory which was produced by maven in step 3.

  10. change your directory to the trinidad-examples module directory and run a standard build on it. Examples are not built as part of the release. You can do this by issuing the following command: mvn clean source:jar install

  11. repeat steps 5-9 for the trinidad-examples/trinidad-example-assembly module. The artifacts will be different, but all the steps to produce them should be the same

  12. move all the artifacts in your staging directory to the server you will use to display the artifacts. I suggest using a subdirectory in your public_html directory on people.apache.org.
  13. generate your vote email and include a url to your artifacts. Typically you would keep the vote open for 72 hours and you need at least 3 +1 votes to pass.

Performing the Release

After the vote passes, you need to perform the release. These steps are done on the working copy you used to issue the `mvn -DprepareRelease release:prepare' target.

  1. issue the following maven command: mvn release:perform

  2. ssh into people.apache.org
  3. type cp -Rf /www/people.apache.org/builds/myfaces/m2-staging-repository/org/apache/myfaces/trinidad/* /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/myfaces/trinidad/. This will copy the artifacts produced by the release perform to the repository for the mirrors.

  4. copy all of the built artifacts, their signatures, and checksums from the online directory staging directory that you used for your vote to the dist directories on apache. The dist and example files all go to /www/www.apache.org/dist/myfaces/binaries and the src-all files all go to the /www/www.apache.org/dist/myfaces/source directories.

This will all take a while to replicate, but it will eventually.

Finishing Up

What's left is basically finishing up some paperwork.

  1. you need to send out a release notice, this should go to the users, announcements, and dev lists.
  2. you need to update the myfaces site project to reflect the new versions. When you check files into this directory, Continuum should rebuild the website for you. The files your interested in will be:
    1. src/site/apt/download.apt - these are the download links. Simply changing the version numbers on the text and the links should be sufficient
    2. src/site/apt/index.apt - you'll want to update the news. There should already be a news entry for Trinidad core out there. Copy it to the src/site/apt/news-archive.apt file. Once done, move it to the top of the news section in the index.apt and change the information as necessary for the release.
    3. src/site/apt/news-archive.apt - this is documented in the above step as to what to do with it.
  3. you need to update the trinidad sire to reflect the new version. This will be done on the trunk project only, the 1.2 does not have the most up-to-date site. I'd like to see this in a seperate project eventually, like the myfaces site project, but that is something for another time. (if someone could document all that needs to be done in here, I would appreciate it.

TrinidadReleaseProcedure (last edited 2009-09-20 23:01:13 by localhost)