Building a Release

These notes document the process for building a planned release of NuPattern.

This process is expected to be executed by a project developer, working with The Outercurve Foundation who provide the signing services for assemblies, and VSIXes and MSIs. The OCF contact for signing is currently Eric Shultz (wwahammy@hotmail.com). The signing process is partially automated, and expected to become more automated as we perform and refine it.

The release process delivers a set of binary assets (VSIXes, MSI, Documents etc.) that are then posted on this project site as a 'Release' containing downloads and information.

Building the Binary Assets

The outcomes of this section are:
  • An authenticode signed Authoring VSIX
  • An authenticode signed HOL VSIX
  • An authenticode signed MSI

Note: all VSIXes contain assemblies which are both strong-name signed and authenticode signed.

Overview

A delivered and signed VSIX or MSI contains a number of assemblies and other VSIXes which are themselves signed. Like a russian doll, a VSIX will be created from nested parts, where each nested part will require signing. This makes the process of signing a VSIX a muti-stage signing process. Requiring several passes.
  • All VSIXes contain at least 1 NuPattern assembly, which must be signed first. But all assemblies from all VSIXes can be signed in one pass. They are strong-named signed and then authenticode signed.
  • The lowest nested VSIXes are then re-compressed with the signed assemblies, and then authenticode signed themselves, in the next pass.
  • The nesting (parent) VSIXes are then re-compressed with the nested VSIXes and their signed assemblies, and then signed themselves, in the next pass.
  • Finally, the MSI is rebuilt with the signed VSIXes, and then authenticode signed.

In addition to signing VSIXes, VSIXes are also recompressed as ZIP files with the highest compression ratio to minimize file size. We use 7-Zip to achieve the maximum (Ultra) winzip compression ratio.

Process Overview

You will need to install 7-Zip in order to complete this process.

This process can be followed (and is partially automated) in the 'Src\Release\' folder.
  1. Clean Source environment
    • Run 'Src\Clean Code.bat'
    • Run 'Src\Make-All.bat'
  2. Copy, Recompress and Extract all assemblies from the built: Runtime, Authoring, Library and HOL VSIXes
    • Run 'Src\Release\Harvest VSIXes.bat'
    • Run 'Src\Release\Extract Assemblies.bat'
  3. Send all assemblies to be signed with assembly signing key at the OCF
    • Copy all assemblies from 'Src\Release\Unsigned\Assemblies\*' to the OCF exchange point (preserving folder structure)
    • Send instruction to OCF to sign all assemblies found in all sub-folders of 'Unsigned\Assemblies' folder, and drop them in the 'Signed\Assemblies' folder using the same folder structure.
    • Receive all signed assemblies from the OCF exchange point 'Signed\Assemblies' folder
    • Copy all assemblies from OCF exchange point folder to 'Src\Release\Signed\Assemblies*' folder
  4. Reconstruct and recompress the Runtime, Library, HOL VSIXes with their signed assemblies for all versions of VS, using 7-Zip.
    • Run 'Rebuild Child VSIXes.bat'
  5. Send the Runtime, Library and HOL VSIXes to be authenticode signed at the OCF
    • Copy the following VSIXes from 'Src\Release\Unsigned\VSIXes\*' to the OCF exchange point (preserving folder structure): NuPatternToolkitBuilderLabs.vsix, NuPatternToolkitLibrary.vsix and NuPatternToolkitManager.vsix
    • Send instruction to OCF to sign all VSIXes found in all sub-folders of 'Unsigned\VSIXes' folder, and drop them in the 'Signed\VSIXes' folder using the same folder structure.
    • Receive all signed VSIXes from the OCF exchange point 'Signed\VSIXes' folder
    • Copy all VSIXes from OCF exchange point folder to 'Src\Release\Signed\VSIXes*' folder
    • 'Unblock' each of the VSIXes when downloaded (Window Explorer properties page).
  6. Reconstruct and recompress the Authoring VSIX with the signed Runtime and Library VSIXes for all versions of VS, using 7-Zip.
    • Run 'Rebuild Parent VSIXes.bat'.
  7. Send the Authoring VSIX to be authenticode signed at the OCF
    • Copy the following VSIXES from 'Src\Release\Unsigned\VSIXes\*' to the OCF exchange point (preserving folder structure): NuPatternToolkitBuilder.vsix
    • Send instruction to OCF to sign all VSIXes found in all sub-folders of 'Unsigned\VSIXes' folder, and drop them in the 'Signed\VSIXes' folder using the same folder structure.
    • Receive all signed VSIXes from the OCF exchange point 'Signed\VSIXes' folder
    • Copy all VSIXes from OCF exchange point folder to 'Src\Release\Signed\VSIXes*' folder
    • 'Unblock' each of the VSIXes when downloaded (Window Explorer properties page).
  8. Copy the Runtime, Authoring, Library, HOL VSIXes from 'Signed' folder to the 'Binaries' folder
    • Run 'Src\Release\Update VSIXes.bat'
  9. Build MSI installer project, and copy back to 'Unsigned' folder.
    • Run the 'Src\Release\Make-Setup.bat'
  10. Send the MSI to be authenticode signed at the OCF
    • Copy the MSI from 'Src\Release\Unsigned\*' to the OCF exchange point (preserving folder structure)
    • Send instruction to OCF to sign the MSI found in all sub-folders of 'Unsigned' folder, and drop them in the 'Signed' folder using the same folder structure.
    • Receive the signed MSI from the OCF exchange point 'Signed' folder
    • Copy the MSI from OCF exchange point folder to 'Src\Release\Signed*' folder
    • 'Unblock' the MSI when downloaded (Window Explorer properties page).

Compiling the Release Notes

The outcomes of this section are:
  • An online version of the Release Notes

Process

  • Open the 'ReleaseNotes.docx' file from the 'Src\Docs' folder in Word.
  • Save As.. PDF

Compiling the Online Guidance

The outcomes of this section are:
  • An online version of the Guidance for runtime and authoring.

Process

For each of the following files: RuntimeGuidance.docx, AuthoringToolkitGuidance.docx in the 'Src\Common\Guidance' folder.
  • Open the document
  • Insert the caret after the first line 'title' in the document, and press ENTER
  • File | Save. You should be promoted to expand sub documents. Answer 'Yes'.
  • Insert the caret at the strat of the first blank line after the 'title' in the document.
  • References | Table Of Contents | Insert Table of Contents
  • Select:
    • Formats: From Template
    • Show Levels: 4
  • Press OK.
  • File | Save As | PDF (in same location)
  • Close the document, DONT SAVE.

Creating a Release Page

The outcomes of this section are:
  • A release page on this CodePlex project site - displayed on this page
  • Updated Wiki Pages

Process

  • Create a new Release on the CodePlex site
  • Use the version number in the title (i.e. NuPattern 1.3.21.0)
  • Ensure the release is made public, and either replaces or adds to the current releases
  • Give clear instructions at the top for what to install (i.e. the MSI Installer)
  • Add the PDF version of the Release Notes as first file
  • Add all VSIXEs to the release
  • Add the MSI to the release, and set as the 'Default'
  • Add a brief explanation of the release, reasons for it, and some technical details.
  • Update the hyperlinks on the wiki: Home Page, Getting Started Page, others that reference the latest version

Updating the VS Gallery

The outcome of this section is:

Process

  • Login to the VS Gallery as (msvspat@live.com)
  • Edit the current page
  • Upload a new version of the Installer.
  • Update the Version number

Backing up the release

The outcome of this section is:
  • A backup and history of deliverables of the release on this page

Process

  • Create a new folder with the title of the release (i.e. 1.3.21.0)
  • Upload the following:
    • MSI installer
    • VSIXes for all version of VS (in a zip file). i.e. 10.0.zip
    • Release Notes.pdf
    • Guidance (runtime and authoring) PDFs

Announcing the Release

The outcomes of this section are:
  • Announcement on Twitter
  • Announcement on the Project Site
  • Announcement on Contributors Blogs

Last edited May 16, 2013 at 11:08 AM by jezzsa, version 18

Comments

No comments yet.