]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - releng/doc/release.md
Initial draft of Simantics release engineering instructions
[simantics/platform.git] / releng / doc / release.md
diff --git a/releng/doc/release.md b/releng/doc/release.md
new file mode 100644 (file)
index 0000000..a9a681b
--- /dev/null
@@ -0,0 +1,189 @@
+# Definition of Done for Simantics Platform Releases\r
+\r
+1. The `simantics/platform` and `simantics/third-party` Git repositories have a branch `release/x.y.z[.w]` and tag `x.y.z[.w]`.\r
+2. [A change log entry](https://www.simantics.org/redmine/projects/simantics-platform/wiki/ChangeLog) 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.\r
+3. [Roadmap](http://dev.simantics.org/index.php/Roadmap) is up-to-date.\r
+4. [Tutorials](http://dev.simantics.org/index.php/Tutorials) are up-to-date and coherent with the platform.\r
+5. For all new major/minor releases, Wiki documentation is backed up (cloned). This is not necessary for service releases of old release branches.\r
+\r
+# Simantics Platform Release Process\r
+\r
+* Create `release/x.y.z[.w]` release stabilisation branch\r
+* Repeat until stable:\r
+  * Develop, test and document components and test products\r
+* Tag the release in repository\r
+* Tag documentation\r
+  * [https://www.simantics.org/wiki](https://www.simantics.org/wiki) &rArr; [http://www.simantics.org/&lt;version&gt;/wiki](http://www.simantics.org/<version>/wiki)\r
+* Build and publish SDK package with and without sources\r
+* Build Simantics open source products and plug-in components which are a part of the release train\r
+  * Simantics Sysdyn\r
+  * Simantics R\r
+  * Simupedia\r
+  * FMI Studio\r
+* Update websites to reflect the new release\r
+  * [dev.simantics.org](http://dev.simantics.org)\r
+  * [www.simantics.org/end_user_wiki/](https://www.simantics.org/end_user_wiki/)\r
+  * [www.simantics.org/members/](https://www.simantics.org/members/)\r
+  * [www.simantics.org](https://www.simantics.org)\r
+\r
+In the following sections each task is described step by step.\r
+\r
+# Simantics Platform Release - Step by Step\r
+\r
+## Create release branch from selected commit\r
+\r
+When release stabilisation starts, branch `simantics/platform` and `simantics/third-party` repositories:\r
+\r
+    git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git\r
+    cd platform\r
+    git branch release/x.y.z[.w] <commit>\r
+    git push origin release/x.y.z[.w]\r
+\r
+    git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git\r
+    cd third-party\r
+    git branch release/x.y.z[.w] <commit>\r
+    git push origin release/x.y.z[.w]\r
+\r
+When creating major/minor releases `<commit>` is usually a commit in the `master` branch.\r
+With service releases, branch from an existing `release/*` branch instead.\r
+\r
+## Prepare release branch for use\r
+\r
+### Prepare .target files\r
+\r
+1. Retrieve release branch of the platform repository\r
+\r
+       git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git\r
+       cd platform\r
+       git branch release/x.y.z[.w] remotes/origin/release/x.y.z[.w]\r
+       git checkout release/x.y.z[.w]\r
+\r
+2. Edit the beginning of the file `releng/org.simantics.sdk.build.targetdefinition/simantics.target`\r
+   ~~~\r
+   <?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+   <?pde version="3.8"?>\r
+   <target name="Simantics 1.25.0" sequenceNumber="10">\r
+   <locations>\r
+   <location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">\r
+   <unit id="org.simantics.sdk.feature.group" version="1.25.0"/>\r
+   <repository location="http://www.simantics.org/download/master/sdk"/>\r
+   </location>\r
+   ~~~\r
+\r
+   * Change `<repository location=` value to `http://www.simantics.org/download/release/x.y.z[.w]/sdk`\r
+   * Increment `sequenceNumber` by 1\r
+\r
+### Initialize release branch distribution web site\r
+\r
+* Run the [SDK/Simantics SDK](https://www.simantics.org/jenkins/job/SDK/job/Simantics SDK) build with parameters:\r
+  * `REFSPEC: refs/heads/release/x.y.z[.w]`\r
+  * `PUBLISHED_BRANCH_NAME: release/x.y.z[.w]`\r
+\r
+## Review documentation\r
+\r
+Documentation to review:\r
+* [Developer wiki](http://dev.simantics.org/)\r
+* [End-user wiki](http://www.simantics.org/end_user_wiki)\r
+* [Member wiki](http://www.simantics.org/members)\r
+\r
+For each wiki page:\r
+* Read through and get authors to fix found problems, such as TODOs or invalid information.\r
+\r
+## Review tutorials\r
+\r
+* Ensure tutorial wiki documentation at http://dev.simantics.org/index.php/Tutorials is up-to-date with the released platform\r
+* Ensure tutorial projects and product build properly\r
+\r
+* com.acme.movie\r
+  - Build with Buckminster, com.acme.movie.product.site.feature\r
+\r
+## Tag release/* branches\r
+\r
+When the release branches are ready for the release, tag them with the tag `vx.y.z[.w]`:\r
+\r
+    git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git\r
+    cd platform    \r
+    git checkout release/x.y.z[.w]\r
+    git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"\r
+    git push origin --tags\r
+\r
+    git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git\r
+    cd third-party\r
+    git checkout release/x.y.z[.w]\r
+    git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"\r
+    git push origin --tags\r
+\r
+> Note The -m argument must be supplied to create an [annotated tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging).\r
+> Only annotated or signed tags can be pushed to Gerrit.\r
+\r
+## Tag documentation wikis\r
+\r
+Tag documentation wiki using [tag.sh](./tag.sh) script.\r
+\r
+The wiki documentation is mainly in MediaWiki installations. The only sane way to tag the documentation is to clone it:\r
+* Copy the wiki installation from wiki to ${release_version}/wiki\r
+* Copy the trunk wiki MySQL database into a new version\r
+* Reconfigure the tagged wiki (LocalSettings.php) to use the copied database and no longer allow any edits\r
+\r
+## Compile change log entry\r
+\r
+* Edit the [main page](https://www.simantics.org/redmine/projects/simantics-platform/wiki/ChangeLog) and add a a link for release x.y.z[.w].\r
+* Open the change log page of the previous release, e.g. [1.25.0](https://www.simantics.org/redmine/projects/simantics-platform/wiki/Simantics_1250)\r
+* Open the new link in another browser/tab to start editing the new wiki page\r
+* Edit the previous release's page and copy its wiki source contents over to the new release's page.\r
+* Fix the content to match the new release:\r
+  * Remove the issue content of the previous release\r
+  * Fix release number, release date, release branch link and the link to all issues closed for the release\r
+    * Save new public issue query that lists all issues closed for the release by [starting from the previous release's query](https://www.simantics.org/redmine/projects/simantics-platform/issues?query_id=122)\r
+  * Add filter to query: **Release Notes: Any** to only show issues that have some content in their Release Notes field\r
+  * Export closed issue list as CSV with selected columns only. Open the resulting CSV file in Excel.\r
+  * Use **Data -> Text to Columns** with tab column separation to columnize the result\r
+  * Format the list as a table so that there is only one issue / row\r
+  * Remove all other columns besides: Issue #, Tracker, Release Notes\r
+  * Format the data into a Textile table:\r
+    * Copy to table contents as text into [PSPad](http://www.pspad.com/)\r
+    * Replace (CTRL+H) tabs (`\t`) with `|` with `Regular Expressions` selection checked\r
+    * Use **Insert Text Into Lines..** (ALT-I) to fix line beginnings and ends:\r
+      * Text:\r
+        * At Lines Begin: `|#`\r
+        * At Lines End: `|`\r
+  * Copy the resulting textile table over to the change log page\r
+* Highlight major issues in the list by changing the text background color of the **Type** column:\r
+  * `%{background: lightsalmon}Major Bug%`\r
+  * `%{background: lightgreen}Major Feature%`\r
+  * `%{background: lightgreen}Major Enhancement%`\r
+\r
+## Disseminate information about the release\r
+\r
+* [Redmine](https://www.simantics.org/redmine/): Post news on the developer/user-visible changes here.\r
+* [simantics.org](https://www.simantics.org): Post news on the release and a link to the redmine post\r
+* [dev wiki](http://dev.simantics.org): Update roadmap at http://dev.simantics.org/index.php/Roadmap\r
+* [simantics-developers@simantics.org](mailto:simantics-developers@simantics.org) Send mail to simantics-developers:\r
+\r
+**Mail template:**\r
+~~~\r
+Hello everyone,\r
+   \r
+Simantics release x.y.z[.w] has been released. Head over to\r
+https://www.simantics.org/redmine/news/<news number>\r
+for the release news.\r
+\r
+Best regards,\r
+Simantics Release Engineering Team\r
+~~~\r
+\r
+**News entry template:**\r
+~~~\r
+On <date> Simantics x.y.z[.w] was tagged in SVN. Please find change log at:\r
+* [[simantics-platform:Simantics_xyzw|Simantics x.y.z.w]]\r
+\r
+Insert some general thoughts on the release...\r
+~~~\r
+\r
+----\r
+\r
+# TODO\r
+\r
+* 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\r
+* Create a parametrized release train pipeline build in Jenkins that creates all artifacts of a simantics release in one go\r
+* Start using https://github.com/mbarbero/fr.obeo.releng.targetplatform to generate `.target` files. `.tpd` files allow specifying version ranges instead of specific versions.\r