1 # Definition of Done for Simantics Platform Releases
\r
3 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
4 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
5 3. [Roadmap](http://dev.simantics.org/index.php/Roadmap) is up-to-date.
\r
6 4. [Tutorials](http://dev.simantics.org/index.php/Tutorials) are up-to-date and coherent with the platform.
\r
7 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
9 # Simantics Platform Release Process
\r
11 * Create `release/x.y.z[.w]` release stabilisation branch
\r
12 * Repeat until stable:
\r
13 * Develop, test and document components and test products
\r
14 * Tag the release in repository
\r
16 * [https://www.simantics.org/wiki](https://www.simantics.org/wiki) ⇒ [http://www.simantics.org/<version>/wiki](http://www.simantics.org/<version>/wiki)
\r
17 * Build and publish SDK package with and without sources
\r
18 * Build Simantics open source products and plug-in components which are a part of the release train
\r
23 * Update websites to reflect the new release
\r
24 * [dev.simantics.org](http://dev.simantics.org)
\r
25 * [www.simantics.org/end_user_wiki/](https://www.simantics.org/end_user_wiki/)
\r
26 * [www.simantics.org/members/](https://www.simantics.org/members/)
\r
27 * [www.simantics.org](https://www.simantics.org)
\r
29 In the following sections each task is described step by step.
\r
31 # Simantics Platform Release - Step by Step
\r
33 ## Create release branch from selected commit
\r
35 When release stabilisation starts, branch `simantics/platform` and `simantics/third-party` repositories:
\r
37 git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
39 git branch release/x.y.z[.w] <commit>
\r
40 git push origin release/x.y.z[.w]
\r
42 git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
\r
44 git branch release/x.y.z[.w] <commit>
\r
45 git push origin release/x.y.z[.w]
\r
47 When creating major/minor releases `<commit>` is usually a commit in the `master` branch.
\r
48 With service releases, branch from an existing `release/*` branch instead.
\r
50 ## Prepare release branch for use
\r
52 ### Prepare .target files
\r
54 1. Retrieve release branch of the platform repository
\r
56 git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
58 git branch release/x.y.z[.w] remotes/origin/release/x.y.z[.w]
\r
59 git checkout release/x.y.z[.w]
\r
61 2. Edit all target platform files in `releng/org.simantics.sdk.build.targetdefinition/`, i.e.
\r
62 * `simantics.target`
\r
63 * `org.simantics.sdk.build.targetdefinition.target`
\r
64 * `org.simantics.sdk.build.targetdefinition-semantum.target`
\r
66 At the beginning of each .target file, increment `sequenceNumber` by 1
\r
68 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
\r
69 <?pde version="3.8"?>
\r
70 <target name="Simantics x.y.z[.w]" sequenceNumber="11">
\r
73 Next, replace the following rows in those files:
\r
76 <repository location="http://www.simantics.org/download/master/sdk"/>
\r
77 <repository location="http://www.simantics.org/download/master/external-components/maven"/>
\r
78 <repository location="http://www.simantics.org/download/master/external-components/manual"/>
\r
84 <repository location="http://www.simantics.org/download/release/x.y.z[.w]/sdk"/>
\r
85 <repository location="http://www.simantics.org/download/release/x.y.z[.w]/external-components/maven"/>
\r
86 <repository location="http://www.simantics.org/download/release/x.y.z[.w]/external-components/manual"/>
\r
89 ### Initialize release branch distribution web site
\r
91 * Run [SDK/Deploy External Components to Web](https://www.simantics.org/jenkins/job/SDK/job/Deploy%20External%20Components%20to%20Web/) build with parameters:
\r
92 * **GERRIT_REFNAME:** `release/x.y.z[.w]`
\r
93 * **PUBLISH_ARTIFACTS:** `true`
\r
94 * Run the [SDK/Simantics SDK](https://www.simantics.org/jenkins/job/SDK/job/Simantics%20SDK/) build with parameters:
\r
95 * **GERRIT_REFNAME:** `release/x.y.z[.w]`
\r
96 * **PUBLISH_ARTIFACTS:** `true`
\r
98 ## Review documentation
\r
100 Documentation to review:
\r
101 * [Developer wiki](http://dev.simantics.org/)
\r
102 * [End-user wiki](http://www.simantics.org/end_user_wiki)
\r
103 * [Member wiki](http://www.simantics.org/members)
\r
105 For each wiki page:
\r
106 * Read through and get authors to fix found problems, such as TODOs or invalid information.
\r
108 ## Review tutorials
\r
110 * Ensure tutorial wiki documentation at http://dev.simantics.org/index.php/Tutorials is up-to-date with the released platform
\r
111 * Ensure tutorial projects and product build properly
\r
114 - Build with Buckminster, com.acme.movie.product.site.feature
\r
116 ## Tag release/* branches
\r
118 When the release branches are ready for the release, tag them with the tag `vx.y.z[.w]`:
\r
120 git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
122 git checkout release/x.y.z[.w]
\r
123 git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
\r
124 git push origin --tags
\r
126 git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
\r
128 git checkout release/x.y.z[.w]
\r
129 git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
\r
130 git push origin --tags
\r
132 > Note The -m argument must be supplied to create an [annotated tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
\r
133 > Only annotated or signed tags can be pushed to Gerrit.
\r
135 ## Dump documentation wikis
\r
137 Dump documentation wiki using [dump-wikis.sh](./dump-wikis.sh) script.
\r
139 The wiki documentation is mainly in MediaWiki installations. The only
\r
140 sane way to tag the documentation is to back up the mysql database
\r
143 ## Compile change log entry
\r
145 * 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
146 * 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
147 * Open the new link in another browser/tab to start editing the new wiki page
\r
148 * Edit the previous release's page and copy its wiki source contents over to the new release's page.
\r
149 * Fix the content to match the new release:
\r
150 * Remove the issue content of the previous release
\r
151 * Fix release number, release date, release branch link and the link to all issues closed for the release
\r
152 * 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
153 * Add filter to query: **Release Notes: Any** to only show issues that have some content in their Release Notes field
\r
154 * Export closed issue list as CSV with selected columns only. Open the resulting CSV file in Excel.
\r
155 * Use **Data -> Text to Columns** with tab column separation to columnize the result
\r
156 * Format the list as a table so that there is only one issue / row
\r
157 * Remove all other columns besides: Issue #, Tracker, Release Notes
\r
158 * Format the data into a Textile table:
\r
159 * Copy to table contents as text into [PSPad](http://www.pspad.com/)
\r
160 * Replace (CTRL+H) tabs (`\t`) with `|` with `Regular Expressions` selection checked
\r
161 * Use **Insert Text Into Lines..** (ALT-I) to fix line beginnings and ends:
\r
163 * At Lines Begin: `|#`
\r
164 * At Lines End: `|`
\r
165 * Copy the resulting textile table over to the change log page
\r
166 * Highlight major issues in the list by changing the text background color of the **Type** column:
\r
167 * `%{background: lightsalmon}Major Bug%`
\r
168 * `%{background: lightgreen}Major Feature%`
\r
169 * `%{background: lightgreen}Major Enhancement%`
\r
171 ## Disseminate information about the release
\r
173 * [Redmine](https://www.simantics.org/redmine/): Post news on the developer/user-visible changes here.
\r
174 * [simantics.org](https://www.simantics.org): Post news on the release and a link to the redmine post
\r
175 * [dev wiki](http://dev.simantics.org): Update roadmap at http://dev.simantics.org/index.php/Roadmap
\r
176 * [simantics-developers@simantics.org](mailto:simantics-developers@simantics.org) Send mail to simantics-developers:
\r
182 Simantics release x.y.z[.w] has been released. Head over to
\r
183 https://www.simantics.org/redmine/news/<news number>
\r
184 for the release news.
\r
187 Simantics Release Engineering Team
\r
190 **News entry template:**
\r
192 On <date> Simantics x.y.z[.w] was tagged in SVN. Please find change log at:
\r
193 * [[simantics-platform:Simantics_xyzw|Simantics x.y.z.w]]
\r
195 Insert some general thoughts on the release...
\r
202 * 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
203 * Create a parametrized release train pipeline build in Jenkins that creates all artifacts of a simantics release in one go
\r
204 * 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