]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - releng/doc/release.md
Updated release engineering instructions for 1.31.0 release.
[simantics/platform.git] / releng / doc / release.md
index b16736e80aeed1e5cef81c33852eed98d0a115ac..3f4d69bfae3222248afa0446d6040239f09286f9 100644 (file)
 
 ----
 
-# Released Plug-in Components and Products  
+# 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.
+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: 
-* Simantics Desktop
-* Simantics System Dynamics Tool - [simantics/sysdyn.git](https://www.simantics.org:8088/r/gitweb?p=simantics/sysdyn.git;a=summary)
+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.
 
 Plug-in components that are part of the release train:
-* Simantics R - [simantics/r.git](https://www.simantics.org:8088/r/gitweb?p=simantics/r.git;a=summary)
+* Simupedia - [members/simupedia.git](https://www.simantics.org:8088/r/gitweb?p=members/simupedia.git;a=summary)
 * FMIL - [simantics/fmil.git](https://www.simantics.org:8088/r/gitweb?p=simantics/fmil.git;a=summary)
 * FMI Studio - [members/fmi.git](https://www.simantics.org:8088/r/gitweb?p=members/fmi.git;a=summary)
-* Simupedia - [Members SVN](https://www.simantics.org/svn/members/simupedia)
+* Interoperability components - [simantics/interop.git](https://www.simantics.org:8088/r/gitweb?p=simantics/interop.git;a=summary)
+* Simantics R binding - [simantics/r.git](https://www.simantics.org:8088/r/gitweb?p=simantics/r.git;a=summary)
+* Matlab SCL binding - [simantics/matlab.git](https://www.simantics.org:8088/r/gitweb?p=simantics/matlab.git;a=summary)
+* Python SCL binding - [simantics/python.git](https://www.simantics.org:8088/r/gitweb?p=simantics/python.git;a=summary)
+* Simantics System Dynamics - [simantics/sysdyn.git](https://www.simantics.org:8088/r/gitweb?p=simantics/sysdyn.git;a=summary)
+* Simantics District modelling components - [simantics/district.git](https://www.simantics.org:8088/r/gitweb?p=simantics/district.git;a=summary)
+
+Products that are part of the release train:
+* Simantics Desktop
+* Simantics System Dynamics Tool \r
+  * This is Simantics Desktop with Simantics System Dynamics Tool features installed
 
-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.  
+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.
 
 ----
 
@@ -71,7 +77,11 @@ With service releases, branch from an existing `release/*` branch instead.
 
 ## Prepare release branch for use
 
-### Prepare .target files
+In release 1.31.0 Simantics started using uses the wonderful tool from Obeo ([https://github.com/mbarbero/fr.obeo.releng.targetplatform](https://github.com/mbarbero/fr.obeo.releng.targetplatform)) to generate `.target` files from `.tpd` files which allow much simpler specification of the target contents and also composition of .tpd files via inclusion.
+
+In the following steps, it is recommended to ensure every `.target` file is up-to-date by regenerating them from `.tpd` files. While doing so, take care to use up-to-date online contents to perform the generation.
+
+### Prepare `.tpd` files
 
 1. Retrieve release branch of the platform repository
 
@@ -80,35 +90,26 @@ With service releases, branch from an existing `release/*` branch instead.
        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.
-   * `simantics.target`
-   * `org.simantics.sdk.build.targetdefinition.target`
+2. Edit all target platform files in `releng/org.simantics.sdk.build.targetdefinition/`, i.e.
+   * `org.simantics.sdk.build.targetdefinition.tpd`
+   * `simantics.tpd`
 
-   At the beginning of simantics.target file, increment `sequenceNumber` by 1 and replace
-   the version numbers in target name and `org.simantics.sdk.feature.group` and
-   `org.simantics.sdk.source.feature.group` with `x.y.z[.w]`:
-   ~~~
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <?pde version="3.8"?>
-   <target name="Simantics x.y.z[.w]" sequenceNumber="11">
-   <unit id="org.simantics.sdk.feature.group" version="x.y.z[.w]"/>
-   <unit id="org.simantics.sdk.source.feature.group" version="x.y.z[.w]"/>
-   ~~~
-
-   Next, replace the following rows in both mentioned files:   
+   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"/>
+   location "http://www.simantics.org/download/master/external-components/maven" {
+   location "http://www.simantics.org/download/master/external-components/manual" {
+   include "http://www.simantics.org/download/master/org.simantics.sdk.build.targetdefinition.tpd"
+   location "http://www.simantics.org/download/master/sdk" {
    ~~~
 
    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"/>
+   location "http://www.simantics.org/download/master/release/x.y.z[.w]/maven" {
+   location "http://www.simantics.org/download/master/release/x.y.z[.w]/manual" {
+   include "http://www.simantics.org/download/release/x.y.z[.w]/org.simantics.sdk.build.targetdefinition.tpd"
+   location "http://www.simantics.org/download/release/x.y.z[.w]/sdk" {
    ~~~
 
 3. Edit version number of `org.simantics.sdk` feature in `features/org.simantics.sdk.feature/feature.xml` to `x.y.z[.w]`.
@@ -134,7 +135,7 @@ With service releases, branch from an existing `release/*` branch instead.
 
         refs #xxxx
 
-   where `#xxxx` is the number of the x.y.z[.w] release engineering issue and push them to remote 
+   where `#xxxx` is the number of the x.y.z[.w] release engineering issue and push them to remote
 
         git push origin release/x.y.z[.w]
 
@@ -144,6 +145,7 @@ With service releases, branch from an existing `release/*` branch instead.
    Commit the changes with the following commit message
 
        Bumped master target and org.simantics.sdk feature versions to x.y.z[.w].
+
        refs #yyyy
 
    where `#yyyy` is the number of the next release's release engineering issue.
@@ -163,6 +165,24 @@ After this, whenever changes are pushed/merged to `release/x.y.z[.w]` branch in
 
 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](https://www.simantics.org/jenkins/job/SDK/job/Simantics%20SDK/) Jenkins job.
 
+### Update `.target` files
+
+Lastly, we want to change the `.target` files to point to the correct P2 repository locations. This happens by opening the previously edited `.tpd` files in Obeo's editor and regenerating the `.target` files by pressing Alt+R.
+
+Push the changed files to remote again with commit message:
+
+    Configured release/x.y.z[.w] branch .target files.
+
+    refs #xxxx
+
+### Test Release Train build
+
+Trigger an execution of the [simantics-release-train](https://www.simantics.org/jenkins/job/simantics-release-train/) Jenkins job with parameters
+* GERRIT_REFNAME: `release/x.y.z[.w]`\r
+* PUBLISH_ARTIFACTS: `true`\r
+
+to ensure that all components of the release train build fine and to publish first versions of P2 repositories of everything online.
+
 ## Review documentation
 
 Documentation to review:
@@ -186,21 +206,21 @@ For each wiki page:
 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    
+    cd platform
     git checkout release/x.y.z[.w]
-    git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
+    git tag vx.y.z[.w] -m "Simantics x.y.z[.w] simultaneous 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 tag vx.y.z[.w] -m "Simantics x.y.z[.w] simultaneous release"
     git push origin --tags
 
 > Note The -m argument must be supplied to create an [annotated tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
 > Only annotated or signed tags can be pushed to Gerrit.
 
-## Backup documentation wiki databases 
+## Backup documentation wiki databases
 
 This step is only necessary for major/minor releases, not for service releases.
 
@@ -211,7 +231,7 @@ 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. 
+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/
@@ -246,8 +266,8 @@ separate Mediawiki installation.
 
 ## Disseminate information about the release
 
-* [Developer Wiki](http://dev.simantics.org): Update roadmap at http://dev.simantics.org/index.php/Roadmap
-* [Redmine](https://www.simantics.org/redmine/): Post news on the developer/user-visible changes here.
+* [Developer Wiki](http://dev.simantics.org): Update roadmap at [http://dev.simantics.org/index.php/Roadmap](http://dev.simantics.org/index.php/Roadmap)
+* [Redmine](https://www.simantics.org/redmine/): Post news on the developer/user-visible changes here
 * [simantics.org](https://www.simantics.org): Post news on the release and a link to the redmine post
 * [Members Wiki](https://www.simantics.org/members/): Update frame plan to reflect the realized dates and link to Redmine news
 * [mailto:simantics-developers@simantics.org](mailto:simantics-developers@simantics.org) Send "newsletter" to `simantics-developers@simantics.org:
@@ -255,7 +275,7 @@ separate Mediawiki installation.
 **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.
@@ -278,11 +298,4 @@ Insert some general thoughts on the release...
 
 # TODO
 
-* Create a parametrized release train pipeline build in Jenkins that creates all artifacts of a simantics release
-  * Desktop, Sysdyn, R, Simupedia, FMIL, FMI Studio
-
-
-* Incorporate tutorial code in the platform repository as a separate folder to allow platform builds to directly ensure that the tutorial code still builds OK
-* Start using https://github.com/mbarbero/fr.obeo.releng.targetplatform to generate `.target` files. `.tpd` files allow specifying version ranges instead of specific versions.
-
+* Incorporate tutorial code in the platform repository as a separate folder to allow platform builds to directly ensure that the tutorial code still builds OK
\ No newline at end of file