This document describes the process used to release the Server Deployment Package (SDP). This is intended for staff developing the SDP.
A dedicated SDP workspace should be used for releasing the SDP, separate from any you might use for SDP development. This dedicated release workspace should not contain any cruft files such as editor temp files. The release process mechanisms prevents known-cruft files from being added such as *~ files and .DS_Store files on Mac. Using a clean dedicated release workspace guarantees no local excess files can sneak into the packaging process.
Develop and test changes in dev branch. This will occur over time.
Verify that the SDP regression test suite is successful.
If not already done during development, create jobs and associate them with changelists in the
dev branch, e.g. using
p4 fix -c <CL> SDP-<NNN>. We don't need a job for every change. Create 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 good, albeit summarized, understanding of what's new in this release, and if appropriate, what to be aware of when taking this release. The first line of the job description will be incorporated into the release notes, so make the first line a good headline for the job.
Load the latest SDP tools shell environment.
Change to the dir in your SDP workspace corresponding to
//guest/perforce_software/sdp/tools, and do
p4 -s sync followed by
source ./env.sh in that directory.
dev branch is updated from main.
This ensures any hot fixes that my have been made directly in
main branch are considered for incorporation in the formal release.
$ p4 merge -n -b perforce_software-sdp-dev
All revision(s) already integrated.
If there is anything to merge, take care of it in your regular SDP development workspace, not the release workspace. If needed, file new jobs and associate them with changes. Upon completion of any needed merge work.
Ensure generated documentation is current.
gen_script_man_pages.sh -submit and observe the output. It may or may not create a new changelist in
//guest/perforce_software/sdp/dev/doc/gen/..., depending on whether the underlying scripts have changed since they were last generated.
rel_notes.sh script to update the Version and Release Notes files in the dev branch. (NOTE: If you are runnign this on Mac OSX, do a
brew install bash first to get a modern version of bash, v4.x+, and then run
bash rel_notes.sh.) If the jobs listed in the generated release notes aren't complete enough, revert the
doc/ReleaseNotes... files, update the job descriptions, and try again.
If this is a new major release, manually update the section, "What's New in <this version>". Summarize what to be aware of when taking this release, summarize what's in the release, and document details to be aware of when upgrading to this release.
This script is interactive and prompts for the major version, e.g. 2020.1 (proposing as a default whatever the previous value was). It takes no command line arguments. It also prompts for the Release Type, e.g. GA or Patch.
rel_notes.sh wants your workspace to be clean, with the latest files sync'd, nothing checked out in the
main branches, and that a
p4 status command reporting 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. Note that partial releases are discouraged.
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. Doing a partial release will confuse the mechanism used in
rel_notes.sh to determine what jobs were fixed since the last release, as it does a
p4 fixes command in the dev branch looking for fixes since the last release changelist number in the Version file. Even a partial release updates the changelist number, and thus will require manual intervention to get the list of jobs correct.
rel_notes.sh script leaves the Version and Release Notes files checked out in a pending changelist for you to review. It also provides a list of commands to execute to complete the submit of the release notes. Submit that change manually when ready, e.g. after adding the "What's New in <this version>" content. Also, follow the guidance at the end of the output in the script about running the
make clean all and
p4 rec commands as directed in the output of the
rel_notes.sh script. That tail end of that output should look something like this:
Executing: p4 edit -c 27821 //guest/perforce_software/sdp/dev/doc/ReleaseNotes.html //guest/perforce_software/sdp/dev/doc/ReleaseNotes.pdf
//guest/perforce_software/sdp/dev/doc/ReleaseNotes.html#24 - opened for edit
//guest/perforce_software/sdp/dev/doc/ReleaseNotes.pdf#25 - opened for edit
Massage the release notes and changelist description as needed.
make clean all
p4 rec -c 27821
p4 -s submit -c 27821
Follow those commands as instructed. These steps will ensure generated documentation is current with the latest *.adoc files.
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 pending changelist description if desired.
WARNING FOR PARTIAL RELEASES: If this is to be a partial release, revert any files that are not ready to be released from the main branch. Also be sure the reverted files correlate to any jobs removed for a partial release.
Next, submit the generated pending changelist manually.
package_downloads.sh. This puts tar and zip files into the downloads folder. Submit the generated changelist manually.
|#10||27842||tom_tyler||Minor updates to improve clarity of SDP release process overview doc.|
|#9||27525||tom_tyler||Tweaked notes to account for running on Mac, etc.|
|#8||27465||tom_tyler||Updated release notes.|
|#7||27461||tom_tyler||Refined AsciiDoc generated doc update part of release process.|
|#6||27323||tom_tyler||Tweaked release process doc.|
|#5||27314||tom_tyler||Refined release process overview notes.|
Updated SDP release process doc, adding info on how to ensure
generated script docs are incorporated in AsciiDoc files.
Adjusted generated release notes file from .txt to .adoc format.
Updated rel_notes.sh to add bulleted list items with links to
each fixed job.
Updated old release notes content to use new format (using
disposable link conversion scripts).
|#3||24397||tom_tyler||Tweaked SDP release process overview notes.|
|#2||21524||tom_tyler||Updated release process overview.|
Added release process overview script.
Overhauled release notes helper script.
Fixed bug that listed a job in the release notes for the current
release that was associated with the last changelist of the prior
Updated more of the manual steps in the SDP release process.