blob: 47c9d30ae35ded4978445bb1c1e38488aeae4e15 [file] [log] [blame]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>BuildBot</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<h2 id="what-is-builbbot-and-why-using-it">What is BuilbBot and why using it?</h2>
<p>OFBiz uses <a href="https://en.wikipedia.org/wiki/Buildbot">BuilbBot</a> as its Continuous Integration (CI) tool. There are other CI tools <a href="https://ci.apache.org/">used at the ASF</a>.</p>
<h2 id="ofbiz-and-buildbot">OFBiz and BuildBot</h2>
<p><a href="https://svn.apache.org/repos/infra/infrastructure/buildbot/aegis/buildmaster/master1/projects/ofbiz.conf">Here is the OFBiz BuildBot script</a>. If you are interested on modifying it, please understand its content and read the BuildBot documentation. Note that the Infra team is always there to help you. There is also <a href="C:\projectsASF\infrastructure-puppet\modules\subversion_server\files\hooks\buildbot_project_paths" title="buildbot_project_paths">a file in Git for project paths</a>.</p>
<h3 id="schedulers-and-builders">Schedulers and Builders</h3>
<p>BuildBot uses schedulers and builders. Schedulers decide which builders to trigger on svn commits.</p>
<p>You can see the OFBiz builders and their states in the <a href="https://ci.apache.org/waterfall">common Buildbot waterfall view</a> (look for “ofb”).</p>
<p>The <a href="https://ci.apache.org/builders/ofbizTrunkFramework">ofbizTrunkFramework</a> builder is triggered on commits in the trunk framework branch. Then only the framework integration tests are run. This also triggers the <a href="https://ci.apache.org/builders/ofbizTrunkFrameworkPlugins">ofbizTrunkFrameworkPlugins</a> and then the whole integration tests are run. To check that a commit in the framework puts no regressions in plugins and especially because the dependencies of ofbiz-framework without ofbiz-plugins is different from the dependencies of ofbiz-framework + ofbiz-plugins (plugins components are Gradle sub-projects). So testing needs to happen in both scenarios because you might face library version bugs. Of course a commit into the trunk plugins also triggers the ofbizTrunkFrameworkPlugins.</p>
<p>The same apply to the <a href="https://ci.apache.org/builders/ofbizBranch17Framework">ofbizBranch17Framework</a> and the <a href="https://ci.apache.org/builders/ofbizBranch17FrameworkPlugins">ofbizBranch17FrameworkPlugins</a> and next releases branches, they follows the same structure than the trunk now.</p>
<p>The current stable branch R16.12 has only <a href="https://ci.apache.org/builders/ofbizBranch16">one builder</a>. This will be gone in future. All new releases needs 2 builders.</p>
<p>In an OFBiz builder page you can see <a href="https://ci.apache.org/builders/ofbizTrunkFramework">an history of the builds up to 100+</a>. OFBiz randomly uses 3 servers (except for RAT which always only uses lares_ubuntu) to build as you can see at the bottom of this page. You may want to explore more to get acquainted with the tool…</p>
<p>There is also the <a href="https://ci.apache.org/builders/ofbizTrunkFrameworkRat">RAT builder</a>. It checks the licenses in OFBiz. You can find the result <a href="https://ci.apache.org/projects/ofbiz/rat-output.html">here</a></p>
<h3 id="tests-results">tests results</h3>
<p>Here are the <a href="https://ci.apache.org/projects/ofbiz/logs/">test results</a>. The folders structure reflects the current svn repo structure.</p>
<h3 id="technical-information">Technical information</h3>
<p>When you create a new branch you need to let know BuildBot about it. This because BuildBot uses svn hooks to triggers builds on commits. <a href="https://github.com/apache/infrastructure-puppet/blob/deployment/modules/subversion_server/files/hooks/buildbot_project_paths">The file to change is here</a> You can’t make commit in infrastructure-puppet if you are not an infra committer. So you need to clone the repo and make a Pull Request.</p>
<h2 id="handling-issues">Handling issues</h2>
<p>Sometimes (rarely) you can get transient tests errors in BuildBot. This mean tests don’t all pass in BuildBot, though they pass in your local instance. In such case, it’s most certainly an issue with servers. Those are hard workers and make errors from time to time, which shows that not only human make errors.</p>
<p>Before doing anything it’s best to check which BuildBot step is impacted, and if it exists have a look at the logfile (stdio)</p>
<p>Some other errors may happen, like * Git not updating * upload not working * you name it…</p>
<p>In such case you can trigger a build from IRC to see if the problem resolves by itself. Most of the time tests and svn issues are resolved this way. If it does not then the best is to ask Infra help, either on <a href="https://apache.hipchat.com/chat/room/669587">HipChat infra room</a> or through the <a href="https://issues.apache.org/jira/servicedesk/customer/portal/1/create/3">service desk</a></p>
<p>When something like that happens, I get to IRC (using https://webchat.freenode.net). There using a recognisable username (I use jleroux) I get to the ofbiz channel. I wait for ofbiz-bot to appear, click on it, click on query and then I can make a request in the chat line to restart a build.</p>
<p>A request is of the form</p>
<pre><code>force build ofbizTrunkFramework</code></pre>
<p>you can put the text you want to appear in builder, after this expression, something like</p>
<pre><code>forces manual build after weird error</code></pre>
<p>So the whole request is of the form</p>
<pre><code>force build ofbizTrunkFramework forces manual build after weird error</code></pre>
<p>Note though that with our last config (see <a href="https://issues.apache.org/jira/browse/INFRA-15394">INFRA-15394</a>) the ofbizTrunkFrameworkPlugins and ofbizBranch17FrameworkPlugins builders are dependent and respectively automatically launched by the ofbizTrunkFramework and ofbizBranch17Framework builders but only on commits. So if you use an IRC command like <code>force build ofbizTrunkFramework</code> only this builder will be launched not the dependent ofbizTrunkFrameworkPlugins. We can’t call a scheduler from IRC. It needs a svn commit.</p>
<h3 id="randon-conflicts-on-port-8080-during-tests">Randon conflicts on port 8080 during tests</h3>
<p>One case which comes back from time to time is a conflit on port 8080 due to the automatic startup of tomcat. It’s due to security patches being applied on Silvanus (one of 3 the servers BuildBot uses for OFBiz, hence the random aspect, only Sylvanus is concerned). In such case we need to ask infra to manually disable Tomcat on Silvanus. This happened 4th already, last case was <a href="https://issues.apache.org/jira/browse/INFRA-15829">INFRA-15829</a>) where things are best explained.</p>
<h3 id="adding-a-new-branch">Adding a new branch</h3>
<ol type="1">
<li>Copy and adapt an existing branch scheduler and builder in <a href="https://svn.apache.org/repos/infra/infrastructure/buildbot/aegis/buildmaster/master1/projects/ofbiz.conf">the OFBiz BuildBot script</a>.</li>
<li>Ask Infra for a new directories structure for the tests (eg https://issues.apache.org/jira/browse/INFRA-17513)<br />
</li>
<li>Adds the new branches <a href="C:\projectsASF\infrastructure-puppet\modules\subversion_server\files\hooks\buildbot_project_paths" title="buildbot_project_paths">in the Git file for project paths</a>.</li>
</ol>
</body>
</html>