This page is to document the release process for the current OpSim code, but going forward to the newly refactored code, the ideas will be the same even if the actual execution will change. The person in charge of going through the checklist and executing its contents is the Release Manager.
Setting up for a Release
- Create a new version for the code on the JIRA board. Use whole numbers for the version number and avoid using git SHAs.
- Create and/or assign tickets to that version.
- Complete all work for the version.
During a the work on a release, the code should occasionally be run through a CI system. This has been nicely captured with the new Jenkins CI system. To register, do the following:
- Find the the Bot: Jenkins Demo room in HipChat and click on the link in the topic.
- Click the log in link on the Jenkins page and authorize your Github account.
- Run a build
To accomplish this last step, the following annotated picture is used.
- Click on the Build Parameters link
- This will make sure the right pane is visible
- Put in the branch(es) that you want to build against
- Specify the product name (i.e. sims_operations)
- Check the SKIP_DEMO button
- The demo is related to the LSST stack and isn't necessary for this
- Click the Build button and way things should go
- Step 5 as necessary to address any issues
Preparing the Release
- Create a branch for the release.
- Update the release notes.
- Update documentation for release.
- Execute a build via the Jenkins CI system ensure everything nominally works.
- See above section if you aren't using the Jenkins system yet.
- Execute a quick OpSim run for testing purposes.
- Merge the release branch back onto master using the --no-ff option.
- Tag the code with version number.
Build the Release
This involves having credentials as the lists user on the lsst-dev.ncsa.illinois.edu server in order to actually build the EUPS package.
- Log into the server as lsstsw.
- Run the following command:
- rebuild -r <stack tag> -r <OpSim tag> sims_operations
- where <stack tag> is a currently used LSST stack release (i.e. w.2015.22) and <OpSim tag> is the git repo tag
- The build will return a build tag bNNNN (I think we're at 4 digits now)
- Then run:
- publish -b <build tag> -t <package tag> sims_operations
- where <build tag> was retrieved in the previous step and <package tag> is an alternate ID for the particular build.
- We're using a package tag of the format opsim_X_Y_Z
- Test to see if you can eups distrib install the new package
- Run a quick OpSim test to ensure things work.
- If super paranoid, run a longer test.
Finishing up the Release
- Update the documentation on the ops2 machine by running the publish.sh script in the doc directory of the source code.
- Make sure to checkout to the tag and run scons to update the correct version number before running publish.sh
- The production machines should all be updated to install the current EUPS package.
- All production machines need a directory in /lsst for subsequent running. It should look something like: /lsst/opsim_X.Y.Z
- Underneath that directory, to other, log and output, need to be created.
- A full 10 year simulation should be run by the Production Run Manager on every major release once the Release Manager has installed the software.
- If a patch release contains a major bug fix, a 10 year simulation should be run in that case too.