You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by Apache Wiki <wi...@apache.org> on 2008/06/11 23:23:50 UTC

[Myfaces Wiki] Update of "TrinidadReleaseProcedure" by ScottOBryan

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Myfaces Wiki" for change notification.

The following page has been changed by ScottOBryan:
http://wiki.apache.org/myfaces/TrinidadReleaseProcedure

The comment on the change is:
Updated the documentation.

------------------------------------------------------------------------------
- = What do we need to release one of the Trinidad artifacts (plugins / core) ? =
+ = What are the steps to releasing Trinidad Core? =
  
-  * create a branch for the upcoming release (candidate)
-  * enable the [http://maven.apache.org/plugins/maven-gpg-plugin/ GPG Plugin] to sign the release (candidate) by uncommenting the following from the ''root pom.xml'' file:
+ 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 [http://wiki.wsmoak.net/cgi-bin/wiki.pl?ReleaseSigning/ 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.
+ 
+ == Prepare Release ==
+ First step is to prepare the release.  This is done by running the following maven command: 
  {{{
+ mvn -DprepareRelease release:prepare
-   <build>
-   ...
-     <!--plugins>
-       <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-gpg-plugin</artifactId>
-         <executions>
-           <execution>
-             <id>sign-artifacts</id>
-             <phase>verify</phase>
-             <goals>
-               <goal>sign</goal>
-             </goals>
-           </execution>
-         </executions>
-       </plugin>
-     </plugins-->
-   </build>
  }}}
+ The default options should be fine in most cases.
-  * Need a [http://wiki.wsmoak.net/cgi-bin/wiki.pl?ReleaseSigning/ GPG KEY]?
-  * run the maven build process with the following param:
- {{{
- mvn clean install source:jar deploy -Dpassphrase=yourPassPhrase
- }}}
-  * hold a public vote on the dev list and wait for mentors feedback
-   * in case of positive feedback from the mentors, move this discussion to the general AT incubator list (as a VOTE thread)
-   * otherwise address the concerns the mentors have
-  * if general AT incubator list says "GO", do the release
-   * use the maven release plugin (or remove the -SNAPSHOT manually) and deploy it to the incubator maven repository:
- {{{
- mvn clean install source:jar deploy -Dpassphrase=yourPassPhrase
- }}}
  
+ 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
+  1. 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.
+  1. 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*`
+  1. change your directory into the ''trinidad-assembly'' module directory.
+  1. build the packaged release artifacts by running the following mvn command: `mvn clean install package assembly:assembly`
+  1. change to the ''target/assembly/out'' folder.
+  1. 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}}}
+  1. 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}}}
+  1. 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.
+  1. 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`
+  1. 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
+  1. 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.
+  1. 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`
+  1. ssh into people.apache.org
+  1. 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.
+  1. 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.
+  1. 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:
+   a. src/site/apt/download.apt - these are the download links.  Simply changing the version numbers on the text and the links should be sufficient
+   a. 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.
+   a. src/site/apt/news-archive.apt - this is documented in the above step as to what to do with it.
+  1. 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.
+