|
8 | 8 | <link rel="manifest" type="application/manifest+json" href="/site.webmanifest"/> |
9 | 9 | <link rel="mask-icon" type="image/svg+xml" href="/mask-icon.svg" color="#990000"/> |
10 | 10 | <link rel="shortcut icon" type="image/png" href="/favicon.png"/> |
11 | | - <title>Drake: GitHub PR Interaction with Jenkins</title> |
| 11 | + <title>Drake: Continuous Integration with GitHub Pull Requests</title> |
12 | 12 | <meta |
13 | 13 | name="description" |
14 | 14 | content="Drake ("dragon" in Middle English) is a C++ toolbox started by the Robot |
|
149 | 149 | <div class="drake-page"> |
150 | 150 | <header class="drake-page-header"> |
151 | 151 | <div class="contain"> |
152 | | - <h1>GitHub PR Interaction with Jenkins</h1> |
| 152 | + <h1>Continuous Integration with GitHub Pull Requests</h1> |
153 | 153 | </div> |
154 | 154 | </header> |
155 | 155 | <section class="padding"> |
@@ -356,6 +356,76 @@ <h3 id="wheel">Wheel</h3> |
356 | 356 | <span class="nb">source env</span>/bin/activate |
357 | 357 | </code></pre></div></div> |
358 | 358 |
|
| 359 | +<h1 id="testing-via-external-examples">Testing via External Examples</h1> |
| 360 | + |
| 361 | +<p>The examples within Drake’s |
| 362 | +<a href="https://github.com/RobotLocomotion/drake-external-examples">gallery of external examples</a> |
| 363 | +provide continuous integration via both Jenkins and GitHub Actions. This provides |
| 364 | +downstream test coverage for Drake developers to ensure reliability in the |
| 365 | +build infrastructure. Additionally, the GitHub Actions provide a benefit |
| 366 | +for end users, in that examples of CI pipelines on public servers for |
| 367 | +external projects using Drake installations are made easily accessible.</p> |
| 368 | + |
| 369 | +<p>See the external examples |
| 370 | +<a href="https://github.com/RobotLocomotion/drake-external-examples#continuous-integration">continuous integration</a> |
| 371 | +for details on which examples use Jenkins or GitHub Actions. In general, |
| 372 | +GitHub Actions is used for the lightweight examples which use some |
| 373 | +installed version of Drake, while Jenkins is used for complete coverage |
| 374 | +on examples which pull in Drake externally and build it.</p> |
| 375 | + |
| 376 | +<p>When a new pull request is opened in Drake, members of the RobotLocomotion |
| 377 | +organization can utilize Jenkins and GitHub Actions to run custom builds. |
| 378 | +This is especially pertinent for pull requests which affect the build infrastructure.</p> |
| 379 | + |
| 380 | +<h2 id="jenkins">Jenkins</h2> |
| 381 | + |
| 382 | +<p>To test the examples which use Jenkins for CI with a PR branch of Drake, |
| 383 | +comment on an open pull request using the following command:</p> |
| 384 | + |
| 385 | +<ul> |
| 386 | + <li><code class="language-plaintext highlighter-rouge">@drake-jenkins-bot linux-jammy-unprovisioned-external-examples please</code></li> |
| 387 | +</ul> |
| 388 | + |
| 389 | +<p>or follow the <a href="#scheduling-builds-via-the-jenkins-user-interface">instructions above</a> |
| 390 | +to schedule a build of the |
| 391 | +<a href="https://drake-jenkins.csail.mit.edu/view/Linux%20Jammy%20Unprovisioned/job/linux-jammy-unprovisioned-external-examples/">external examples job</a>. |
| 392 | +Note that this job provides parameters for branches of |
| 393 | +drake and drake-external-examples.</p> |
| 394 | + |
| 395 | +<h2 id="github-actions">GitHub Actions</h2> |
| 396 | + |
| 397 | +<p>You can schedule “experimental” builds of a <a href="/from_binary.html">binary package</a>, |
| 398 | +<a href="/apt.html">debian package</a>, and/or a <a href="/pip.html">wheel package</a> by following the |
| 399 | +instructions <a href="#building-packages-on-demand">above</a>. |
| 400 | +Copy the download URL(s) obtained from the build as described.</p> |
| 401 | + |
| 402 | +<p>From the <a href="https://github.com/RobotLocomotion/drake-external-examples/actions/workflows/ci.yml">GitHub Actions workflow</a> |
| 403 | +in drake-external-examples, notice the message “This workflow has a |
| 404 | +<code class="language-plaintext highlighter-rouge">workflow_dispatch</code> event trigger.” Click “Run workflow” and input the |
| 405 | +download URL(s) copied from Jenkins in the drop-down menu. |
| 406 | +All parameters are optional, so you can ignore the package(s) and/or platform(s) |
| 407 | +that you don’t need. (For those left blank, the default workflow will run using |
| 408 | +a more “stable” version of Drake, which is usually either source code from |
| 409 | +<code class="language-plaintext highlighter-rouge">master</code> or a nightly release depending on the example).</p> |
| 410 | + |
| 411 | +<h2 id="local-testing">Local Testing</h2> |
| 412 | + |
| 413 | +<p>For CMake, see the |
| 414 | +<a href="https://github.com/RobotLocomotion/drake-external-examples/tree/main/drake_cmake_installed#developer-testing">drake_cmake_installed</a> |
| 415 | +example.</p> |
| 416 | + |
| 417 | +<p>For Bazel, see the |
| 418 | +<a href="https://github.com/RobotLocomotion/drake-external-examples/tree/main/drake_bazel_external">drake_bazel_external</a> |
| 419 | +example, and note the comments in:</p> |
| 420 | + |
| 421 | +<ul> |
| 422 | + <li>the <a href="https://github.com/RobotLocomotion/drake-external-examples/blob/main/drake_bazel_external#using-a-local-checkout-of-Drake">README</a>, |
| 423 | +which mentions using |
| 424 | +<a href="https://bazel.build/reference/command-line-reference#flag--override_module"><code class="language-plaintext highlighter-rouge">--override-module</code></a> to consume a local checkout of Drake</li> |
| 425 | + <li><a href="https://github.com/RobotLocomotion/drake-external-examples/blob/main/drake_bazel_external/MODULE.bazel"><code class="language-plaintext highlighter-rouge">MODULE.bazel</code></a>, |
| 426 | +which can be modified to use a particular revision (commit or release) of Drake</li> |
| 427 | +</ul> |
| 428 | + |
359 | 429 | </article> |
360 | 430 | </div> |
361 | 431 | </section> |
|
0 commit comments