Definition of Done for Simantics Platform Releases

  1. The simantics/platform and simantics/third-party Git repositories have a branch release/x.y.z[.w] and tag x.y.z[.w].
  2. A change log entry is compiled from the issues in this release and made available to the general public separately for the platform and for the open products included in the release train.
  3. Roadmap is up-to-date.
  4. Tutorials are up-to-date and coherent with the platform.
  5. For all new major/minor releases, Wiki documentation is backed up (cloned).

Simantics Platform Release Process


Released Plug-in Components and Products

There are both plug-in components and products that are part of the "Simantics release train" that shall be released simultaneously to a major or minor Simantics release.

Plug-in components are installable features that are deployed online as P2 repositories for general availability. Products are deployed as ZIP files and made available online in designated locations on simantics.org.

Products that are part of the release train:

Plug-in components that are part of the release train:

For simplicity, each of these components are versioned accoring to platform versioning, i.e. for Platform SDK 1.26.0 there will be Simantics Desktop 1.26.0, Sysdyn 1.26.0, and so on.


Release Schedule


Simantics Platform Release - Step by Step

Create release branch from selected commit

When release stabilisation starts, branch simantics/platform and simantics/third-party repositories:

git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
cd platform
git branch release/x.y.z[.w] <commit>
git push origin release/x.y.z[.w]

git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
cd third-party
git branch release/x.y.z[.w] <commit>
git push origin release/x.y.z[.w]

When creating major/minor releases <commit> is usually a commit in the master branch. With service releases, branch from an existing release/* branch instead.

Prepare release branch for use

Prepare .target files

  1. Retrieve release branch of the platform repository

    git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
    cd platform
    git branch release/x.y.z[.w] remotes/origin/release/x.y.z[.w]
    git checkout release/x.y.z[.w]
    
  2. Edit all target platform files in releng/org.simantics.sdk.build.targetdefinition/, i.e.

    At the beginning of simantics.target file, increment sequenceNumber by 1

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?pde version="3.8"?>
    <target name="Simantics x.y.z[.w]" sequenceNumber="11">
    

    Next, replace the following rows in both mentioned files:

    <repository location="http://www.simantics.org/download/master/sdk"/>
    <repository location="http://www.simantics.org/download/master/external-components/maven"/>
    <repository location="http://www.simantics.org/download/master/external-components/manual"/>
    

    with

    <repository location="http://www.simantics.org/download/release/x.y.z[.w]/sdk"/>
    <repository location="http://www.simantics.org/download/release/x.y.z[.w]/external-components/maven"/>
    <repository location="http://www.simantics.org/download/release/x.y.z[.w]/external-components/manual"/>
    

Initialize release branch distribution web site

Running these two builds will ensure that both the external components required to build the SDK and the Simantics SDK for the new release branch are published online at http://www.simantics.org/download/release/x.y.z[.w]/.

After this, whenever changes are pushed/merged to release/x.y.z[.w] branch in Gerrit, new SDK/Simantics SDK builds are triggered automatically and they will publish the results at the same location online.

This means that one does not have to do any tricks after this to build and publish the SDK as a P2 repository online. It is an automated process that is performed by the SDK/Simantics SDK Jenkins job.

Review documentation

Documentation to review:

For each wiki page:

Review tutorials

Tag release/* branches

When the release branches are ready for the release, tag them with the tag vx.y.z[.w]:

git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
cd platform    
git checkout release/x.y.z[.w]
git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
git push origin --tags

git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
cd third-party
git checkout release/x.y.z[.w]
git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
git push origin --tags

Note The -m argument must be supplied to create an annotated tag. Only annotated or signed tags can be pushed to Gerrit.

Backup documentation wiki databases

This step is only necessary for major/minor releases, not for service releases.

The wiki databases to be backed up are:

These are MediaWiki installations. The only sane way to "tag" the documentation is to back up the mysql database backing the wiki. Should the wiki be required at a later time for some reason, we'll put the documentation up then in a separate Mediawiki installation.

  1. Dump documentation wiki databases using [dump-wikis.sh](./dump-wikis.sh) script.
  2. Put the generated backup x.y.z.tar.gz at /var/backup/simantics-releases/x.y.z/wiki/

Compile change log entry

Disseminate information about the release

Newsletter template:

Hello everyone,
   
Simantics release x.y.z[.w] has been released. Head over to
https://www.simantics.org/redmine/news/<news number>
for the release news.

Best regards,
Simantics Release Engineering Team

Redmine news template:

Title: Simantics x.y.z[.w] released

Simantics x.y.z[.w] was released on <date>.
Please find change log at: [[simantics-platform:Simantics_xyzw|Simantics x.y.z[.w]]]

Insert some general thoughts on the release...

TODO