Welcome to mirror list, hosted at ThFree Co, Russian Federation.

_releasing-a-new-_remmina-version_8md_source.html « public - gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3ad8106618b81c4a6256393f84c92c54651b7733 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Remmina - The GTK+ Remote Desktop Client: Releasing-a-new-Remmina-version.md Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="org.remmina.Remmina.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Remmina - The GTK+ Remote Desktop Client
   &#160;<span id="projectnumber">v1.4.33</span>
   </div>
   <div id="projectbrief">Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_releasing-a-new-_remmina-version_8md.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Releasing-a-new-Remmina-version.md</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_releasing-a-new-_remmina-version_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;# Releasing a new Remmina version</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;This page describe the Remmina release workflow, and the steps needed to tag  a new version.</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;## What is a release?</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;A release is the distribution of the final version or the newest version of a software application.</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;Remmina tries to follow the [Semantic Versioning](https://semver.org/), that means, given a version number MAJOR.MINOR.PATCH, increment the:</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;- MAJOR version when you make incompatible API changes</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;- MINOR version when you add functionality in a backwards compatible manner</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;- PATCH version when you make backwards compatible bug fixes</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;Unfortunately, due to the relatively small number of contributions, we almost always increment the PATCH version, even if we push new features.</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;This is because we are unable to honor the backlog we have for the next MINOR and MAJOR milestones.</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;That said, is not strictly important to get mad about the versioning, but if we can follow the above schema, is better.</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;## What is a tag?</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;A tag is a pointer to a specific commit, we can have light tags, that can be added and removed as needed and annotated tags.</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;Annotated tags is an unchangeable (nothing is unchangeable ;-) ) par of Git history, and are used on GitLab and GitHub to create a Release.</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;In fact releases are a GitHub, GitLab concept, it doesn&#39;t exist in Git, Git knows only about tags and annotated tags.</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;## So, how it happens, Releasing Remmina?</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;As soon as we agree to release a new version, we have some preparatory tasks to do, and to be sure to don&#39;t miss anything, we work on a new branch and submit a merge request.</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;This is the most important point, as on [GitLab](https://gitlab.com/Remmina/Remmina/-/blob/master/.gitlab/merge_request_templates/Remmina%20Release.md) we have a merge request template for the releases. Instructions for generating the changelog can be found [here](https://gitlab.com/Remmina/Remmina/-/wikis/Contribution/HOWTO-generate-the-changelog).</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;1. Review the above-mentioned template, and eventually modify it if you see something wrong or missing (like the list of downstream maintainers)</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;2. Create a new branch starting from the `master` branch, use a name like `rel/v1.4.28`</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;3. Based on the template be sure, working on the new branch, to update the files as indicated.</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;4. Commit with the `-s` git flag to sign your commit, and push to the Remmina repository.</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;5. Create a Merge Request, and wait for feedbacks and pipeline&#39;s status.</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;6. Be sure to link the MR to the right milestones and to issues you want to close automatically upon the merge.</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;7. Check the labels, you must have the `release` label and whatever suit this specific version.</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;At this point we have a Merge Request, be sure everything is fine, or ask for a review.</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;While you wait, prepare yourself to create the annotated tag, while you can do it from the command line, here we focus on the GitLab web interface.</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;Open the previous tag, to see it raw, you can edit it (do not save afterwards), this will be useful to cut and paste what is common to all Release we do.</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;For instance, at https://gitlab.com/Remmina/Remmina/-/releases/v1.4.27/edit you will have to copy:</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;```</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;**ATTENTION New dependencies introduced with v1.3.5 onwards!**</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;* appindicator or ayatana-appindicator is now optional, -DHAVE_LIBAPPINDICATOR=OFF will disable the Remmina system tray icon.</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;* -DWITH_PYTHONLIBS=ON is required for the Python plugin (python3-dev/devel required to build)</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;* pyhoca-cli is needed for the X2Go plugin, -DWITH_X2GO=ON</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;* NX, XDMCP and ST have removed.</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;* Use -DWITH_FREERDP3=ON if you are using the FreeRDP master branch</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;* libsodium is needed to build Remmina.</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;* webkit2gtk3 is needed to build the WWW plugin.</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;* -DWITH_KF5WALLET=ON is a new config option required for the KWallet plugin (and the required kf5wallet libraries to build it).</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;* News can be turned off with -DWITH_NEWS=OFF</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;* gtk-vnc is needed for the VNC plugin for GNOME and KVM, -DWITH_GVNC=ON</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;```</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;This will have to be updated in case something has been changed. Pay attention to this point because it&#39;s used by the downstream maintainer.</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;When the MR is merged, and you have all the blocks you need, [create a new tag](https://gitlab.com/Remmina/Remmina/-/tags/new), in that page you have to give a name to the tag, like `v1.4.28`, and a message, like `Release v1.4.28`.</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;Without that optional message, you will create a lightweight tag, and you won&#39;t end-up in a Release.</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;With the new tag, you can [create a Release](https://gitlab.com/Remmina/Remmina/-/releases/new), in that new page, select the corresponding tag, give a title (follow the previous release as the template), add the change log, and push the Big Red Button :-D</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;You are done!!</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;## And Now What?</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;Many things happen behind the scene, as soon as you tag a new version, many systems should detect the new tag, and start to build a new Remmina version, this is true for most of the distro, the flatpak, the Ubuntu Remmina PPA, and the snap (see after).</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;Still, there are some additional manual steps to take.</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;1. Wait that all the pipelines are finished and submit a new pipeline from the master (needed for the snap)</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;2. When the manual pipeline is finished go to https://snapcraft.io/remmina/releases, and promote the new version from edge to the stable channel.</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;3. Add the new release in [wikidata](https://www.wikidata.org/wiki/Q82148?uselang=en#P348), this is need by some distributions to gather the latest tag.</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;4. Drop a message to the Debian downstream maintainer, at the moment is @mfvescovi</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;To access snapcraft you need developer rights, ask one maintainer to add yourself in the developer list.</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;One time a year you need to refresh the snapcraft authentication token:</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;```</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;snapcraft export-login --snaps=remmina -</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;```</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;Better to use dev@remmina.org (ask the password to the maintainers), and set `SNAPCRAFT_LOGIN` in the [CI/CD variables](https://gitlab.com/Remmina/Remmina/-/settings/ci_cd) with the new obtained token.</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;## Appendix</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;### Authors&#39; list</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;To get the authors&#39;list I use this git command:</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;```</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;git log --pretty=format:&quot;%an &amp;lt;%ae&amp;gt;&quot; | sort | uniq -c | sort -rn | sed -e &#39;s/^ *[0-9]\+ //g&#39;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;```</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;You just need to tailor it a little bit, for instance I remove duplicated entries for authors that have multiple emails, I move up the most active users, but don&#39;t be too strict, it shouldn&#39;t take more than a couple of minutes.</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;### To-Do</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;We should reduce more all the above manual steps, and ideally a Release should happens by itself upon a special merge request, as usual, patches are welcome ;-)</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="_releasing-a-new-_remmina-version_8md.html">Releasing-a-new-Remmina-version.md</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>