Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Download and install the Gnu Privacy Guard (GPG) from http://www.gnupg.org. Read the documentation on that site and create a key. Have the key signed and verified by others. Submit your public key to http://pgp.mit.edu/. This is a one time process.
  2. Be sure that you have your ~/.m2/settings.xml updated as specified above in Releasing A Geronimo Project
  3. Copy (or move as per situation, for eg specs) the trunk/branch to the new branch using the following command.
    No Format
    svn mv SRC-URL DEST-URL -m "Reason for this commit".
    
  4. Checkout or update this branches tree on your machine.
  5. Update the <scm> urls in the pom.xml to point to the final url in tags. Eg:
    Code Block
    <scm>
         <connection>scm:svn:http://svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1</connection>
         <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1</developerConnection>
         <url>http://svn.apache.org/viewvc/geronimo/repos/asf/geronimo/specs/tags/geronimo-servlet_2.5_spec-1.1</url>
    </scm>
    
  6. Add the following release profile to the root pom.xml (Note: This is a subset of the profile included in the maven release process above). This will utilize the maven gpg plugin to sign the artifacts produced and the maven deploy plugin to stage the release to your people.apache staging location but will not utilize the maven release plugin to create the tag, rename versions, etc...
    Code Block
            <profile>
              <id>release</id>
                <build>
                    <plugins>              
                        <!-- We want to sign the artifact, the POM, and all attached artifacts -->
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <inherited>true</inherited>
                            <configuration>
                                <passphrase>${gpg.passphrase}</passphrase>
                            </configuration>
                            <executions>
                                <execution>
                                    <goals>
                                        <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        <!-- We want to deploy the artifact to a staging location for perusal -->
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-deploy-plugin</artifactId>
                            <inherited>true</inherited>
                            <configuration>
                                <altDeploymentRepository>${deploy.altRepository}</altDeploymentRepository>
                                <updateReleaseInfo>true</updateReleaseInfo>
                            </configuration>
                        </plugin>
                    </plugins>
                </build>
            </profile>
    
  7. Build the new branches tree as you normally would to ensure that it is correct.
  8. Stage the release for a vote.
    When you are ready to create a release candidate, build the new branches tree that will soon be released using the following command.
    No Format
    mvn -Prelease,default deploy
    
  9. Export and tar/zip the source to be voted on for the release using the following commands:
    No Format
    svn export https://svn.apache.org/repos/asf/geronimo/server/branches/2.1.1 geronimo-2.1.1-src
    tar -zcvf geronimo-2.1.1-src.tar.gz geronimo-2.1.1-src
    
  10. Copy the tar ball to a publicly accessible location. Put it for a vote along with the staging release you created earlier. In the vote notice, please include the precise names and versions being voted on (e.g. geronimo-javamail_1.4_spec-1.1) and the svn urls to the current source and where the tag will be created.
  11. Copy from the staging repo to the production repo.
    Once the release is deemed fit for public consumption it can be transfered to a production repository where it will be available to all users. Note: Current version of the stage plugin is 1.0-alpha-1.
    Here is an example on how to use the stage plugin:
    No Format
    mvn stage:copy -Dsource="http://people.apache.org/<your apache id>/staging-repo/<siteId>" \
      -Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" \
      -Dversion=2.3 \
      -DtargetRepositoryId=apache.releases
    
    Note

    The version parameter is currently ignored but specify the correct version anyway. The entire staging repository is synced, not just the given version or the current project.

    Info

    Ensure that the files you copy to the rsync directory have 0775 dir permission and a 0664 file permission set on them.

  12. Move the branches to tags using the following command.
    No Format
    svn mv SRC-URL DEST-URL -m "Reason for this commit".
    

...