GMAT R2017a Release Process

This page is used to track the process and progress of the R2015a release.

Release Lead Roles

RoleAssigneeAuthority/Responsibility
Release ManagerSPH"owns" release, initiates process, creates tracking page, sends daily status updates, tracks issues to completion, makes sure everyone gets their stuff done, brings decisions to CCB/team, maintains tracking page, collects lessons learned, documents process improvements for next release. Must be reachable and preferably in the office during critical stages like creating and testing RCs.
Build Manager

TDN: Windows

WCS: Mac

DJC: Linux

controls build system, creates RCs, sends RC availability announcements. Must be reachable and preferably in the office during critical stages like creating and testing RCs.
Test Manager

GUI: TR

Script: SPH

control GUI/script testing for each RC.  Must be reachable and preferably in the office during critical stages like creating and testing RCs.

Release Risks

This is a list of all risks (opened and closed) related to smooth release of R2015a.

OwnerStatusDescriptionResolution
SPH

Closed.

 

Triage backlog of issues for critical bugs.

Triage nightly failures.

  Reviewed issues, checked in two new bu;gs. 
DJCOpenLevel of effort for last minute critical issues is not clearInvestigate SDO STK format file changes and TESS Bugs to get better estimates early so we know if we have any issues. 

Tasks

All dates are referenced to 12:00 noon EDT.

For example, a deadline of March 15 should be interpreted as March 15, 12:00 noon EDT.

 

Early Tasks

These are long-lead early tasks that can be completed before the detailed release cycle.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes
Obtain Release ApprovalsSPHIn ProgressNeeded by release day.
Get updated legal statement/licenseSPHIn ProgressNeeded by Code Freeze.
Update sample scripts
SPH 

Needed by App Freeze.

  • Write examples that demonstrate new functionality
  • Clean up all errors and warnings
  • Remove deprecated fields
Write draft Release Notes

SPH

 

Needed by App Freeze.

See Writing Release Notes

Update standard descriptive textSPH 

Needed by App Freeze.

Will be used in User Guide, websites, release announcement.

Update version number in User Guide cover
SPHIn Progress

Needed by App Freeze.

Contact Katy Gammage or Mary Hrybyk-Keith to update cover page.

Next time: integrate sejda-console to do this automatically.

Update info on public-facing websitesTGG 

Needed by Release Day.

See the list of sites. Update this list as well, if necessary.

Updated major sites before announcement. Minor ones can be updated a bit later.

Update release announcement contactsSPH 

Needed by Release Day. Located here.

Put in order for additional iconsSPH(tick)

(if necessary)

Needed by Visual Freeze.

For Feature Complete (May 11)

Feature complete means that all planned features are implemented in the system and ready for final QA.

For QA Complete (May 11)

QA complete means that all known bugs are being tracked, all bug fixes are verified and documented, and the release process can begin.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes
Verify that all known bugs are checked into JIRA(All)

DSC:  

SPH:

 
Complete all JIRA verifications(All)

DSC:
SPH:  

   

 
Complete QA wrap-up tasksDJC, SPH, JJKP, RQ

DSC: 

SPH:  

JJKP: Need to run save mode one last time before code freeze.

DJC: No Wrap-up tasks assigned to me

Address all JIRA tickets awaiting feedback(All)

DSC:

SPH:   

 
Mark .tc files with requirements and verify traceability to new requirements(All)

DSC:
RQ:

SPH:  

This is new this year! 
Perform Static AnalysisWCS SPH

WCS: (tick)

 

Run VS analysis tool and fix critical issues.

For Visual Freeze (May 11)

Visual Freeze finalizes all graphical changes to the software, so that screenshots, documentation, and TestComplete can be updated.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes
Update About panel

SPH

(tick)
  1. Update release number (i.e. R2017a).  
  2. Add any new libraries used. 
  3. Update an links.
Update splash screenSPH(tick)
  1. Add new contributors
  2. Remove contributors who did not contribute to this release
  3. Design updates
  4. Update SplashScreen.psd in GmatDevelopment\moredata\graphics\splash
  5. Use GIMP to save a flattened TIF file and overwrite splash screen in GmatDevelopment\application\data\graphics\splash.
  6. Make sure there is a BETA splash as well. 

Move to App Freeze. 

Update iconsN/A(tick)

If there are any updates, additions, deletions.

Including GMATIcon for Welcome Page

Update gmat_startup_file.txtWCS(tick)
  • Update formatting, comments
  • Add any additional plugins
  • Switch to release configuration for public startup (comment out alpha plugins)

Make sure to update both internal and public versions and any platform specific versions.

Complete visual updates(All)(tick)Move to App Freeze. 

For Code Freeze (Noon June 2) 

Code Freeze is a freeze on the software itself before final testing.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatus

Internal

Status

Notes
Update data files
WCS(tick)(tick)Update eopc04_08.62-now and run smoke tests and SPICE .bpc file (SHOULD be moved to App Freeze)

Update Info.plist and RunGMAT as needed;

and RunGmat.m (test system) if needed

WCS(tick)(tick)Need copyright and release number/name at least; Update to default MATLAB version in test system file
Update files w/ updated legal statementSPH (tick) (tick)
  • Readme file
  • Source code files
Update license textSPH

(tick)

No Change.

(tick)

Update application/License.txt file.  Nothing to do since license did not change.

Update copyright and code headersSPH (tick) (tick)

This tool makes adding paragraphs and changing headers simple.  http://sourceforge.net/projects/findandreplace/

As of R2015a these directories have files that need updating.

public\src (hpp, cpp)

public\plugin (hpp, cpp)

public\application\matlab\gmat_keyword (.m)

internal\code (hpp,cpp)

Final bug fixes(All) (tick)
(tick)
 
Mark all open bugs as Affects: current releaseSPH(tick)(tick) 
Set release name in codeWCS(tick)(tick)Change GmatGlobals to use formal release name
Update version number in Cmakelists    

For App Freeze (Noon June 2

App Freeze is a freeze on all application bundle files beyond data and code. This includes documentation, sample scripts, stuff in the extras folder, etc.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes
Update README.txtSPH

SPH:(tick)

WCS:(tick)

DJC: (tick)


Update any install and run instructions. 
Update extras folderSPH  (tick)
Notepad++ syntax coloring file
Update PDF files in docs folderSPH/DJC

DJC: (tick)

SPH: (tick) 



  • Update watermark: "Draft for Release R2016a"
  • Put into application/docs folder, and individual doc source folders
Gather list of compatibility changes since last releaseSPH (tick)
  • Deprecated fields
  • Removed & disabled fields
  • Anything a user would need to know to make R2016b scripts compatible with this release.
Update Release Notes
SPH (tick)
 
Update screenshots in User Guide
(Feature leads)

SPH:  (tick)

DSC: 

 
Test User Guide instructions & code(Feature leads)

DSC:

SPH:  

  • Tutorials
  • script snippets
  • reference page examples

SPH:  only tested features that changed for which I was FDE

Update Windows installer packageSPH 
 
Update links in GMAT.ini

SPH

  (tick)
  • Help links
  • Welcome page links
Update link tests in TestCompleteTR(tick)
  • Help buttons
  • Welcome Page links
  • Help menu links

Testing of Release Candidate 1 (June 3 - June 9   )

This will start with the 2014-05-05 daily build. Repeat this phase until tests check out. Steve will make the call.

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes
Update README.txtSPH

RC1: (tick)

RC2-RC5: N/A

Next time: this should probably be "Update Release Notes" to add outstanding bugs, etc.

Build Windows installer

SPH

RC1: (tick)

RC2: (tick)

RC2-2: 

RC3:  

RC4: 

RC5: 

Version string: R2015a-rc#

Next time: build manager should do this

Bundle Windows zip

SPH

RC1: (tick)

RC2: (tick)

RC2-2: 

RC3:  

RC4: 

RC5: 

Version string: R2015a-rc#

Next time: build manager should do this

Run TestComplete smoke testsTR

RC1:

(tick)

RC2:  (tick)

These are tests on the packaged versions of GMAT: the installer and the zip bundle.
Run TestComplete system test missionsTRRC1: (tick)RC2:  (tick) These are tests on the packaged versions of GMAT: the installer and the zip bundle.
Run script test systemSPH

RC1: (tick)

RC2: (tick)

RC2-2: 

RC3:  

RC4: 

RC5: 

Run the internal installer tests on T4 and the public installer tests on Joel's machine. Run .zip bundle tests afterwards on same build to compare.
Test all sample scriptsSPH/DSC

RC3:   

RC4: 

At a minimum these need to be run individually by hand or run in GUI regression system.  Additionally, they must be run on a system that has no other installations of GMAT.  Past experience has shown that missing files, and configuraiton issues are not caught by running on machines used for development.
Run TestComplete full regression testsTR

RC2: (tick) 

(For final RC only)

Notes

  • While this cycle is ongoing is a good time to do wiki updates and cleanup.

Stage Release (June 12)

This is a soft release, putting all the files in place and updating information. Then on release day, we only need to send the announcements.  

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

 

TaskWhoStatusNotes
Tag All ReposDJC(tick)At least tag the test system; consider branching also if the burden on the repo is low.  (In SVN, tagging makes a branch, so tagging already creates a branch.)
Bundle source code
DJC*(tick)
  1. Export the trunk code from svn that is used for the release build when that build is started
  2. Wait for a go/nogo call from testing on the build
  3. Archive the following folder trees into a zip file: src, plugins, build
Bundle data
DJC*(tick)
  1. Use the same export as used for the source bundle
  2. Wait for a go/nogo call from testing on the build
  3. Archive the following folder tree into a zip file: application/data
Upload source bundle to SourceForgeSPH(tick)
  1. Move the zip file to SF
  2. Mark as "staged"
  3. Download the upload and check it
Upload data bundle to SourceForgeSPH (tick)
  1. Move the zip file to SF
  2. Mark as "staged"
  3. Download the upload and check it
Upload Windows installer to SourceForgeSPH  (tick)Download, install, and run after uploading.
Upload zip files to SourceForgeSPH  (tick)Download and run after uploading.
Post README.rst.txt on SourceForgeSPH   (tick)Update for new release
Upload docs to documentation siteSPH(tick)
  1. Upload using SSH to http://gmat.sourceforge.net/docs/
  2. Update HTML with new section
  3. Move "latest" pointer to new folder

SEE NOTES IN SECTION BELOW

Fixed "latest download" to point to new exe.SPH(tick)See instructions here: http://stackoverflow.com/questions/6777327/how-to-manually-set-the-default-download-file-in-a-sourceforge-project
Post internal & public release files to MESA networkSPH  (tick) 
Upload source to Git repo (tick)

Upload src

Change new branch to be active branch (what is checked out by default)

Update the doxygen data (tick) 
Make SourceForge repository backupSPH 

Follow SourceForge's instructions.

Here is the Rsync command for us:

    rsync -av git.code.sf.net::p/gmat/git.git .

* DJC can only do steps 1-3 here because of contractual constraints

Release Day (June 13)

Use "(/)" for the checkmark ((tick)) and "(x)" for the cross ((error))

TaskWhoStatusNotes

Make files visible on SourceForge

JJKP(tick)
07/21: Made visible at time of posting, as "soft" release.
Send out release announcementSPH (tick)
  • Mention GSFC in the announcement
  • Don't include large attachments.
Post release announcement on SourceForgeSPH* (tick) 
Post release announcement on GMAT BlogJJKP Blog won't load as of 7/21/2017... just get spinning wheel.  Waited for 5-10 minutes several times. -SPH
Mark as released in JIRASPH(tick) 

This needs to be assigned to a different person; DJC cannot post to SF

Post-Release

Use "(/)" for the checkmark ((tick)).

TaskWhoStatusNotes
Party!(All) 

Plan for week of June 19

Conduct postmortem reviewSPH This includes gathering feedback, holding the postmortem meeting, and documenting the results.
Submit GSFC Metrics SummaryWCSN/AThe link to submit the metrics is invalid.No action is required for this item. It was decided on 09/25/14's GMAT meeting to check tasks that do not require any action or are inactive.
Submit NTR for next releaseSPH  Per Hughes: The NTR cannot be written until all features are finalized and it is too early to do that.

Notes for postmortem

Please add your notes to the R2017a Lessons Learned document.

Compatibility changes

See Writing Release Notes

Creating an RC

  1. Create the build
    1. Log into gs580w-gmat-t4 as "gsfc580gmatbuild". The credentials are on the network drive, in the Infrastructure folder.
    2. Start Task Scheduler.
    3. [RC1 only] Disable the "GMAT Daily Build" task, so it doesn't run automatically during the RC cycle (this can make things overly confusing).
    4. Manually run the "GMAT Daily Build" task.
  2. Create the bundles
    1. On your local system, navigate to GmatDevelopment\build\install\windows-nsis. Note that you do not need to pull files down from the Git repository; this process will pull files from the remote build and create the packages in your local directory. There's a README.txt file there that explains things.
    2. Open a MinGW, MSYS2, or Cygwin shell in this directory.
    3. Run 'make assemble VERSION="R2015a-rc#"', where "#" is the number of the RC you're creating. This will create two directories in the current directory: gmat-internal and gmat-public.
    4. Run the following commands to add the User Guide cover. This requires sejda-console.

      sejda-console merge -f ../../../doc/help/src/files/images/Cover-UserGuide-A4-Trimmed.pdf gmat-internal/GMAT/docs/help/help-a4.pdf -o gmat-internal/GMAT/docs/help/help-a4-new.pdf -s all:all:
      mv gmat-internal/GMAT/docs/help/help-a4-new.pdf gmat-internal/GMAT/docs/help/help-a4.pdf
      
      sejda-console merge -f ../../../doc/help/src/files/images/Cover-UserGuide-Letter-Trimmed.pdf gmat-internal/GMAT/docs/help/help-letter.pdf -o gmat-internal/GMAT/docs/help/help-letter-new.pdf -s all:all:
      mv gmat-internal/GMAT/docs/help/help-letter-new.pdf gmat-internal/GMAT/docs/help/help-letter.pdf
      
      sejda-console merge -f ../../../doc/help/src/files/images/Cover-UserGuide-A4-Trimmed.pdf gmat-public/GMAT/docs/help/help-a4.pdf -o gmat-public/GMAT/docs/help/help-a4-new.pdf -s all:all:
      mv gmat-public/GMAT/docs/help/help-a4-new.pdf gmat-public/GMAT/docs/help/help-a4.pdf
      
      sejda-console merge -f ../../../doc/help/src/files/images/Cover-UserGuide-Letter-Trimmed.pdf gmat-public/GMAT/docs/help/help-letter.pdf -o gmat-public/GMAT/docs/help/help-letter-new.pdf -s all:all:
      mv gmat-public/GMAT/docs/help/help-letter-new.pdf gmat-public/GMAT/docs/help/help-letter.pdf
       
    5. Run 'make VERSION="R2015a-rc#"', where "#" is the number of the RC you're creating. This will create four packages in the current directory: A .zip and a .exe file for both the internal and public versions. Note: To create only an internal version, run 'make internal VERSION="R2015a-rc#"'.
    6. Copy the four package files to the network: \\mesa-file\595\GMAT\Builds\windows\VS2013_build_32\R2015a
    7. To clean everything up afterwards, run "make clean".
  3. Run the script test system on the internal installer package. See Running the script test system, below.

Note: To make the final release bundles, you can't just rename the files to take off the "-rc#" portion. You need to recreate the bundles using this command: make VERSION="R2015a" 

Running the script test system

In the steps below, "#" is the RC number and "<config>" is "internal" or "public".

  1. Log into gs580w-gmat-t4 as "gsfc580gmattest". The credentials are on the network drive, in the Infrastructure folder.
  2. [RC1 only] Start Task Scheduler and disable the "Run Script Test" task. You'll need to run the RC tests manually.
  3. Uninstall all previous versions of GMAT.
  4. Install the version being tested.
    1. Check "Enable MATLAB interface".
    2. Leave "Associate file types" unchecked.
  5. Update the test system repo (located at C:\Users\gsfc580gmattest\Documents\GmatTest)
  6. In MATLAB (64-bit):
    1. Run:
      >> cd C:\Users\gsfc580gmattest\Documents\GmatTest\bin
    2. Run (replace # with RC number and <config> with "internal" or "public"):
      >> diary('..\log\R2015a-rc#-<config>.log')
    3. Run (this command copies application files such as SPICE kernels needed for regression tests into the new installation of GMAT):
      >> preparegmat('C:\Path\To\GMAT')
    4. In C:\Users\testuser\Documents\GmatTest\bin, copy the appropriate template (autorundef.R2015aInternal.template.m or autorundef.R2015aPublic.template.m) to a new name (such as autorundef.R2015aRc1Internal.m) and fill in the values:
      1. RunDef.Build: "R2015a-rc#-<config>"
      2. RunDef.GmatExe: path to installed GMAT.exe
      3. RunDef.RegressionBuild: last build date if testing RC1 (look in GmatTest\output for latest folder, such as 2013-07-31), otherwise, "R2015a-rc#-<config>"
    5. Run:
      >> gmattest <name of rundef.m> (e.g. autorundef.R2015aRc1Internal.m) 
    6. Wait until run completes (usually 8+ hours)
    7. Run:
      >> diary('off')
  7. In a Windows cmd window, post results to network using robocopy:
    >robocopy "C:\Users\gsfc580gmattest\Documents\GmatTest\output\R2015a-rc#-<config>" "\\mesa-file\595\GMAT\TestResults\win7\R2015a-rc#-<config>" /E /MT /LOG:%TEMP%\robocopy.txt

Updating SourceForge HTML docs page

The Sourceforge page for logging in is here:  https://sourceforge.net/p/forge/documentation/SFTP/

I (SPH) used Filezilla and this was pretty straightforward once succesfully logging in:

Hostname is frs.sourceforge.net

UserName: "YOURSOURCEFORGEUSERNAME,gmat"

Password is: YOURSOURCEFORGEPASSWORD

File Updating

  1. Add a new folder for the release under the gmat\htdocs\docs folder
  2. Update contents of the new release folder with files from new release
  3. Update the gmat\htdocs\docs\index.html to include new folder and to point to the new latest folder.