4 <title>MarkdownPad Document</title>
\r
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
\r
6 <style type="text/css">
\r
7 /* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */
\r
8 /* Author: Nicolas Hery - http://nicolashery.com */
\r
9 /* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */
\r
10 /* Source: https://github.com/nicolahery/markdownpad-github */
\r
13 =============================================================================*/
\r
15 html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
\r
22 =============================================================================*/
\r
25 font-family: Helvetica, arial, freesans, clean, sans-serif;
\r
29 background-color: #fff;
\r
35 body>*:first-child {
\r
36 margin-top: 0 !important;
\r
40 margin-bottom: 0 !important;
\r
44 =============================================================================*/
\r
46 p, blockquote, ul, ol, dl, table, pre {
\r
51 =============================================================================*/
\r
53 h1, h2, h3, h4, h5, h6 {
\r
54 margin: 20px 0 10px;
\r
57 -webkit-font-smoothing: antialiased;
\r
60 h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
\r
71 border-bottom: 1px solid #ccc;
\r
92 body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
\r
97 a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
\r
102 h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
\r
107 =============================================================================*/
\r
111 text-decoration: none;
\r
115 text-decoration: underline;
\r
119 =============================================================================*/
\r
122 padding-left: 30px;
\r
125 ul li > :first-child,
\r
126 ol li > :first-child,
\r
127 ul li ul:first-of-type,
\r
128 ol li ol:first-of-type,
\r
129 ul li ol:first-of-type,
\r
130 ol li ul:first-of-type {
\r
134 ul ul, ul ol, ol ol, ol ul {
\r
145 font-style: italic;
\r
147 margin: 15px 0 5px;
\r
150 dl dt:first-child {
\r
154 dl dt>:first-child {
\r
158 dl dt>:last-child {
\r
159 margin-bottom: 0px;
\r
167 dl dd>:first-child {
\r
171 dl dd>:last-child {
\r
172 margin-bottom: 0px;
\r
176 =============================================================================*/
\r
180 font-family: Consolas, "Liberation Mono", Courier, monospace;
\r
186 white-space: nowrap;
\r
187 border: 1px solid #eaeaea;
\r
188 background-color: #f8f8f8;
\r
189 border-radius: 3px;
\r
197 background: transparent;
\r
201 background-color: #f8f8f8;
\r
202 border: 1px solid #ccc;
\r
207 border-radius: 3px;
\r
211 background-color: transparent;
\r
216 -moz-border-bottom-colors: none;
\r
217 -moz-border-left-colors: none;
\r
218 -moz-border-right-colors: none;
\r
219 -moz-border-top-colors: none;
\r
220 background-color: #DDDDDD;
\r
221 background-image: linear-gradient(#F1F1F1, #DDDDDD);
\r
222 background-repeat: repeat-x;
\r
223 border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
\r
224 border-image: none;
\r
225 border-radius: 2px 2px 2px 2px;
\r
226 border-style: solid;
\r
228 font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
\r
234 =============================================================================*/
\r
237 border-left: 4px solid #DDD;
\r
242 blockquote>:first-child {
\r
246 blockquote>:last-child {
\r
247 margin-bottom: 0px;
\r
250 /* HORIZONTAL RULES
\r
251 =============================================================================*/
\r
259 background: transparent;
\r
260 border-bottom: 4px solid #ddd;
\r
265 =============================================================================*/
\r
271 table th, table td {
\r
272 border: 1px solid #ccc;
\r
277 border-top: 1px solid #ccc;
\r
278 background-color: #fff;
\r
281 table tr:nth-child(2n) {
\r
282 background-color: #f8f8f8;
\r
286 =============================================================================*/
\r
294 <h1>Definition of Done for Simantics Platform Releases</h1>
\r
296 <li>The <code>simantics/platform</code> and <code>simantics/third-party</code> Git repositories have a branch <code>release/x.y.z[.w]</code> and tag <code>x.y.z[.w]</code>.</li>
\r
297 <li><a href="https://www.simantics.org/redmine/projects/simantics-platform/wiki/ChangeLog">A change log entry</a> 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.</li>
\r
298 <li><a href="http://dev.simantics.org/index.php/Roadmap">Roadmap</a> is up-to-date.</li>
\r
299 <li><a href="http://dev.simantics.org/index.php/Tutorials">Tutorials</a> are up-to-date and coherent with the platform.</li>
\r
300 <li>For all new major/minor releases, Wiki documentation is backed up (cloned). This is not necessary for service releases of old release branches.</li>
\r
302 <h1>Simantics Platform Release Process</h1>
\r
304 <li>Create <code>release/x.y.z[.w]</code> release stabilisation branch</li>
\r
305 <li>Repeat until stable:
\r
307 <li>Develop, test and document components and test products</li>
\r
310 <li>Tag the release in repository</li>
\r
311 <li>Tag documentation
\r
313 <li><a href="https://www.simantics.org/wiki">https://www.simantics.org/wiki</a> ⇒ <a href="http://www.simantics.org/%3Cversion%3E/wiki">http://www.simantics.org/<version>/wiki</a></li>
\r
316 <li>Build and publish SDK package with and without sources</li>
\r
317 <li>Build Simantics open source products and plug-in components which are a part of the release train
\r
319 <li>Simantics Sysdyn</li>
\r
320 <li>Simantics R</li>
\r
322 <li>FMI Studio</li>
\r
325 <li>Update websites to reflect the new release
\r
327 <li><a href="http://dev.simantics.org">dev.simantics.org</a></li>
\r
328 <li><a href="https://www.simantics.org/end_user_wiki/">www.simantics.org/end_user_wiki/</a></li>
\r
329 <li><a href="https://www.simantics.org/members/">www.simantics.org/members/</a></li>
\r
330 <li><a href="https://www.simantics.org">www.simantics.org</a></li>
\r
334 <p>In the following sections each task is described step by step.</p>
\r
335 <h1>Simantics Platform Release - Step by Step</h1>
\r
336 <h2>Create release branch from selected commit</h2>
\r
337 <p>When release stabilisation starts, branch <code>simantics/platform</code> and <code>simantics/third-party</code> repositories:</p>
\r
338 <pre><code>git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
340 git branch release/x.y.z[.w] <commit>
\r
341 git push origin release/x.y.z[.w]
\r
343 git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
\r
345 git branch release/x.y.z[.w] <commit>
\r
346 git push origin release/x.y.z[.w]
\r
348 <p>When creating major/minor releases <code><commit></code> is usually a commit in the <code>master</code> branch.
\r
349 With service releases, branch from an existing <code>release/*</code> branch instead.</p>
\r
350 <h2>Prepare release branch for use</h2>
\r
351 <h3>Prepare .target files</h3>
\r
354 <p>Retrieve release branch of the platform repository</p>
\r
355 <pre><code>git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
357 git branch release/x.y.z[.w] remotes/origin/release/x.y.z[.w]
\r
358 git checkout release/x.y.z[.w]
\r
362 <p>Edit the beginning of the file <code>releng/org.simantics.sdk.build.targetdefinition/simantics.target</code></p>
\r
363 <pre><code><?xml version="1.0" encoding="UTF-8" standalone="no"?>
\r
364 <?pde version="3.8"?>
\r
365 <target name="Simantics 1.25.0" sequenceNumber="10">
\r
367 <location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
\r
368 <unit id="org.simantics.sdk.feature.group" version="1.25.0"/>
\r
369 <repository location="http://www.simantics.org/download/master/sdk"/>
\r
373 <li>Change <code><repository location=</code> value to <code>http://www.simantics.org/download/release/x.y.z[.w]/sdk</code></li>
\r
374 <li>Increment <code>sequenceNumber</code> by 1</li>
\r
378 <h3>Initialize release branch distribution web site</h3>
\r
380 <li>Run the [SDK/Simantics SDK](https://www.simantics.org/jenkins/job/SDK/job/Simantics SDK) build with parameters:
\r
382 <li><code>REFSPEC: refs/heads/release/x.y.z[.w]</code></li>
\r
383 <li><code>PUBLISHED_BRANCH_NAME: release/x.y.z[.w]</code></li>
\r
387 <h2>Review documentation</h2>
\r
388 <p>Documentation to review:</p>
\r
390 <li><a href="http://dev.simantics.org/">Developer wiki</a></li>
\r
391 <li><a href="http://www.simantics.org/end_user_wiki">End-user wiki</a></li>
\r
392 <li><a href="http://www.simantics.org/members">Member wiki</a></li>
\r
394 <p>For each wiki page:</p>
\r
396 <li>Read through and get authors to fix found problems, such as TODOs or invalid information.</li>
\r
398 <h2>Review tutorials</h2>
\r
401 <p>Ensure tutorial wiki documentation at http://dev.simantics.org/index.php/Tutorials is up-to-date with the released platform</p>
\r
404 <p>Ensure tutorial projects and product build properly</p>
\r
407 <p>com.acme.movie</p>
\r
409 <li>Build with Buckminster, com.acme.movie.product.site.feature</li>
\r
413 <h2>Tag release/* branches</h2>
\r
414 <p>When the release branches are ready for the release, tag them with the tag <code>vx.y.z[.w]</code>:</p>
\r
415 <pre><code>git clone ssh://<user>@www.simantics.org:29418/simantics/platform.git
\r
417 git checkout release/x.y.z[.w]
\r
418 git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
\r
419 git push origin --tags
\r
421 git clone ssh://<user>@www.simantics.org:29418/simantics/third-party.git
\r
423 git checkout release/x.y.z[.w]
\r
424 git tag vx.y.z[.w] -m "Simantics x.y.z[.w] release"
\r
425 git push origin --tags
\r
428 <p>Note The -m argument must be supplied to create an <a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging">annotated tag</a>.
\r
429 Only annotated or signed tags can be pushed to Gerrit.</p>
\r
431 <h2>Tag documentation wikis</h2>
\r
432 <p>Tag documentation wiki using <a href="./tag.sh">tag.sh</a> script.</p>
\r
433 <p>The wiki documentation is mainly in MediaWiki installations. The only sane way to tag the documentation is to clone it:</p>
\r
435 <li>Copy the wiki installation from wiki to ${release_version}/wiki</li>
\r
436 <li>Copy the trunk wiki MySQL database into a new version</li>
\r
437 <li>Reconfigure the tagged wiki (LocalSettings.php) to use the copied database and no longer allow any edits</li>
\r
439 <h2>Compile change log entry</h2>
\r
441 <li>Edit the <a href="https://www.simantics.org/redmine/projects/simantics-platform/wiki/ChangeLog">main page</a> and add a a link for release x.y.z[.w].</li>
\r
442 <li>Open the change log page of the previous release, e.g. <a href="https://www.simantics.org/redmine/projects/simantics-platform/wiki/Simantics_1250">1.25.0</a></li>
\r
443 <li>Open the new link in another browser/tab to start editing the new wiki page</li>
\r
444 <li>Edit the previous release's page and copy its wiki source contents over to the new release's page.</li>
\r
445 <li>Fix the content to match the new release:
\r
447 <li>Remove the issue content of the previous release</li>
\r
448 <li>Fix release number, release date, release branch link and the link to all issues closed for the release
\r
450 <li>Save new public issue query that lists all issues closed for the release by <a href="https://www.simantics.org/redmine/projects/simantics-platform/issues?query_id=122">starting from the previous release's query</a></li>
\r
453 <li>Add filter to query: <strong>Release Notes: Any</strong> to only show issues that have some content in their Release Notes field</li>
\r
454 <li>Export closed issue list as CSV with selected columns only. Open the resulting CSV file in Excel.</li>
\r
455 <li>Use <strong>Data -> Text to Columns</strong> with tab column separation to columnize the result</li>
\r
456 <li>Format the list as a table so that there is only one issue / row</li>
\r
457 <li>Remove all other columns besides: Issue #, Tracker, Release Notes</li>
\r
458 <li>Format the data into a Textile table:
\r
460 <li>Copy to table contents as text into <a href="http://www.pspad.com/">PSPad</a></li>
\r
461 <li>Replace (CTRL+H) tabs (<code>\t</code>) with <code>|</code> with <code>Regular Expressions</code> selection checked</li>
\r
462 <li>Use <strong>Insert Text Into Lines..</strong> (ALT-I) to fix line beginnings and ends:
\r
466 <li>At Lines Begin: <code>|#</code></li>
\r
467 <li>At Lines End: <code>|</code></li>
\r
474 <li>Copy the resulting textile table over to the change log page</li>
\r
477 <li>Highlight major issues in the list by changing the text background color of the <strong>Type</strong> column:
\r
479 <li><code>%{background: lightsalmon}Major Bug%</code></li>
\r
480 <li><code>%{background: lightgreen}Major Feature%</code></li>
\r
481 <li><code>%{background: lightgreen}Major Enhancement%</code></li>
\r
485 <h2>Disseminate information about the release</h2>
\r
487 <li><a href="https://www.simantics.org/redmine/">Redmine</a>: Post news on the developer/user-visible changes here.</li>
\r
488 <li><a href="https://www.simantics.org">simantics.org</a>: Post news on the release and a link to the redmine post</li>
\r
489 <li><a href="http://dev.simantics.org">dev wiki</a>: Update roadmap at http://dev.simantics.org/index.php/Roadmap</li>
\r
490 <li><a href="mailto:simantics-developers@simantics.org">simantics-developers@simantics.org</a> Send mail to simantics-developers:</li>
\r
492 <p><strong>Mail template:</strong></p>
\r
493 <pre><code>Hello everyone,
\r
495 Simantics release x.y.z[.w] has been released. Head over to
\r
496 https://www.simantics.org/redmine/news/<news number>
\r
497 for the release news.
\r
500 Simantics Release Engineering Team
\r
502 <p><strong>News entry template:</strong></p>
\r
503 <pre><code>On <date> Simantics x.y.z[.w] was tagged in SVN. Please find change log at:
\r
504 * [[simantics-platform:Simantics_xyzw|Simantics x.y.z.w]]
\r
506 Insert some general thoughts on the release...
\r
511 <li>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</li>
\r
512 <li>Create a parametrized release train pipeline build in Jenkins that creates all artifacts of a simantics release in one go</li>
\r
513 <li>Start using https://github.com/mbarbero/fr.obeo.releng.targetplatform to generate <code>.target</code> files. <code>.tpd</code> files allow specifying version ranges instead of specific versions.</li>
\r
518 <!-- This document was created with MarkdownPad, the Markdown editor for Windows (http://markdownpad.com) -->
\r