Skip to content

Commit 3d9d673

Browse files
committed
Jenkins overview
1 parent 7cbbb9f commit 3d9d673

File tree

3 files changed

+41
-4
lines changed

3 files changed

+41
-4
lines changed

dict.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ Tofino
7171
Vemuri
7272
VM
7373
VMware
74+
Weaveworks
7475

7576
adaptor
7677
adaptors

intro.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,7 @@ bundled and purpose-built network appliances that came before, and so
255255
from the management perspective, it is helpful to identify what
256256
becomes easier and what becomes harder when you make this
257257
transition. This is both the challenge and the opportunity of
258-
disaggregation. (For a brief introduction to disagggregation and the
259-
trend to cloud native designs, so the
258+
disaggregation.
260259

261260
Broadly speaking, disaggregation is the process of breaking large
262261
bundled components into a set of smaller constituent parts. SDN is one

lifecycle.rst

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,45 @@ different build tools for their individual projects (which we've been
387387
referring to in generic terms as subsystems), and we will employ a
388388
simple second-level tool to integrate the output of all those
389389
sophisticated first-level tools. Our choice for the second-level tool
390-
is Jenkins, which provides little more than a means to define a script
391-
(called a job) to run in response to some event.
390+
is Jenkins, which provides little more than a means to define a
391+
sequence of scripts to run in response to some event (such as a patch
392+
being checked into the Code Repo).
393+
394+
.. _reading_jenkins:
395+
.. admonition:: Further Reading
396+
397+
`Jenkins <https://www.jenkins.io/doc/>`__.
398+
399+
Like many of the tools described in this book, Jenkins has a graphical
400+
dashboard that can be used to create, execute, and view the results of
401+
a set of jobs, but this is mostly useful for toy examples. Because
402+
Jenkins plays a central role in our CI pipeline, it is managed like
403+
all the other components we are building—via a declarative
404+
specification file. This file, called a *Jenkinsfile*, is then checked
405+
into the repo just like all the other configuration-as-code files, and
406+
in yet another example of the recursive nature of Lifecycle
407+
Management, manages the Jenkins CI service.
408+
409+
In many ways, Jenkins lets you do anything you want since it is
410+
fundamentally a mechanism that executes shell scripts. When used in a
411+
disciplined way, however, Jenkins provides a means to define a
412+
*Pipeline* consisting of a sequence of *Stages*. Each stage then
413+
executes some script and tests whether the script succeed or
414+
failed. In principle then, Jenkins could be the centerpiece of the
415+
entire CI/CD pipeline since one could define a "Build" stage, followed
416+
by a "Test" stage, and then conditional upon success, conclude with a
417+
"Deploy" stage. In practice, however, Jenkins is used more narrowly to
418+
build-and-test individual components; integrate-and-test various
419+
combinations of components; and under limited circumstances, includes
420+
a "Publish" stage that copies an artifact that's just been built
421+
(e.g., a Docker Image) to the Image Repo.
422+
423+
The main challenge in using Jenkins is establishing a suitable set of
424+
environments for running tests, which we discussed briefly in Section
425+
4.2. Environments can be built from scratch (which takes time but
426+
validates end-to-end integration), or use pre-built containers or VMs
427+
(which is more expedient but risks missing regressions in the
428+
software). No amount of tooling resolves this fundamental trade-off.
392429

393430
4.4 Continuous Deployment
394431
-------------------------

0 commit comments

Comments
 (0)