-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutomatedBuildProcess.html
193 lines (150 loc) · 8.83 KB
/
AutomatedBuildProcess.html
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>The Automated Build Process</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css?v=fadd4351" />
<link rel="stylesheet" type="text/css" href="_static/custom.css?v=77160d70" />
<script src="_static/documentation_options.js?v=a8da1a53"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Jenkins Configuration" href="JenkinsConfiguration.html" />
<link rel="prev" title="Mantid Git Workflow" href="GitWorkflow.html" />
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-59110517-1', 'auto');
ga('send', 'pageview');
</script>
</head><body>
<div id="navbar" class="navbar navbar-default ">
<div class="container">
<div class="navbar-header">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://www.mantidproject.org">
</a>
<span class="navbar-text navbar-version pull-left"><b>main</b></span>
</div>
<div class="collapse navbar-collapse nav-collapse">
<ul class="nav navbar-nav">
<li class="divider-vertical"></li>
<li><a href="index.html">Home</a></li>
<li><a href="https://download.mantidproject.org">Download</a></li>
<li><a href="https://docs.mantidproject.org">User Documentation</a></li>
<li><a href="http://www.mantidproject.org/contact">Contact Us</a></li>
</ul>
<form class="navbar-form navbar-right" action="search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search" />
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<p>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="nav-item nav-item-0"><a href="index.html">Documentation</a> »</li>
<li class="nav-item nav-item-this"><a href="">The Automated Build Process</a></li>
</ul>
</div> </p>
</div>
<div class="container">
<div class="row">
<div class="body col-md-12 content" role="main">
<section id="the-automated-build-process">
<h1>The Automated Build Process<a class="headerlink" href="#the-automated-build-process" title="Link to this heading">¶</a></h1>
<nav class="contents local" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#summary" id="id2">Summary</a></p></li>
<li><p><a class="reference internal" href="#the-details" id="id3">The Details</a></p></li>
<li><p><a class="reference internal" href="#other-notes" id="id4">Other Notes</a></p></li>
<li><p><a class="reference internal" href="#main-pipeline" id="id5">Main Pipeline</a></p></li>
</ul>
</nav>
<section id="summary">
<h2><a class="toc-backref" href="#id2" role="doc-backlink">Summary</a><a class="headerlink" href="#summary" title="Link to this heading">¶</a></h2>
<p>If your changes break the <code class="docutils literal notranslate"><span class="pre">main</span></code> builds in any way, on any platform,
then it is your responsibility to fix the error immediately!</p>
</section>
<section id="the-details">
<h2><a class="toc-backref" href="#id3" role="doc-backlink">The Details</a><a class="headerlink" href="#the-details" title="Link to this heading">¶</a></h2>
<p>You should follow the <a class="reference internal" href="GitWorkflow.html#gitworkflow"><span class="std std-ref">Mantid Git Workflow</span></a>. When you open a
pull request (or commit to an already open pull request) the automated
build process will start. There will be a different build for each
platform/job. A status will appear for each job in the pull request.</p>
<p>The status for each build will be either pending, success or failed.</p>
<img alt="_images/BuildStatuses.png" src="_images/BuildStatuses.png" />
<p>To see the details of a particular build in Jenkins click on Details
next to the status. To restart a build, if it failed with a spurious
error not related to your code changes, then you can restart that
particular build by selecting Rebuild in Jenkins. Then press rebuild
again on the next screen while not changing any of the parameters. If
you don’t have permission to restart builds in Jenkins you will have
to ask someone who does.</p>
<img alt="_images/RestartBuild.png" src="_images/RestartBuild.png" />
</section>
<section id="other-notes">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">Other Notes</a><a class="headerlink" href="#other-notes" title="Link to this heading">¶</a></h2>
<p>The build will fail if it cannot be cleanly merged with main.</p>
<p>Leeroy will check every 10 minutes for any missed builds, should the
GitHub hooks fail to activate or the build server was down when the
pull request was opened.</p>
<p>The pull request builder we are using is called <a class="reference external" href="https://github.com/mantidproject/leeroy">Leeroy</a>.</p>
<p>You can find a list of all the pull request Jenkins jobs at <a class="reference external" href="http://builds.mantidproject.org/view/Pull%20Requests/">here</a>.</p>
</section>
<section id="main-pipeline">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">Main Pipeline</a><a class="headerlink" href="#main-pipeline" title="Link to this heading">¶</a></h2>
<p>The <a class="reference external" href="http://builds.mantidproject.org/view/Main%20Pipeline/">main pipeline</a>
is a series of jobs that periodically run against code on the <code class="docutils literal notranslate"><span class="pre">main</span></code> branch.
Their purpose is to provide reasonable assurance that the code currently in
<code class="docutils literal notranslate"><span class="pre">main</span></code> is usable in its current state.</p>
<p>The main tasks carried out by the pipeline are, for each supported platform:</p>
<ul class="simple">
<li><p>Build Mantid and installers (<code class="docutils literal notranslate"><span class="pre">main_clean-PLATFORM</span></code>)</p></li>
<li><p>Run automated testing (<code class="docutils literal notranslate"><span class="pre">main_clean-PLATFORM</span></code>,
<code class="docutils literal notranslate"><span class="pre">main_systemtests-PLATFORM</span></code>)</p></li>
<li><p>Deploy installers to nightly download locations (<code class="docutils literal notranslate"><span class="pre">main_deploy</span></code>)</p></li>
</ul>
<p>The pipeline view in Jenkins shows the order of dependency between these jobs.</p>
<p>The most upstream jobs (i.e. <code class="docutils literal notranslate"><span class="pre">main_clean-PLATFORM</span></code>) are triggered to start
at midnight UTC assuming there were changes pushed to the <code class="docutils literal notranslate"><span class="pre">main</span></code> branch
since the last time they ran.</p>
</section>
</section>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<ul class="nav navbar-nav" style=" float: right;">
<li>
<a href="GitWorkflow.html" title="Previous Chapter: Mantid Git Workflow"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">« Mantid Git Workflow</span>
</a>
</li>
<li>
<a href="JenkinsConfiguration.html" title="Next Chapter: Jenkins Configuration"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Jenkins Configuration »</span>
</a>
</li>
<li><a href="#">Back to top</a></li>
</ul>
<p>
</p>
</div>
</footer>
</body>
</html>