Skip to content

Release Checklist

Lorenzo Bruni edited this page Aug 6, 2024 · 29 revisions

Checklist to perform a Release

Step 1. SVN

  • Merge the Branch into the Trunk
  • Right-click the TortoiseSVN >> Check for modifications against the SVN Trunk to list all changes
  • Update the Client version X.Y.Z in the file client\js\app.constant.js:
const C_APP_VERSION = "X.Y.Z";
  • Diff (merge where appropriate) the Server configuration files in the server\PxStat\Web.*.config
  • Diff (merge where appropriate) the Server configuration files in the server\PxStat\appsettings.*.json
  • Update the Server version X.Y.Z in the file server\PxStat\Properties\AssemblyInfo.cs:
[assembly: AssemblyVersion("X.Y.Z")]
[assembly: AssemblyFileVersion("X.Y.Z")]
  • Commit any above change into Trunk
  • Create a Tag against the relevant version
  • Create a Branch against the next relevant version

Step 2. Deployment

N.B. The following procedure must be repeated for every environment, starting from Test. If successful, then proceed with the Live one. N.B. Take a backup of the currently deployed system.

Server Code

  • Enable the maintenance mode by setting the property API_Config.API_MAINTENANCE to true in the appsettings.json. This is highly recommended for the Live environment to freeze the application and avoid any issue during the upgrade of all Tiers (Server, Database, Client).
  • Publish the server compiled code using Visual Studio from the SVN Tag in the relevant environment

Upgrade / Migration

  • Build the upgrade program using Visual Studio from the SVN Tag in the relevant environment
  • Execute the upgrade program and follow instructions on screen

Client Code

  • Delete the source code in the relevant environment
  • Export the client source code from the SVN Tag in the relevant environment

Step 3. Verification

  • Disable the maintenance mode by setting the property API_Config.API_MAINTENANCE to false in the appsettings.json of the published Live environment to unfreeze the application.
  • Check each environment is up and running
  • Check the Application version in the page footer is updated as expected

Step 4. GitHub

  • Delete the content of the client, server, db, upgrade folder in the GitHub repository
  • Export the content of the client, server, db, upgrade folder from SVN Tag in the GitHub repository
  • Right-click TortoiseGit >> Check for modifications against the GitHub repository to list all changes
  • Diff (merge where appropriate) the following Client files:
  • client\index.html (Pay attention to retain the white label Favicons)
  • client\Web.config
  • client\js\env\app.env.js
  • Diff (merge where appropriate) the following Server files:
  • server\Web.config
  • server\Web.Test.config
  • server\Web.Live.config
  • server\appsettings.json
  • server\appsettings.Test.json
  • server\appsettings.Live.json
  • server\log4net.json
  • server\log4net.Test.json
  • server\log4net.Live.json
  • N.B. Double-check the above files to ensure that all sensitive information have been stripped/anonymised (i.e. usernames, passwords, IP addresses, etc...)
  • Diff (merge where appropriate) the following UnitTest files:
  • server\PxStatCore.Test\appsettings.json
  • N.B. Double-check the above appsettings.json to ensure that all sensitive information have been stripped/anonymised (i.e. usernames, passwords, IP addresses, etc...)
  • Add / Delete any relevant file where appropriate across the client, server, db folder
  • Commit the GitHub changes and list the Issues into the commit message
  • Push the GitHub changes
  • N.B. This operation is irreversible, DO NOT push unless 100% sure of having stripped/anonymised all sensitive information.
  • Create a new Release and list all the Issues with the label tested against the relevant Milestone.
  • Group the Issues by their type for better visibility: Enhancement, Bug, Security Vulnerability if any are present.
  • Add the label released to all the above Issues and mark them as closed.
  • Close the relevant Milestone and create the next one.
Clone this wiki locally