Apache Struts 2 Documentation > Home > Guides > Contributors Guide > Creating and Signing a Release
Added by Ted Husted, last edited by Ted Husted on Sep 24, 2006  (view change)
Developers using Linux workstations can skip over the references to PuTTY and Cygwin

Each time

(There are also one-time setup instructions)

1 Tag the release by making a SVN copy of the head or designated revision
 
svn copy -r ###### https://svn.apache.org/repos/asf/struts/struts2/trunk https://svn.apache.org/repos/asf/struts/struts2/tags/STRUTS_#_#_# -m Tag r447072 as Struts #.#.#
2 Update the POMs to remove "-SNAPSHOT" from the version
3 Assemble the release
 
mvn install site -P apps,core,extras,xwork,itest,pre-assembly
cd assembly 
mvn assembly:assembly
4 Sign the release artifacts (in assembly/target/assembly/out)
 
gpg --armor --detach-sig struts-#.#.#-all.zip --output struts-#.#.#-all.zip.asc 
openssl md5 < struts-#.#.#-all.zip > struts-#.#.#-all.zip.mdr
5 pscp the artifacts and signatures to people.apache.org:/www/builds/struts/#.#.#
6 Deploy the artifacts to our Maven repository
 
mvn deploy -P pre-assembly
  If automatic deployment does not work for any reason, you can also deploy the Maven artifacts by hand
7 Update the POMs to add "-SNAPSHOT" for the next release version
8 Commit the POM changes
9 Add the next version to our issue tracker for scheduling new features and fixes

One time

Create and install a SSH key

1 Install PuTTY
2 Use PuttyGen to create a SSH key (see Putty help for details)
3 Use PuTTY to ssh to people.apache.org
4 Create a ~/.ssh folder
5 pscp your SSH public key to ~/authorized_keys
6 ssh to p.a.o
7 Create a ~\.ssh folder and move authorized_keys there
8 Configure putty to use your private key and save the session

Create a PGP key

1 Install cgywin, including utils/gpg
2 Generate a key with $ gpg --gen-key
3 Backup your home directory to another media
4 Add your key to people.apache.org/www.apache.org/dist/struts/KEYS

Update Maven settings for our servers

1 Create a settings.xml under .m2 (in your Document and Settings folder)
 
<settings xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- Uncomment this when the 'central' repo on ibiblio is down 
         See: http://maven.apache.org/guides/mini/guide-mirror-settings.html -->
    <!-- mirrors>
      <mirror>
        <id>ggi-project.org</id>
        <url>http://ftp.ggi-project.org/pub/packages/maven2</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
    </mirrors -->
    <servers>
       <server>
          <id>apache.snapshots</id>
          <username>$USERNAME</username>
          <privateKey>$PATH_TO_PRIVATE_KEY</privateKey>
       </server>
       <server>
          <username>$USERNAME</username>
          <privateKey>$PATH_TO_PRIVATE_KEY</privateKey>
       </server>
    </servers>
   <profiles>
     <profile>
        <id>cargo-config</id>
         <properties>
            <cargo.tomcat5x.home>$PATH_TO_TOMCAT_5</cargo.tomcat5x.home>
         </properties>
      </profile>
   </profiles>
   <activeProfiles>
      <activeProfile>cargo-config</activeProfile>
   </activeProfiles>
</settings>

Expose a copy of known hosts to Maven

1 from cygwin, ssh to people.apache.org, save the public key if prompted, and exit
2 cygwin will save the known hosts to your ~/.ssh folder, but the script cannot access it there (from Windows)
3 from cygwin (not Windows) create another .ssh folder at
4 copy the known_hosts file to the new .ssh folder