GMAT R2016a Release Process
This page is used to track the process and progress of the R2015a release.
Release Lead Roles
Role | Assignee | Authority/Responsibility |
---|---|---|
Release Manager | SPH | "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 | LOJ | 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 | TR | control GUI/script testing for each RC. Must be reachable and preferably in the office during critical stages like creating and testing RCs. |
Open Process Questions R2015a
- Consider merging to production and test this before next release process
- Automate installer packaging
- Consider sanity check from mission users' scripts
- Feature Freeze/QA Complete/Beta Test must happen earlier (month before code/App Freeze)
- We need to baseline the test results well before release process starts. Probably at Feature Freeze\QA Freeze
- Consider allowing GATS to produce multiple reports from one test run
- When should we merge with production and baseline tests?
Release Risks
This is a list of all risks (opened and closed) related to smooth release of R2015a.
Owner | Status | Description | Resolution |
---|---|---|---|
LOJ | Closed | GUI Behavior when using Includes is not completed. | GUI is viewable not savable when using includes. Basically disable saving of the GUI view. Propose closing as not a risk, just work that needs to be done. |
SPH | Closed | Display command fell of the radar | This command will be combined with Save and called Write. Propose closing as not a risk, just work that needs to be done. |
DSC | Closed | Save command is not defined yet. | This command will be combined with Display and called Write. Propose closing as not a risk, just work that needs to be done. |
DJC | Closed | MATLAB Writer for nav data. | Stand alone is working, ready for GMAT integration. Has MATLAB dependency which affects integration. Tracked in ticket system. |
RQ | Closed | Delta V computation from finite burn is not on task and harder than SPH's origional idea. | SDO is evaulating if approximations are good enough. Since the maneuvers times are short, dt*thrust is an excellent approximation for delta-V. Preliminary tests indicate about 1% error using approximation. The main question from SDO was whether the approximations are good enough for the delta H maneuvers. They see 5 sig figs which is good enough. The approximation is not good enough for large maneuvers they plan far in the future. Current plan is to change SOW deliverables for R2016b to include integration of delta V to ensure long term needs are met. Deliver R2016a with the approximation. |
DSC | Closed | Alpha/Beta Features are exposed but not easy to turn off. FileThrust, GUIs for Nav components | This is being tracked on GMT-4862. This does not seem to be a tall pole. Propose closing as not a risk, just work that needs to be done. Still need a plan for disabling untested data types. Scrub things that should be disabled. For example, old syntax like DataFile, MeasurementModel. This is being tracked in JIRA. |
DSC | Closed | May need to use RedHat 6.?. | Might need to use Windows, status of Linux for ODT is unknown.
FDF is running Linux 7, with workaround for ssh. |
TGG | Closed | Installer for cross platform supporting SVN data update utility | Current plan is that Data Update Utility will be included only if time allows, and that means time to fix issues and get installer working. Note, we probably do not need installer fro RC1, so that work could be pushed back until September if need be.
Data file update utility will not be in R2016a, it will be in R2016b.
|
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.
Git Repo Branching Policy
This is our branching strategy during RC testing by the FDF for ODT.
- We will create a new R2017aTemp branch from master, and developers working on code changes for R2017a would work in R2017aTemp.
- Those working on docs, app freeze items, and the few remaining code updates for R2016a keep working in master.
- Code changes for master could continue to require code reading and CCB approval.
- Once we've promoted the RCs to release builds, we'll first branch R2016a from master, then merge R2017aTemp back into master and return to normal branching/commit policy.
Early Tasks
These are long-lead early tasks that can be completed before the detailed release cycle.
Use "(/)
" for the checkmark () and "(x)" for the cross ()
Task | Who | Status | Internal Status | Notes |
---|---|---|---|---|
Review Previous Build Release R2015b Process Notes | All | |||
Obtain Release Approvals | SPH | Needed by release day. | ||
Get updated legal statement/license | SPH | N/A | Needed by Code Freeze. | |
Update sample scripts | SPH | Needed by App Freeze.
| ||
Write draft Release Notes | SPH | Needed by App Freeze. | ||
Update standard descriptive text | SPH | Needed by App Freeze. Will be used in User Guide, websites, release announcement. | ||
Update version number in User Guide cover | SPH | 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 websites | TGG | 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 contacts | SPH | Needed by Release Day. Located here. | ||
Put in order for additional icons | SPH | (if necessary) Needed by Visual Freeze. |
For QA Complete (July 10)
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 () and "(x)" for the cross ()
Task | Who | Status | Notes |
---|---|---|---|
Verify that all known bugs are checked into JIRA | (All) | DSC: SPH: | |
Complete all JIRA verifications | (All) | DSC: SPH:
| |
Complete QA wrap-up tasks | DJC, SPH, JJKP, RQ | DSC: RQ: 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: SPH: | This is new this year! |
Perform Static Analysis | TGG |
For Visual Freeze (Aug. 5)
Visual Freeze finalizes all graphical changes to the software, so that screenshots, documentation, and TestComplete can be updated.
Use "(/)
" for the checkmark () and "(x)" for the cross ()
Task | Who | Status | Internal Status | Notes |
---|---|---|---|---|
Update About panel | LOJ |
| ||
Update splash screen | TGG |
| ||
Update icons | TGG | SPH: TGG: | SPH: TGG: | If there are any updates, additions, deletions. Including GMATIcon for Welcome Page |
Update gmat_startup_file.txt | WCS |
| ||
Switch to release configuration in script test system | SPH |
| ||
Complete visual updates | (All) | | |
For Code Freeze (Aug. 8)
Code Freeze is a freeze on the software itself before final testing.
Use "(/)
" for the checkmark () and "(x)" for the cross ()
Task | Who | Status | Internal Status | Notes |
---|---|---|---|---|
Update EOP files (EOP, PCK, TK) | WCS | Update eopc04_08.62-now and run smoke tests and SPICE .bpc file (SHOULD be moved to App Freeze) | ||
Update tai-utc file & naif LSK | WCS | Update gmat_startup_file with new LSK | ||
Update Info.plist and RunGMAT as needed; also, RunGmat.m if needed | WCS | Need copyright and release number/name at least; Update to default MATLAB version in test system file | ||
Update files w/ updated legal statement | LOJ | N/A | |
|
Update license text | LOJ | N/A | N/A | Update |
Update copyright and code headers | LOJ | | | 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) | | | |
Mark all open bugs as Affects: current release | SPH | SPH: | ||
Set release name in code | LOJ | LOJ | Change GmatGlobals to use formal release name |
For this release: Should we branch the repo here, instead of after release? We need to allow people to continue working on unrelated items while release work is ongoing.{warning
(DJC here) A better approach going forward would be to merge master into production, and switch the test system to the production branch. This probably ought to be done right before building RC1. The dev team would have 2 options then:
- Checkout branches based on what they are working on (i.e. checkout production for bug fixes for the release, and their current clone of master – every one is cloning for new work, right? – for ongoing work)
- Alternatively, make bug fixes in master and cherry-pick merge changes into production as bugs are fixed
The former is the better approach, IMO, because it ensures that the bug fix is made on the current code base for the release.
For App Freeze (Oct. 6)
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 () and "(x)" for the cross ()
Task | Who | Status | Notes |
---|---|---|---|
Update README.txt | SPH |
| Update with major release highlights. |
Update extras folder | SPH | | Notepad++ syntax coloring file |
Update PDF files in docs folder | SPH/DJC | DJC: SPH: |
|
Gather list of compatibility changes since last release | SPH |
| |
Update Release Notes | SPH | ||
Update screenshots in User Guide | (Feature leads) |
SPH: RQ: DSC: | |
Test User Guide instructions & code | (Feature leads) | RQ: DSC: SPH: |
SPH: only tested features that changed for which I was FDE |
Update Windows installer package | TGG | | |
Update links in GMAT.ini | TGG |
| |
Update link tests in TestComplete | TR |
|
Testing of Release Candidate 1 (Oct. 7-14 )
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 () and "(x)" for the cross ()
Task | Who | Status | Notes |
---|---|---|---|
Update README.txt | JJKP | RC1: RC2-RC5: N/A | Next time: this should probably be "Update Release Notes" to add outstanding bugs, etc. |
Build Windows installer | JJKP (backup: TGG) | RC1: RC2: RC2-2: RC3: RC4: RC5: | Version string: R2015a-rc# Next time: build manager should do this |
Bundle Windows zip | JJKP (backup: TGG) | RC1: RC2: RC2-2: RC3: RC4: RC5: | Version string: R2015a-rc# Next time: build manager should do this |
Run TestComplete smoke tests | TR | RC3: | These are tests on the packaged versions of GMAT: the installer and the zip bundle. |
Run TestComplete system test missions | TR | RC3: | These are tests on the packaged versions of GMAT: the installer and the zip bundle. |
Run script test system | JJKP (backup: TGG) | RC1: RC2: 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 scripts | SPH | 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 tests | TR | RC3: RC4: | (For final RC only) |
Notes
- While this cycle is ongoing is a good time to do wiki updates and cleanup.
Stage Release (Oct 20)
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 () and "(x)" for the cross ()
Task | Who | Status | Notes |
---|---|---|---|
Tag All Repos | DJC | 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* | |
|
Bundle data | DJC* | |
|
Upload source bundle to SourceForge | SPH | |
|
Upload data bundle to SourceForge | SPH | |
|
Upload Windows installer to SourceForge | SPH | | Download, install, and run after uploading. |
Upload zip files to SourceForge | SPH | | Download and run after uploading. |
Post README.rst.txt on SourceForge | SPH | | Update for new release |
Upload docs to documentation site | SPH |
|
SEE NOTES IN SECTION BELOW |
Fixed "latest download" to point to new exe. | SPH | 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 network | SPH | | |
Upload source to Git repo | Upload src Change new branch to be active branch (what is checked out by default) | ||
Make SourceForge repository backup | SPH | 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 (Oct.21)
Use "(/)
" for the checkmark () and "(x)" for the cross ()
Task | Who | Status | Notes |
---|---|---|---|
Make files visible on SourceForge | JJKP | | 07/21: Made visible at time of posting, as "soft" release. |
Send out release announcement | SPH |
| |
Post release announcement on SourceForge | SPH* | | |
Post release announcement on GMAT Blog | JJKP | ||
Mark as released in JIRA | SPH | |
This needs to be assigned to a different person; DJC cannot post to SF
Post-Release
Use "(/)
" for the checkmark ().
Task | Who | Status | Notes |
---|---|---|---|
Party! | (All) | Plan for week of June 19 | |
Conduct postmortem review | SPH | This includes gathering feedback, holding the postmortem meeting, and documenting the results. | |
Submit GSFC Metrics Summary | WCS | The 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 release | SPH | 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 R2016a Lessons Learned document.
Compatibility changes
Creating an RC
- Prerequisites:
- sejda-console
- nsis (nsis must also be on path)
- mingw http://www.mingw.org/
- command line zip
- Create the build
- Log into
gs580w-gmat-t4
as "gsfc580gmatbuild
". The credentials are on the network drive, in theInfrastructure
folder. - Start Task Scheduler.
- [RC1 only] Disable the "GMAT Daily Build" task, so it doesn't run automatically during the RC cycle (this can make things overly confusing).
- Manually run the "GMAT Daily Build" task.
- Log into
- Create the bundles
- 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 aREADME.txt
file there that explains things. - Open a MinGW, MSYS2, or Cygwin shell in this directory.
- 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
andgmat-public
. 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
- 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#"
'. - Copy the four package files to the network:
\\mesa-file\595\GMAT\Builds\windows\VS2013_build_32\R2015a
- To clean everything up afterwards, run "
make clean
".
- On your local system, navigate to
- 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
".
- Log into
gs580w-gmat-t4
as "gsfc580gmattest
". The credentials are on the network drive, in theInfrastructure
folder. - [RC1 only] Start Task Scheduler and disable the "Run Script Test" task. You'll need to run the RC tests manually.
- Uninstall all previous versions of GMAT.
- Install the version being tested.
- Check "Enable MATLAB interface".
- Leave "Associate file types" unchecked.
- Update the test system repo (located at
C:\Users\gsfc580gmattest\Documents\GmatTest
) - In MATLAB (64-bit):
- Run:
>> cd C:\Users\gsfc580gmattest\Documents\GmatTest\bin
- Run (replace
#
with RC number and<config>
with "internal
" or "public
"):>> diary('..\log\R2015a-rc#-<config>.log')
- 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')
- In
C:\Users\testuser\Documents\GmatTest\bin
, copy the appropriate template (autorundef.R2015aInternal.template.m
orautorundef.R2015aPublic.template.m
) to a new name (such asautorundef.R2015aRc1Internal.m
) and fill in the values:RunDef.Build
: "R2015a-rc#-<config>
"RunDef.GmatExe
: path to installedGMAT.exe
RunDef.RegressionBuild
: last build date if testing RC1 (look inGmatTest\output
for latest folder, such as2013-07-31
), otherwise, "R2015a-rc#-<config>
"
- Run:
>>gmattest <name of rundef.m>
(e.g.autorundef.R2015aRc1Internal.m
) - Wait until run completes (usually 8+ hours)
- Run:
>>diary('off')
- Run:
- In a Windows
cmd
window, post results to network usingrobocopy
:>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
- Add a new folder for the release under the gmat\htdocs\docs folder
- Update contents of the new release folder with files from new release
- Update the gmat\htdocs\docs\index.html to include new folder and to point to the new latest folder.