Ravenbrook / Projects / Perforce Defect Tracking Integration / Version 1.0 Product Sources / Procedures

Perforce Defect Tracking Integration Project


Perforce Defect Tracking Integration Release Build Procedure

Gareth Rees, Ravenbrook Limited, 2000-10-17

1. Introduction

This is the procedure for building a release of the Perforce Defect Tracking Integration from the version sources.

The readership of this document is anyone developing the integration.

This document is not confidential.

All pathnames here are relative to "//info.ravenbrook.com/project/p4dti/".

If you're using cygwin to run the p4 commands, remember to

alias p4='p4 -d "`cygpath -w \"$PWD\"`"'

or put this in your .bashrc.

2. Procedure

2.1. Setting up for release

2.1.1. Choose a release name of the form "VERSION.N" (for example, 0.3.0). VERSION is the number of the version you're releasing. N is the first unused release number (starting at zero). Look in the index of releases (release/index.html) for existing release numbers for your version.

2.1.2. Ensure that the "version/VERSION/readme.txt" file an up-to-date description of the release you intend to build and contains the correct release name.

Ensure that the "version/VERSION/release-notes.txt" file has the correct release name and a summary of changes and new features for this release.

The summary of changes and new features should be based on the list of jobs fixed to "closed" between the last release and this one. The version/VERSION/tool/known_issues.py script can be used to generate and format this list of outstanding jobs. Run the command:

python known_issues.py --fixed --version=VERSION --start=CHANGELEVEL1

Here CHANGELEVEL1 is the changelevel at which the previous release was made. See the release index for the value of CHANGELEVEL1.

2.1.3. Ensure that the RPM spec file at "version/VERSION/tool/rpm/p4dti.spec" has an up-to-date description of the software and the correct release number as its "Version" field. Re-use text from the "readme.txt" file if possible.

Make sure to check in the readme.txt, release-notes.txt and p4dti.spec before you continue.

2.1.4. Determine the changelevel at which you're going to make the release. This should be the current changelevel; use p4 counter change to get it. Add that changelevel to the releases table in //info.ravenbrook.com/infosys/cgi/issue.cgi.

2.1.5. Sync the version sources to the changelevel you determined in step 2.1.4. Sync the version sources to a clean area of the disk, to be sure that there are no extraneous files around.

p4 sync version/VERSION/...#none
rm -rf version/VERSION
p4 sync version/VERSION/...@CHANGELEVEL

2.1.6. Branch the readme.txt and release-notes.txt files from the version sources to the "release/RELEASE" directory. Do not submit yet.

p4 integrate version/VERSION/readme.txt release/RELEASE/readme.txt
p4 integrate version/VERSION/release-notes.txt release/RELEASE/release-notes.txt

2.2. Making the teamtrack release

2.2.1. To build teamtrack.dll: Run Microsoft Visual C++ 6.0. Select File → Open Workspace. Select version/VERSION/code/p4dti.dsw. Check that the "teamtrack" and "tsapi" projects are using the "Win32 Release" configurations (right click on the project; select Set As Active Project; click on the Build menu; select Set Active Configuration; select Win32 Release). Make teamtrack the active project (right click on the project; click on the Build menu; select Set As Active Project). Click on the Build menu; select Build teamtrack.dll.

2.2.2. Delete files and directories that shouldn't be included in the product (this is the only way I know of to make sure that WinZip won't include empty directories in the archive):

p4 sync version/VERSION/manual/ig/...#none
p4 sync version/VERSION/manual/mg/...#none
rm -rf version/VERSION/manual/{ig,mg}

2.2.3. Launch WinZip and create a new archive called "p4dti-teamtrack-RELEASE.zip" in the directory "release/RELEASE". Add the files listed below. Be sure _not_ to store full paths in WinZip (an option in the "Add" dialog).

Add the manuals with partial path names, by selecting

then turn on the "Include subfolders" option, then select "Add with wildcards". Make sure *not* to include these files:

2.2.4. Make a self-extracting archive called "p4dti-teamtrack-RELEASE.exe" from "p4dti-teamtrack-0.3.0.zip" (in the same directory), by selcting Actions -> Make .EXE File. Specify the default "unzip to" folder as "C:\Program Files\P4DTI".

2.2.5. Add the self-extracting archive to Perforce. Do not submit yet.

p4 add release/RELEASE/p4dti-teamtrack-RELEASE.exe

2.3. Making the bugzilla release

2.3.1. Making the Unix tarball

Create a tarball containing the replicator Python code and the manuals.

mkdir p4dti-bugzilla-RELEASE
cp version/VERSION/readme.txt p4dti-bugzilla-RELEASE
cp version/VERSION/release-notes.txt p4dti-bugzilla-RELEASE
cp version/VERSION/license.txt p4dti-bugzilla-RELEASE
cp version/VERSION/code/replicator/*.py p4dti-bugzilla-RELEASE
cp -r version/VERSION/manual/ag p4dti-bugzilla-RELEASE
cp -r version/VERSION/manual/ug p4dti-bugzilla-RELEASE
cp -r version/VERSION/tool/rpm/startup-script p4dti-bugzilla-RELEASE
( cd version/VERSION/code/bugzilla && diff -r -u ../../../../import/2000-05-09/bugzilla-2.10/bugzilla-2.10 . ) > p4dti-bugzilla-RELEASE/bugzilla-2.10-patch
tar cf - p4dti-bugzilla-RELEASE | gzip -c > release/RELEASE/p4dti-bugzilla-RELEASE.tar.gz
rm -r p4dti-bugzilla-RELEASE

Add the tarball to Perforce. Do not submit yet.

p4 add release/RELEASE/p4dti-bugzilla-RELEASE.tar.gz

2.3.2. Making the Linux RPM

echo "%_topdir $HOME/rpm" > $HOME/.rpmmacros
mkdir -p $HOME/rpm/{BUILD,SRPMS,RPMS/i386,SOURCES}
cp release/RELEASE/p4dti-bugzilla-RELEASE.tar.gz $HOME/rpm/SOURCES
rpm --define "packager YOUR-EMAIL" -ba version/VERSION/tool/rpm/p4dti.spec
cp $HOME/rpm/RPMS/i386/p4dti-RELEASE-1.i386.rpm release/RELEASE
p4 add release/RELEASE/p4dti-RELEASE-1.i386.rpm

2.4. Submitting the release

2.4.1. Edit the index of releases (release/index.html) and add the release to the table, in a manner consistent with previous releases.

2.4.2. Edit the index of versions (version/index.html) and add the release to the list of releases for VERSION, in a manner consistent with previous releases.

2.4.3. Branch the Administrator's Guide and User's Guide to the release.

p4 integ version/VERSION/manual/ag/... release/RELEASE/ag/...
p4 integ version/VERSION/manual/ug/... release/RELEASE/ug/...

2.4.4. The "p4 opened" command should show something like this:

//info.ravenbrook.com/project/p4dti/release/RELEASE/p4dti-teamtrack-RELEASE.exe#1 - add default change (xbinary)
//info.ravenbrook.com/project/p4dti/release/RELEASE/readme.txt#1 - branch default change (ktext)
//info.ravenbrook.com/project/p4dti/release/RELEASE/release-notes.txt#1 - branch default change (ktext)
//info.ravenbrook.com/project/p4dti/release/index.html#17 - edit default change (text+ko)
//info.ravenbrook.com/project/p4dti/version/index.html#14 - edit default change (text+ko)
//info.ravenbrook.com/project/p4dti/release/RELEASE/ag/index.html#1 - branch default change (ktext)
... other Administrator's Guide files ...
//info.ravenbrook.com/project/p4dti/release/1.0.0/ug/index.html#1 - branch default change (ktext)
... other User's Guide files ...

2.4.5. Submit these changes with the comment "Made release RELEASE."

2.4.6. Inform the project manager by e-mail.

A. References

[RB 2000-10-13] "P4DTI release build and installation" (e-mail message); Richard Brooksby; Ravenbrook Limited; 2000-10-13; <http://info.ravenbrook.com/mail/2000/10/13/14-57-57/0.txt>.
[GDR 2000-10-16] "Re:P4DTI release build and installation" (e-mail message); Gareth Rees; Ravenbrook Limited; 2000-10-16; <URL: http://info.ravenbrook.com/mail/2000/10/16/18-23-12/0.txt>.
[GDR 2000-10-17] "Build report for release 0.3.1" (e-mail message); Gareth Rees; Ravenbrook Limited; 2000-10-17.
[RB 2000-11-17] "Using Perforce labels for releases" (e-mail message); Richard Brooksby; Ravenbrook Limited; 2000-11-17.

B. Document History

2000-10-17 RB Created based on e-mail procedure [RB 2000-10-13].
2000-10-17 GDR Added corrections from [GDR 2000-10-16] and [GDR 2000-10-17].
2000-10-19 RB Added steps for handing the readme.txt. Changed bullets to numbers in the procedure. Corrected the order of the "label" and "sync" steps.
2000-11-17 RB Discontinued use of Perforce labels in favour of changelists. See [RB 2000-11-17].
2000-12-01 RB Updated references to the "SAG" to "AG" since it's now called the Administrator's Guide.
2000-12-05 GDR Reorganized into sections and added Bugzilla section. Updated for version 0.4: use release configuration for teamtrack.dll; don't include debugging or AppleWorks files. Explained how to get the lists of known defects, changes and new features. Listed the files that one would expect to have on submit so you can check that you've done everything.
2000-12-07 GDR Added reference to known_issues.py script.
2000-12-08 GDR Added more detail about Microsoft Visual C++. Added instruction to check in readme.txt before continuing.
2000-12-12 RB Converted from plain text to HTML.
2000-12-13 RB Updated reference to known_issues.py to refer to the tool for the specific version. Fixing "mailto" URLs in history.
2000-12-15 RB Changed install directory for Bugzilla from "p4dti" to "p4dti-bugzilla-RELEASE" to bring into line with Unix convention.
2001-02-13 GDR Include readme.txt in product sources. Don't check in the zip file (people download it needlessly).
2001-02-14 RB Added copying of startup script to tarball so that it can be installed by the Linux RPM. Added RPM creation procedure.
2001-02-15 RB Removed the Manager's Guide and the Integrator's Guide from the normal distribution. The Manager's Guide is empty, and the Integrator's Guide should only come with the integration kit.
2001-02-19 GDR The instructions for bulding the lists of known and fixed issues use the new known_issues.py command line format.
2001-02-21 GDR Added instructions to branch the manuals into release/RELEASE/....
2001-02-22 GDR Added instructions for handling the release-notes.txt file.
2001-02-23 GDR Include p4dti.reg in TeamTrack release.
2001-02-27 GDR Delete IG and MG directories so they don't appear in the zip archive.
2001-03-02 RB Transferred copyright to Perforce under their license. Added steps for copying the license.txt file to the distribution.
2001-03-06 GDR No longer put known issues in the release notes.
2001-03-20 GDR Put the changelevel in the issue CGI script so known issue reports can be made.

This document is copyright © 2001 Perforce Software, Inc. All rights reserved.

Redistribution and use of this document in any form, with or without modification, is permitted provided that redistributions of this document retain the above copyright notice, this condition and the following disclaimer.

This document is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holders and contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this document, even if advised of the possibility of such damage.

$Id: //info.ravenbrook.com/project/p4dti/version/1.0/procedure/release-build/index.html#15 $

Ravenbrook / Projects / Perforce Defect Tracking Integration / Version 1.0 Product Sources / Procedures