SDP Release Process Overview --- 1. Make changes in dev branch. 2. Create jobs and associate them with changes in the dev branch. We don't need a job for every changes, but we the jobs to cover the essentials of what changed. Folks who want the gory details can look at changelists, but folks looking only at jobs should get a fair, albeit summarized, understand of what's new in this release, and if appropriate, what to be aware of when taking this release. 3. Ensure the dev branch is updated from main, in case there were any hot fixes made directly in main. Check like so:
$ p4 merge -n -b perforce_software-sdp-dev
All revision(s) already integrated.
 
If there is anything to merge, take care of it, and file new jobs as needed. 4. Load the SDP tools environment. Change to the dir in your SDP workspace corresponding to `//guest/perforce_software/sdp/tools`, and source the `env.sh` file there. 5. Run the `rel_notes.sh` script to update the Version and Release Notes files in the dev branch. If the jobs listed aren't complete enough, revert the files Version and Release Notes files, and go back to step 2. 6. This script is interactive and requests the major version, e.g. 2016.1 (proposing as a default whatever the previous value was). It takes no command line arguments. This script is picky. It wants your workspace to be clean, with nothing checked out in the 'dev' and 'main' branches, and that a `p4 status` command reports nothing to reconcile. *WARNING*: If you need to do a partial release (i.e. if you need to hold some changes back in the dev branch), be sure to remove jobs referencing files you do not intend to promote. *WARNING*: If a partial release was done previously and files are now ready to be released, you'll need to add those jobs to the release notes manually. The `rel_notes.sh` script leaves the Version and Release Notes files checked out in a pending changelist for you to review. Submit that change manually when ready. 7. Push the files to main. Change to the 'dev' branch directory in your workspace. Run `mdcu.sh` (Merge Down/Copy Up) script, which takes no arguments and is not interactive. That script creates a pending changelist with the Copy Up main. Massage the generated changelist description if desired. Revert any files that are not ready to be released from the main branch. WARNING: Be sure the list of jobs is correct; if you need to do a partial release, manually revert any files you don't want to be released from the main branch. 8. After running this script, run `package_downloads.sh`. This puts tar and zip files into the downloads folder. 9. Change do the downloads fodler, and do a `p4 reconcile`. Optionally, `p4 delete` any excess tar/zip files from older releases (being sure to remove ones with known critical bugs, if any).