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
You will need to create and register your public GPG KEY.
You will also need a place to upload your artifacts. If you are a comitter, you should have access to the people.apache.org server. If you ssh into people.apache.org and create a public_html folder, the contents will then be accessible vial the url http://people.apache.org/~username.
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:
- create a new directory to store your tag
- 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.
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*
change your directory into the trinidad-assembly module directory.
build the packaged release artifacts by running the following mvn command: mvn clean install package assembly:assembly
change to the target/assembly/out folder.
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
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
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.
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
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
- 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.
- 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.
issue the following maven command: mvn release:perform
- ssh into people.apache.org
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.
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.
What's left is basically finishing up some paperwork.
- you need to send out a release notice, this should go to the users, announcements, and dev lists.
- 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:
- src/site/apt/download.apt - these are the download links. Simply changing the version numbers on the text and the links should be sufficient
- 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.
- src/site/apt/news-archive.apt - this is documented in the above step as to what to do with it.
- 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.