You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 26 Next »

CONTENTS:

1. Preparation

 2. Code build and release

3. Deploying static HTML 

PREPARATION 


ARE YOU DOING A RELEASE?
Before deploying anything, confirm that you won't interrupt anyone else's work. 

  • For all releases, check in on jabber chat thalia-talk .
  • For QA releases, also check in with QA testers in thalia-QA .
  • For production releases,  email asst@mit.edu as well as thalia-ops@mit.edu (preferably with the same message, so both will see any replies) about the scheduled down time ahead of time so they will not be alarmed when the nagios service fails on Thalia. 

BEFORE STARTING:

1. Make sure all developers have checked in their code.
2. For releases, make sure everyone has resolved their fixed bugs so the release notes are accurate.

CODE BUILD AND RELEASE 

Thalia code has two pieces: the IME back end, which is a Java .war file, and the .swf front end, which is written in OpenLazlo.

 
FRONT END

(Temporary) Ask Justin or Robin to compile and commit a new .swf, or see the (somewhat convoluted) front-end build instructions which are a child page of this one.

 BACK END

Configuring the Build Environment

1. download the latest version of maven at http://maven.apache.org/download.html (maven 2.0.7)

2.  a. Unzip  Unzip maven-2.0.7-bin.zip to the directory you wish to install Maven 2.0.7.
 b. Add the bin directory to your path.
 c. make sure that JAVA_HOME is set to the location of your JDK - on isda-build1.mit.edu this is /usr/java/jdk1.6.0
 d. Run mvn --version to verify that maven is correctly installed .

3. Confirm you have access to the svn repository: svn+ssh://svn.mit.edu/zest/thalia-maven

Building 

0. Before you begin:

Make sure all developers have checked in their code. 

For a release, make sure you have no un-committed code changes hanging around with

svn status

If there are modified files, either check out a fresh copy or commit your changes.

For a release, write the release notes.  The release notes contain a list of what changed in this release: new features, bug fixes,  underlying changes like an Alfresco upgrade, etc. Release notes have three purposes: they give QA specific information about what to test;  they remind you what changed in the release long after you've forgotten; and they're the raw notes for the email that gets sent to users.

If you don't know what changed, it's probably a bad idea to do a release. 

 Also update the knownissues page at zest/thalia/teamsite/help/. Remove resolved issues and add new issues. This page needs to be manually uploaded to

\$

Unknown macro: {CATALINA_HOME}

/webapps/help directory. Include the link to the knownissues page in the release note. 0.1  Log in to isda-build1.mit.edu .


1. Check out the thalia code from svn:

svn checkout svn+ssh://username@svn.mit.edu/zest/thalia-maven

SVN will create or update a directory named thalia-maven with the latest code.

2.  If you're doing a release, create a new branch from the trunk. The naming convention for branches is thalia<version>-sprint<num>  ( e.g. thalia1.0-sprint2 ). 

svn copy Trunk/thalia Branches/thalia<version>-sprint<num>
cd  Branches/thalia<version>-sprint<num> 

3. Update the configurations so everything points to the correct servers.

4. Make a clean build of the .war file:

cd thalia-maven/Branches/thalia<ver>-sprint<num>
mvn clean package -Denv=prod1

It will create or update the target directory and add the file ROOT.war .  Please note that the Thalia maven build has three profiles. The default profile is the development profile. If you want to choose the test profile, use -Denv=test1 or -Denv=test2 (when packaging, test1 and test2 are exactly the same. When deploying, test1 deploys to isda-thalia2 and test2 deploys to isda-thalia11). If you want to choose the production profile, use -Denv=prod1 or -Denv=prod2 (when packaging, prod1 and prod2 are exactly the same. When deploying, prod1 deploys to isda-thalia5 and prod2 deploys to isda-thalia8).

4. If you're doing a release and the build completed without error, commit the branch. 

svn commit 

5.   Deploy the war:
a.  Check that it's ok to deploy.  Start in the thalia-talk chat  .  If deploying to QA, check in with the QA contractor in thalia-qa . If deploying to production, you will already have emailed asst@mit.edu about the scheduled down time ahead of time so they will not be alarmed when the nagios service fails on Thalia. 

6.  There are two ways to deploy: one through the web, and one via maven.  Do one of the following:

DEPLOY WITH MAVEN 

a. To specify tomcat authentication info in Maven, add the following line in settings.xml in $M2_HOME/conf/settings.xml  . Username and password are for the tomcat manager. Ask if you don't have that information. 

Maven settings are in the maven directory in conf/settings.xml. deploymentserver is used for release to the development cluster. testserver* is used for release to the test cluster. prodserver* is used for release to the production cluster.

    <server>
      <id>deploymentserver</id>
      <username>username</username>
      <password>password</password>
    </server>

    <server>
      <id>testserver1</id>
      <username>username</username>
      <password>password</password>
    </server>
    <server>
       <id>testserver2</id>
       <username>username</username>
       <password>password</password>
    </server>

   <server>
      <id>prodserver1</id>
      <username>username</username>
      <password>password</password> 
   </server>
   <server>
      <id>prodserver2</id>
      <username>username</username>
      <password>password</password>
   </server>

c. Deploy with Maven:

mvn tomcat:undeploy
mvn tomcat:deploy

This should also work:

mvn clean tomcat:deploy

By default this will undeploy and deploy thalia on the development server.

To deploy to QA:
 mvn tomcat:undeploy -Denv=test1
 mvn clean tomcat:deploy -Denv=test1
 mvn tomcat:undeploy -Denv=test2
 mvn clean tomcat:deploy -Denv=test2
To deploy to production:
 mvn tomcat:undeploy -Denv=prod1
 mvn clean tomcat:deploy -Denv=prod1
 mvn tomcat:undeploy -Denv=prod2
 mvn clean tomcat:deploy -Denv=prod2

DEPLOY BY WEB PAGE:

There are usually two front ends per environment. You must repeat these steps on each server. Visit the tomcat manager page for each front end server. See the Thalia environments list for hostnames.

a. Download the freshly built ROOT.war from isda-build1  to your local machine.

b. Open the Tomcat server manager for each front end in a web browser.  ( http://hostname/manager/html/upload&nbsp; )

c. Undeploy the root instance, /.   .

d. Further down the page, upload ROOT.war . 

7. For all deployment methods:  Do a smoke test to confirm Thalia came back up. Brian Childs suggests:

  • the page comes up in your browser
  • it recognizes you as logged in
  • you can create a library
  • you can do a bulk upload
  • you can create an album
  • you can create a slideshow 

DEPLOYING  HELP HTML PAGES

Html pages are kept in svn at svn+ssh://svn.mit.edu/zest/thalia/website/ . Html is divided into Branches and Trunk, like code, because the help changes with product versions.

To deploy static html pages,  navigate to the Branches subdirectory for the current Thalia version and sprint.

Static html is deployed from svn+ssh://svn.mit.edu/zest/thalia/website//help to /home/apache-tomcat-5.5.23/webapps/help  .    You may either copy the files with svn directly to the target machine, or make a fresh copy on your local machine and scp it over.

The entire help directory may be copied, as it is always the up to date Branched version, or only newly updated files if you have a list.

Don't deploy  the top-level files in svn+ssh://svn.mit.edu/zest/thalia/website/ . I believe most of them are out of date, and the directory is due for a cleanup after Thalia 1.0 sprint 4 . [jriley]

  • No labels