Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

How to prepare a normal release ?

  • create a Version Notes page and start adding important changes to it
  • create a filter in JIRA with Fix Version pointing to the release version you want to prepare
  • review JIRA issues and re-organise them, move the Fix Version to the next release or Future, mark what should be solved in the release you're working on
  • update the Draft Docs page - build project locally, upload struts2-assembly-docs.zip to people.a.o and move the content to /www/struts.apache.org/2.x/docs/
  • or you can use the script below to update the Draft Docs after login to people.a.o:
    No Format
    
    #!/bin/sh
    
    wget -erobots=off -nH -nv -E -L --directory-prefix=cwiki --no-check-certificate -r https://cwiki.apache.org/WW/
    
    rm -r /www/struts.apache.org/2.x/docs/*
    mv cwiki/WW/* /www/struts.apache.org/2.x/docs/
    
    chmod -R g+w /www/struts.apache.org/2.x/docs/
    chown -R :struts /www/struts.apache.org/2.x/docs/
    
    rm -r cwiki
    

How to prepare a fast track release ?

  • keep all the informations confidential as possible, communicate throughout security@struts.a.o group
  • restrict access to all the related pages created in Confluence to struts-committers group only, they can be made public available after fix or workaround was released

What do you want to build ?

Depends on what you want to achieve, please select topic from the list below:

Tip

Developers using Linux workstations can skip over the references to PuTTY and Cygwin

Each time

(There are also one-time setup instructions)

0

Delete the struts2 items in your local Maven2 repository and obtain a fresh checkout.

Code Block
svn co https://svn.apache.org/repos/asf/struts/struts2/trunk STRUTS_#_#_#

1

Update the POMs to remove "-SNAPSHOT" from the version

2

Commit the POM changes and note the revision number

3

Tag the release by making a SVN copy of the head or designated revision

 

Code Block
svn copy -r ###### 
  https://svn.apache.org/repos/asf/struts/struts2/trunk 
  https://svn.apache.org/repos/asf/struts/struts2/tags/STRUTS_#_#_# 
  -m "WW-#### Tag r###### as Struts #.#.#" 

4

Assemble the release (see notes)

 

Code Block
mvn clean install site -P all,pre-assembly
cd assembly 
mvn clean assembly:assembly
  • The assembly module is not listed in the 'all' profile, so it does not get cleaned on line 1 above.
  • From a clean Subversion checkout against a clean Maven repository, you may need to build the plugins first so that they exist in your working repository.

5

Sign the release artifacts (in assembly/target/assembly/out)

 

Code Block
mvn -P release,all -D$passphrase

 

Under CygWin, use the $ mount command to check your drive and path mappings

6

pscp the artifacts and signatures to people.apache.org:/www/people.apache.org/builds/struts/#.#.# and update the download page

7

Deploy the artifacts to the staging repository

 

Make sure the staging repository at {{

http://people.apache.org/builds/struts/m2-staging-repositoryImage Removed

}} is absent or empty, then:

Code Block
mvn deploy -P all,pre-assembly 

8

Update the POMs to next version number and add the "-SNAPSHOT" suffix

9

Commit the POM changes

10

Deploy the new snapshot

 

Code Block
mvn -N install

11

Add the next version to our issue tracker for scheduling new features and fixes

12

If the distribution is being mirrored, copy the ZIPs to /www/www.apache.org/dist/struts, wait 24 hours, and then update the download.xml page.

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 cygwin 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)

 

Code Block

<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>$USERID</username>
          <privateKey>$PATH_TO_PRIVATE_KEY</privateKey>
          <directoryPermissions>775</directoryPermissions>
          <filePermissions>644</filePermissions>
       </server>
       <server>
          <id>struts-staging</id>
          <username>$USERID</username>
          <privateKey>$PATH_TO_PRIVATE_KEY</privateKey>
       </server>
       <server>
          <id>apache-site</id>
          <username>$USERID</username>
          <privateKey>$PATH_TO_PRIVATE_KEY</privateKey>
       </server>       
    </servers>
   <profiles>
       <profile>
        <id>cargo-config</id>
         <properties>
            <cargo.tomcat5x.home>$CATALINA_HOME</cargo.tomcat5x.home>
         </properties>
      </profile>
      <profile>
         <id>struts-staging</id>
         <repositories>
           <repository>
             <id>struts-staging</id>
             <url>http://people.apache.org/builds/struts/m2-staging-repository</url>
             <snapshots><enabled>false</enabled></snapshots>
             <releases><enabled>true</enabled></releases>
           </repository>
          </repositories>
        </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

 

cygwin will save the known hosts to your ~/.ssh folder, but the script cannot access it there (from Windows)

2

From cygwin (not Windows) create another .ssh folder at (question)

3

Copy the known_hosts file to the new .ssh folder

Resources

Retagging

If a tagged build needs to be retagged, be sure to delete the old tag first.

Code Block
svn delete https://svn.apache.org/repos/asf/struts/struts2/tags/STRUTS_#_#_# -m "WW-### Removing first try at 2.#.#."

Interim Notes on Cobbling a Distribution

To update the Java 4 distribution

Before tagging

  • If needed, update the translator JARs and translate batch file under "backport"
  • If needed, update the translate batch file as to the Struts version under "backport"

After assembly, before signing

  • Extract assembly to a root drive (\struts-2.0.x)
  • Copy (export) the "backport" folder that is under SVN to \struts-2.0.x\j4
  • run the translate batch file
  • create struts-2.0.x-j4.zip archive
  • update struts-2.0.x-all.zip archive