Apache Struts 2 Documentation > Home > Guides > Contributors Guide > Creating and Signing a Release |

Apache Struts 2 Documentation
Creating and Signing a Release
Edit Page Browse Space Add Page Add News
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