−Table of Contents
Continuous Delivery by Jez Humble and David Farley Index
Return to Continuous Delivery by Jez Humble and David Farley, CI/CD, CI/CD Bibliography - CI/CD People, CI/CD, CI/CD and DevOps - CI/CD and SRE - Cloud Native and CI/CD - CI/CD and Microservices - Serverless CI/CD, CI/CD Security - CI/CD and DevSecOps, Functional Programming and CI/CD, CI/CD Concurrency, CI/CD and Data Science - CI/CD and Databases, CI/CD and Machine Learning, CI/CD Courses, CI/CD Glossary, Awesome CI/CD, CI/CD GitHub, CI/CD Topics
Fair Use Source: B003YMNVC0 (CDHumbFarl 2010)
“ (CDHumbFarl 2010)
A
Aardvarks, 218
Absolute paths in build scripts, 164
for acceptance tests, 198–204
for database access, 335
for testing against UI, 88, 201
in branch by abstraction, 349
and nonfunctional requirements, 227–228
and test data, 336
as executable specifications, 195–198
for acceptance tests, 85, 89
for change management, 441
for organizational change, 420
managing, 197
round-tripping, 200
and test data, 339–341
as part of deployment pipeline, 110
workflow of, 187
against UI, 88
and analysis, 190
and asynchronicity, 200, 207–210
and cloud computing, 220–222, 313
and the delivery process, 99–101
and the deployment pipeline, 213–218
and timeouts, 207–210
and virtualization, 310
application [[driver layer, 198–204
as part of:
CI, 61
integration pipeline, 362
automating, 86–88, 136
back [[doors in, 206
definition of, 85
deployment pipeline gate of, 122–126
encapsulating, 206–207
failing, 124
fr[[agility of, 88, 125, 200, 205
functional, 124
isolation in, 205, 220
layering, 191
maintainability]] of, 190–192
manual, 86, 189
parallel executing, 199, 220, 336
performance of, 218–222
record-and-playback for, 191, 197
reliability of, 200, 219
running on development machines, 62, 190
screen recording for, 136, 213–214
test data managing in, 336, 339–341
turning into capacity tests, 238
use cases for, 86
validating, 192
value proposition for, 188–193, 351
who owns them, 125, 215
window driver pattern of, 201–204
Access control, 284, 438–439
for infrastructure, 285–286
AccuRev, 385, 399, 403
ActiveDirectory]], 290
Agile development, 427
refactorings in, 330
AgileDox, 201
Albacore, 151
Alerts, 281–282
Algorithms and application performance, 230
Amazon, 316
Amazon Web Services]] (AWS), 261, 312–315
Analysis, 193–195
and acceptance tests, 190
and incremental development, 349
and nonfunctional requirements, 226–228
Analysts, 193
Ant, 147–148
AntHill Pro, 58, 126, 255, 373
deploying after development, 7–9
deploying software manually, 5–7
manual configuration management, 9–10
of nonfunctional requirements, 230
solved by the deployment pipeline, 105
Apache, 320
API (Application Programming Interface), 340, 357, 367, 369
and testing, 46
management of, 39
Application [[driver, 191
Application [[driver pattern, 198–204
phases of, 421–429
Application servers, 296
Approval process, 112, 250, 254, 267, 285, 437
APT repository, 294
Aptitude, 294
Arch, 396
and components, 346
and nonfunctional requirements, 105, 226–228
as part of inception, 423
as a requirement of operations, 282
as part of the release strategy, 251
and deployment, 256
and pipelining dependencies, 366
and the deployment pipeline, 175–177, 374–375
auditing, 373
implementing in a shared filesystem, 375
managing, 373–375
organization-specific, 355
purging, 175
vs. version control, 166
Artifactory, 111, 355, 361, 373, 375
Artifacts, 111
and dependency management, 353
and labels, 374
Asynchrony
and acceptance testing, 200, 207–210
and unit testing]], 180
ATAM (Architectural Tradeoff]] Analysis Method), 227
and acceptance criteria, 198
and deployment, 273
and distributed version control, 396
and environment management, 129
and locking down infrastructure, 286
and poor tools, 300
and the deployment pipeline, 418
as a nonfunctional requirement, 227
as a requirement of IT operations, 280–281
as part of:
delivery, 429
management of, 436–441
of artifact repositories, 373
of infrastructure changes, 287
and continuous deployment, 266
and runtime configuration, 348
and stream-based version control, 403
as part of project initiation, 430
as pre[[requisite for:
CI, 59–60
quality, 434
for infrastructure, 323
See also Acceptance tests, Capacity tests, Unit test]]s
as a principle of continuous delivery, 25
benefits of, 5–7
importance of, 12
of database initialization, 326–327
of database [[migration, 327–331, 340
of deployment, 152–153
vs. documentation, 287, 437–438
Autonomic infrastructure, 278, 292, 301
Availability, 91, 314, 423
Azure, 313, 317
B
Back [[doors in acceptance tests, 206
planning, 129, 251, 441
ways of, 131–132
defect, 99–101
requirement, 425
as part of:
service continuity planning, 282
network, 302
Ball of mud, 351, 359
and version control, 166
and virtualization, 305
environments, 51, 155
Bash, 282
Batch processing]], 167
Bazaar, 396
Bcfg2, 291
Behavior-driven development, 195, 204, 323
Behavior-driven monitoring]], 322–323
Bench, 243
Big, visible displays. See Dash[[boards
BigTable, 315
and packaging, 154
and pessimistic locking, 387
and version control, 35, 373
building, 438
only once, 113–115
definition of, 134
environment-specific, 115
in CVS, 383
managing, 373–375
re-creatability from version control, 33, 175, 354, 363, 373
separating out configuration from, 50
shared filesystem for, 166
BitKeeper, 386, 395
BizTalk, 311
BladeLogic, 161, 287, 289, 291, 296
Blue-green deployments, 261–262, 301, 332–333
BMC, 156, 161, 289, 291, 318
Boot[[strapping]] problem, 372
Bottlenecks, 106, 138
Branch by abstraction, 334–335, 349–351, 360, 415
Branches
integrating, 389
maintenance, 389
release, 389
Branching]]
branch by feature, 36, 81, 349, 405, 410–412
definition of, 388–393
environmental, 388
functional, 388
in CVS, 383
in Subversion, 384
organizational, 388
physical, 388
policies of, 389
procedural, 388
reasons of, 381
Brittle tests, 125, 191
BSD ([[Berkeley [[Software Distribution]])]], 355
Bug queue. See Backlogs, defect
automating as pre[[requisite for CI, 57
and checking in, 66
going home when, 68–69
responsibility for fixing, 70–71, 174
reverting, 69
continuous, 65
optimizing, 361
promoting, 108
scheduling, 65, 118–119, 127
tools for, 145
Buildr, 151
Business analysts. See Analysts
Business governance. See Governance
Business sponsor, 422
and analysis, 193
and nonfunctional requirements, 226
protecting by acceptance tests, 189
building with Make and SCons, 147
compiling, 146
C, 282
CA, 318
CAB (Change Advisory Board), 280, 440
Canary releasing, 235, 262–265
and continuous deployment, 267
and database [[migration, 333
and cloud computing, 314
as a cause of project failure, 431
definition of, 225
designing for, 230
measuring, 232–234
planning, 251, 317, 423
and cloud computing, 313
and virtualization, 310
as part of a testing strategy, 91
automating, 238–244
environment for, 234–237
extrapolating, 234
in the deployment pipeline, 112, 244–246
interaction templates in, 241–244
measurement]]s for, 232–234
of distributed system]]s, 240
performance of, 238
scenarios in, 238
simulations for, 239
test data managing in, 341–342
thresholds in, 238
through the API, 239
through the UI, 240–241
Capistrano, 162
CCTV (Closed-circuit tele[[vision), 273
CfEngine, 51, 53, 155, 161, 284, 287, 291
Change management, 9, 53–54, 280, 287, 421, 429, 436–437, 440–441
Check point, 394
Checking in
and duration of commit tests, 185
frequency, 435
Chef, 291
Cherry picking, 394, 409, 414
Chicken-counting, 254
CIM (Common Information Model), 319
CIMA (Chartered Institute of Management Accountants), 417
Circuit Breaker]] pattern, 98, 211
Circular dependencies, 371–373
ClearCase, 385–386, 399, 404, 409
and architecture, 313, 315
and compliance, 314
and nonfunctional requirements, 314
and performance, 314
and security, 313
and service-[[level agreements, 314
definition of, 312
for acceptance tests, 220–222
infrastructure in the Cloud, 313–314
platforms in the Cloud, 314–315
CMS (configuration management system), 290
Cobbler, 289
Code [[analysis, 120, 135
Code [[coverage]], 135, 172
Code duplication, 121
Code [[style, 121
ad-hoc, 8
and acceptance tests, 99, 190
and distributed version control, 395
and the deployment pipeline, 107
as a goal of:
components, 346
version control, 32, 381
between teams involved in delivery, 18, 434, 434, 436
in siloed organizations, 439
COM (Component Object Model), 353
Commercial, off-the-shelf software. See COTS
and incremental development, 347
and test data, 338–339
as part of:
CI, 61
deployment pipeline, 110, 120–122
scripting, 152
workflow, 169
characteristics of, 14
failing, 73, 171
principles and practices of, 177–185
running before checking in, 66–67
speed of, 60–62, 73, 435
test data managing in, 338–339
See also Unit test]]s
Compatibility testing, 342
incremental, 146
optimizing, 146
static, 353
warnings, 74
and cloud computing, 314
and continuous delivery, 267
and library management, 160
and organizational maturity, 420
as a goal of version control, 31
managing, 436–441
and CI, 60
and deployment, 156
and the deployment pipeline, 360–361
configuration management of, 39, 356–360, 363
definition of, 345
dependency management of, 39, 375
Concordion, 85, 191, 196
and deployment, 154
and deployment scripting, 155
and infrastructure, 283–287, 290–295
as part of release strategy, 250
bad, 435–436
definition of, 31
for deployment time, 42
importance of, 18–20
manual configuration management antipattern, 9–10
maturity model of, 419–421
migrating, 129
of binaries, 373
of databases, 328–329
of environments, 277, 288, 308
of middleware, 295–300
of servers, 288–295
of software, 39
of virtual environment]]s, 305–307
promoting, 257
runtime, 42, 348, 351
version control practices for. See Version control practices
Configuration management system. See CMS
Consistency, 290
providing CI as a central service, 76
through virtualization, 304
Contextual enquiry, 90
Continuous deployment, 126, 266–270, 279, 440
Continuous improvement, 15, 28–29, 441
Continuous integation pipeline, 110
Continuous integration]] (CI)
and branching]], 36, 390–393, 410, 414
and database scripting, 326–327
and mainline development, 405
and test data management, 339
as a centralized service, 75–76
as part of project initiation, 424, 430
as pre[[requisite for quality, 427
bad, 435
definition of, 55
managing environments in, 289
with stream-based version control, 403–404
Co[[ordinates in Maven, 375
Corporate governance. See Governance
COTS (Commercial, off-the-shelf software), 284, 295, 307
analysis of, 121, 135, 139, 174
and loosely coupled architecture, 315
and mainline development, 392
database [[migrations to application changes, 329, 333–334
external systems to acceptance tests, 211
UI to acceptance tests, 125, 192, 201
within the release process, 261, 325
CPAN (Comprehensive Perl Archive Network), 155
Crontab, 294
Crosscutting concerns, 227
Cross-functional requirements, 226
Cross-functional teams, 105, 358
Cross-functional tests. See Nonfunctional tests
Cucumber, 85–86, 191, 196, 200, 323
Cucumber-Nagios, 323
Customer, 422
CVS (Concurrent Versions System), 32, 382–383, 409
and compliance, 437
and organizational maturity, 419
for changes to infrastructure, 287, 441
importance of, 11, 138
measuring, 137
Cyclomatic complexity]], 121, 135, 139, 174
D
DAG (directed [[acyclic graph]]), 363, 400
Darcs (Darcs Advanced Revision Control System), 396
and CI, 82
for operations, 320–322
for tracking delivery status, 429, 440
importance of, 16
and rollback, 259
archiving in production, 282, 343
in acceptance tests, 204
lifecycle of, 325
Data [[center automation tools, 284
Data [[center management, 290–295
Data [[migration, 118, 129, 262, 264
as part of the release plan, 252
and application performance, 230
and tests, 184
Database administrators, 326, 329
and orchestration, 329–331, 333
and unit testing]], 179–180, 335–336
for middleware configuration, 299
forward and backward compatibility]] of, 334
incremental changing, 327–331
initializing, 326–327
in-[[memory, 154
migrating, 327–334
monitoring]], 318
normalization and de[[normalization, 331
primary key]]s in, 329
refactoring, 334, 341
referential constraint]]s, 329
rolling back]], 328, 331–334
schemas in, 327
temporary table]]s in, 329, 332
transaction record-and-playback in, 332
versioning, 328–329
DbDiff, 328
Deadlock]], 136
Debian, 154, 283–284, 353
Declarative deployment tools, 161
Declarative infrastructure management, 290
Declarative programming]], 147–148 See also Ant, Make
as a symptom of poor CI, 435
critical, 131, 265–266, 409
in backlogs, 99–101
measuring, 138
re[[producing, 247
zero, 100
Deming cycle, 28, 420, 440
Deming, W. Edwards, 27, 83
and integration, 370
between branches, 391
circular, 371–373
down[[stream, 364
in software, 351–356
refactoring, 377
runtime, 352
transitive]], 355
up[[stream, 364
keeping shallow, 371
managing, 355, 363–373
modeling with the deployment pipeline, 365–369
Dependency hell, 352–354, 365
and branch by abstraction, 351
and Maven, 149
and unit testing]], 179–180
Dependency management, 38–39, 149, 353
and trust, 369
between applications and infrastructure, 285
Dependency networks and build tool s, 144
and components, 357
and idempotence, 155–156
automating, 152–153
blue-green. See Blue-green deployment
definition of, 25
deploy everything from scratch, 156
deploy everything together, 156
failures of, 117
incremental implementation of, 156–157
late deployment antipattern, 7–9
logging, 270–271
managing, 421
manual, 5–7, 116, 165
orchestrating, 161
planning and implementing, 253–254
scripting, 160–164
testing through automation, 130, 153
use the same process for every environment, 22, 115–117, 153–154, 253, 279, 283, 286, 308, 438
validating environments, 155
acceptance test stage, 213–218
and artifact repositories, 374–375
and compliance, 437
and components, 360–361, 361–363
and continuous deployment, 267
and databases, 326
and dependency graphs, 365–369
and governance, 418, 442
and integration tests, 212
and mainline development, 405
and test data, 338–343
and version control, 404, 416
and virtualization, 304, 307–310
as part of project initiation, 430
definition of, 106–113
evolution of, 136–137
failing, 119–120
implementing, 133–137
in siloed organizations, 439
scripting, 152
Deployment production line, 110
Deployment tests, 89, 216–218, 285
and acceptance tests, 125
and deployment scripts, 154
and test data, 343
configuration management of, 33, 50, 289
managing as part of development, 62
Device drivers for GUI testing, 202
DevOps, 28
and agile infrastructure, 279
creating the deployment process, 270
ownership]] of the build system, 174
See also Operations
DHCP (Dynamic Host Configuration Protocol]]), 285, 289
Diagnostics, 139
Diamond dependencies, 354, 365
Directed [[acyclic graph]]. See DAG
Disaster re[[covery]], 250, 282
and acceptance tests, 214
and CI, 57
and incremental development, 349, 392, 426, 434
Disk [[images, 305
Displays. See Dash[[boards
and CI, 75–78
and pipelining components, 360
and version control, 78
communication in, 75
Distributed teams, 143
Distributed version control, 79–81, 393–399, 411, 414
DLL (Dynamic-Link Library), 352, 356
DLL [[hell, 352
DNS, 300
and self-documenting infrastructure, 292
as a requirement of IT operations, 280–281
as part of:
compliance and auditing, 437
generating from acceptance tests, 86
vs. automation, 287, 437–438
Domain-[[driven design, 152
Domain-specific languages (DSLs)
definition of, 198
in acceptance testing, 198–204
See also Puppet
Don’t [[repeat yourself]], 358
Done
and acceptance tests, 85
and testing, 101
definition of, 27–28
signoff as part of project lifecycle, 426, 434
Downtime, 260, 436
Dpkg, 294
Duplication, 139
Dynamic view]]s, 403
E
EARs, 159
EC2, 221
Eclipse, 350
Efficiency, 419
Eggs, 155
and components, 358
and mainline development, 392
and monolithic systems, 345
and unit testing]], 180
in acceptance tests, 206–207
acceptance tests, 205
Enterprise governance. See Governance
as part of release strategy, 250
baselines, 51, 155
capacity testing, 234–237, 258
definition of, 277
managing, 49–54, 130, 277, 288–295, 308
production-like, 107, 117, 129, 254, 308
pro[[visioning]], 288–290
re-creatability from version control, 33
shared, 258
staging, 258–259, 330
systems integration testing (SIT), 330
Equivalence partitioning, 86
Escape, 44, 47, 257
Estimates, 428
Eucalyptus, 312, 316
and components, 359
Executable specifications, 195–198, 246, 339, 342
Exploratory testing, 87, 90, 128, 255, 343
and acceptance tests, 125, 210
and integration testing, 96–98
and logging, 320
configuration of, 50
Externals (SVN), 384
Extrapolation in capacity testing, 234
Extreme programming, 26, 266
and CI, 55, 71
F
Fabric, 162
Facter, 291
deployments, 272–273
Failover, as part of the release strategy, 251
Feature branches. See Version control practices
Feature crews, 411
and automated acceptance tests, 86
and dependency management, 369–370
and metrics, 137–140
and monitoring]], 317
and the integration pipeline, 362
as part of project lifecycle, 426
created by deployment pipeline, 106
importance of, 12–16
improving through virtualization, 310
when modeling dependencies, 365
when pipelining components, 360
Filesystem Hierarchy Standard, 165
Filesystem, shared for storing binaries, 166
and cloud computing, 313
and integration testing, 96
configuration of, 118, 284, 300
Fit, 201
Fit for purpose, 421, 426, 442
Fit for use, 421, 427
FitNesse, 191, 196, 201
Flapjack, 318
Flex, 192
Forking. See Version control practices
Forward compatibility, 334
Fr[[agility. See Acceptance tests
Func, 162
Functional tests. See Acceptance tests
FxCop, 74
G
Gantt, 151
Gantt charts, 280
Garbage collection, 247
GAV, 375
Gems, 155
Gentoo, 353
Git, 32, 79–81, 374, 393, 396, 403
GitHub, 79, 394, 411
Given, when, then, 86, 195, 336
Global optimization, 138
Gmail, 313
Go, 58, 113, 126, 255, 373
Google App Engine, 314–315, 317
business, 417
corporate, 417
enterprise, 417
good, 442
GPL (General Public License), 355
Gradle, 151
GUI (Graphical user interface)
and acceptance tests, 192–193
for deployment, 165
layering, 192
See also UI
Gump, 371
H
H2, 336
Handle, 301
Happy path, 85, 87–88, 94
Hardening, 284
virtualization for standardization, 304
Hashing]], 114, 166, 175, 373, 438
Hawthorne effect, 137
Hibernate, 159
Hiding functionality, 347–349
and business continuity planning, 282
as part of the release strategy, 251
HIPAA, 314, 436
Hot deployment. See Zero-downtime releases
HP (Hewlett-Packard]]), 156, 291, 318
HP Operations Center, 287, 296
Hudson, 58, 63, 127, 289
Hyper-V, 290
I
IANA (Internet Assigned Numbers Authority), 320
IBM, 156, 291, 303, 316, 318
IDE (Integrated Development Environment]]), 57, 143, 160
Idempotence
and deployment tools, 161
and infrastructure management, 290–291, 295
of application [[deployment, 155–156
Identification, 422
IIS (Internet Information Services), 299
Impact, 430
Inception, 283, 422–424
Incremental compilation, 146
Incremental delivery, 331, 346–351, 418, 420, 442
Incremental development, 36, 326, 346–351, 367, 405–406, 425, 434
as part of project initiation, 424
definition of, 277
evolution of, 317
managing, 283–287
Infrastructure in the Cloud, 313–314
Initiation, 424–425
In-[[memory database, 154, 180, 336
Installers, 51
Instant messenger, 75
Integrated Development Environment]]. See IDE
and acceptance tests, 210
and databases, 329
and dependencies, 369–370
and infrastructure management, 301
Integration phase, 55, 348, 405, 426, 435
Integration pipeline, 361–363
Integration team, 358
Integration tests, 96–98
Intention]]al programming, 198
Interaction templates, 241–244, 342
in acceptance tests, 200, 207
Interoperability, 316
Inventory, 391, 418
Inversion of control]]. See Dependency injection
IPMI (Intelligent Platform Management Interface), 288, 318
ISO 9001, 437
Isolation in acceptance tests, 205, 220
Issue, 431
Iteration one, 253
and analysis, 193–195
Iterative development, 425
ITIL (Information Technology Infrastructure Library), 421–422
Ivy, 150, 154, 160, 166, 355, 375
J
J2EE (Java 2 Platform, Enterprise Edition]]), 359
JARs, 159, 356, 374
components in, 345
database [[migration in, 328
naming [[conventions in, 158
runtime dependencies in, 354
Javadoc, 149
JBehave, 85, 191, 196
JDepend, 74
Jikes, 146
JMeter, 243
JMock, 181
JMX, 319
JRuby, 151
Just-in-time compiler, 146
K
Kaizen. See Continuous improvement
Kanban, 411
Kick-off meetings, 194
Kickstart, 284, 289
Knuth, Donald]], 228
L
Label, 374
and mainline development, 392, 405
collaboration through components in, 346
in acceptance tests, 190
in software, 359
LCFG, 291
LDAP (Lightweight Directory Access Protocol), 44, 291
and project management]], 427
as a principle of continuous delivery, 27
the cost of not delivering continuously]], 418
Legacy system]]s, 95–96, 306
configuration management of, 38–39, 354–356, 363
definition of, 352
dependency management of, 375
managing as part of development, 62
as part of the release plan, 252
of middleware, 300
Lifecycle, 421–429
Likelihood, 430
Lines of code, 137
Linux, 154, 310, 395
Live-live releases. See Blue-green deployments
Living build, 110
Locking. See Version control practices
and infrastructure management, 301
as a requirement of operations team, 281
importance of, 436
of deployment, 270–271
of infrastructure changes, 287
LOM (Lights Out Management), 288, 318
Lsof, 301
M
Mainline development, 35–37, 59, 346–351, 392, 405–408
Maintainability]]
and mainline development, 406
and quality, 434
of acceptance tests, 190–192
as part of release strategy, 250, 409
of the build system, 174
Make, 144, 146–147
Makefile, 146
Management information base, 320
of hardware, 271
Manual testing, 110, 126, 189, 223, 343
Marathon, 243
Marick, Brian, 84
Marimba, 155
Marionette Collective, 161, 291
Marketing, 252
Maturity model, 419–421
Maven, 38, 148–150, 154, 157, 160, 166, 355, 375–378
analyzing dependencies with, 378
co[[ordinates in, 375
repository of, 375
snapshots in, 377
Maven Standard Directory Layout, 157
McCarthy, John, 312
Mean time]] between failures. See MTBF
Mean time]] to repair. See MTTR
Measurement]], 264, 420
Memory leak]]s, 247
Mercurial, 32, 79–81, 374, 393, 396, 398, 403
Merge conflicts, 386, 390, 415
definition of, 389–390
in branch by feature, 349, 410
in the integration phase, 406
tracking, 385
with distributed version control, 399
with optimistic]] locking, 386
Message queue]]s
as an API, 357
configuration management of, 296
Metrics, 106, 172, 287, 441
as part of deployment pipeline, 137–140
Microsoft, 316, 359
and application [[deployment, 155
configuration management of, 295–300
managing, 130, 284
monitoring]], 318
Mitigation, 430
Mocha, 181
Mockito]], 181
Mocks, 92, 178
Monitoring]]
and business intelligence, 317
applications, 318
as part of the release strategy, 250
importance of, 436
infrastructure and environments, 317–323
middleware, 318
network for, 302
operating systems, 318
requirements for, 281–282
Monolithic architecture, 345, 357
Monotone, 396
MTBF (mean time]] between failures), 280, 286, 440
MTTR (mean time]] to repair), 278, 280, 286, 440
Mythical hero, 108
N
Nabaztag, 63
Nagios, 257, 281, 301, 318, 321
Nant, 148
NDepend, 74
.NET
acceptance tests in, 197
and dependency hell, 353
database [[migration in, 328
Network management system, 319
administration of, 302
and nonfunctional requirements, 229
configuration management of, 300
topology of, 118
virtual, 311
Nexus, 111, 166, 175, 355, 361, 373, 375
NICs (Network Interface Cards), 302
Nightly build, 65, 127
NMock, 181
analysis of, 226–228
and acceptance criteria, 227–228
and cloud computing, 314
and the deployment pipeline, 136
logging, 320
managing, 226–228, 436
release strategy as a source of, 251
trade-off]]s for, 227
virtualization for testing, 305
definition of, 91
in the deployment pipeline, 128
NoSQL, 326
and CI, 63–65
and components, 359
and deployment, 155
O
Object-[[oriented design, 350
Open source, 143
and distributed version control, 81
and Maven, 375
OpenNMS, 281, 301, 318
configuration of, 118
monitoring]], 318
Operations, 105, 279–283, 428–429
See also DevOps
Operations Manager, 281, 301, 318
Opport[[unity]] cost, 300
Oracle, 154, 320
Orchestration, 257–258, 329–331, 333
Organizational change, 419
OSGi, 350, 354–356
Out-of-band management, 288, 318
Overdesign, 228
P
Packaging, 296
and configuration, 41
as part of:
deployment pipeline, 135, 283
integration, 361
tools for, 154–155
Panopticode, 139
Patches, 251
Patterns and nonfunctional requirements, 230
PCI DSS]], 314, 436
Perforce, 385
and governance, 417
definition of, 225
of acceptance tests, 218–222
tuning, 247
Perl, 155, 283, 356
Pessimistic locking, 386–387
Plan, do, check, act. See Deming cycle
Platforms in the Cloud, 314–315
POM, 375
Postfix, 293
Potemkin village, 351
PowerShell, 162, 282, 299
Preconditions in acceptance tests, 206
Predictability, 419
Premature optimization, 228
Preseed, 284, 289
Pretested commit, 37, 67, 120, 171
Pricing, 252
Primary key]]s, 329
as part of project lifecycle, 427
of defects, 101
of nonfunctional requirements, 226
of requirements, 422
and acceptance tests, 206
and nonfunctional requirements, 229
Procurement, 283
Production environment]]s
and uncontrolled changes, 273
logging in to, 160
Production readiness, 346–351, 426
Production sizing, 251
Production-like environments, 107, 117, 129, 308
characteristics of, 254
Productivity]], 50, 82, 173
Product-oriented build tool s, 145
Project manager]]s, 428
Project structure for JVM and .NET projects, 157–160
Promotion, 46, 254–257, 402, 406
Pro[[visioning]], 288, 290–295, 303
Psake, 151
Pulse, 58
Puppet, 51, 53, 118, 155–156, 161, 284, 287–288, 290–296, 300, 306, 323
Push-button deployment, 17, 112, 126, 135, 157, 255, 315
PVCS (Polytron Version Control System), 386
PXE (Preboot eXecution Environment), 288–290
Python, 147, 155, 283
Q
Quality, 12, 62, 418, 422, 434–435
attributes of, 227
Quantifiers, 376
Race condition, 136
RAID, 374
Rake, 150, 150–151
rBuilder, 305
RCS (Revision Control System), 32, 382
RDBMS (Relational Database]] Management System), 314, 326
Rebasing, 394, 414
for acceptance testing, 191, 197
for capacity testing, 239, 241
of database transactions, 332
Re[[covery]] point]] objective, 282
Re[[covery]] time]] objective, 282
Redeployment as a way of backing out, 132, 259–260
RedHat Linux, 154, 284
acceptance tests, 192, 218–219
and branch by abstraction, 350
and CI, 72
and mainline development, 406
and version control, 36
as part of project lifecycle, 426
as pre[[requisite for quality, 427
enabled]] by regression test]]s, 87
Referential constraint]]s, 329
and continuous delivery, 349
as a symptom of poor application quality, 434
caused by uncontrolled changes, 265
on legacy system]]s, 96
Regression test]]s, 87, 124, 128, 189
Relative paths in build scripts, 164
as part of deployment pipeline, 110
automating, 129
maintenance of, 409
managing, 107, 419–421
modeling the process of, 254–257
Release branches. See Version control practices
and acceptance test gate, 124
definition of, 22–24
lifecycle of, 132
Release plan, 129, 251–252, 281, 283, 423
Release strategy, 250–252, 423, 430
Remote installation, 288
Repeatability]], 354
Repository pattern, 335
of the operations team, 279–283
release strategy as a source of, 251
Resilience, 316
for deployment, 271
for fixing the build, 70–71, 174
of developers to understand operations, 281
Rest, 197
Retrospectives, 16
as part of:
continuous improvement, 28, 420, 441
risk management, 431
to enable collaboration, 440
Revenue, 264, 316–317
Reverse-engineering, 299
Reverting, 435
Revision control. See Version control
Rhino, 181
and nonfunctional requirements, 225
and organizational maturity, 420
management of, 417, 429–432, 442
of deployment, 278
of development, 430–431
of releases, 4–11, 279
through continuous delivery, 279
through continuous deployment, 267
through retrospectives, 431
through virtualization, 303
Roles, 424
and artifacts, 373
and legacy system]]s, 252
automating, 10
frequent, and poor configuration management, 436
of databases, 328, 331–334
reducing risk of releasing with, 109
strategies of, 132, 259–265
Roll forward of databases, 328
R[[outers, 263
and blue-green deployments, 261
configuration management of, 300
rPath, 305
RPM, 294, 299
RSA, 273
Ruby, 155, 283
Runtime optimization, 245
S
Sad path, 88
Sahi, 134, 197
SAN, 374
Sarbanes-Oxley. See SOX
Scalability testing, 231
through cloud computing, 313
SCCS (Source Code Control System), 32, 382
Scenarios, in capacity testing, 238
SCons, 147
Scp, 162
Screen recording, 136, 213–214
Scripting and the deployment pipeline, 152
Scrum, 422, 427
Seams, 350
and cloud computing, 313
and configuration management, 43
and monitoring]], 322
as a nonfunctional requirement, 423
as part of a testing strategy, 91
holes in, 131
of infrastructure, 285–286
Selenium, 197
Selenium Grid, 221, 310
Selenium Remoting, 221
Self-service deployments, 112, 255
Senior responsible owner, 422
Service asset and configuration management, 421
Service continuity planning, 282
Service testing and validation, 421
Service transition, 421
Service-[[level agreements. See SLA
Service‐oriented architectures
and databases, 329
and deployment, 156, 258
and environments, 278
promoting, 257
Severity, 430
Sevice continuity planning, 423
Shadow domains. See Blue-green deployments
Shared filesystems as artifact repositories, 375
Shared [[library, 352
Shared understanding, 423
Shared-no[[thing architectures, 264, 313
as a form of manual testing, 90
as a risk mitigation strategy, 433
Side-by-side deployment, 262
Silos
and components, 358
and deployment, 8
development and operations, 279
Simian, 74
S[[implicity]] and nonfunctional requirements, 229
Simulation for capacity testing, 239
Skype, 75
SLA (service-[[level agreements), 128, 251, 280, 314, 331
unit test]]s and test doubles, 89
and behavior-driven monitoring]], 323
and infrastructure management, 301
and legacy system]]s, 95
and orchestration, 258
as part of:
acceptance test suite, 217
integration pipeline, 361
for blue-green deployments, 261
for deployment, 273
for deployment scripts, 167, 255
SMTP (Simple Mail Transfer Protocol), 285, 300
in Maven, 377
of virtual machines, 305
SNMP (Simple Network Management Protocol]]), 302, 319
Software Engineering]] Institute, 227
Solaris, 284
Source control. See Version control
SOX (Sarbanes-Oxley), 280, 436
Specifications. See Acceptance criteria
Spies, 92
Spikes, 382, 425
Splunk, 318
Ssh, 162, 302
Stabilization phase, 347
Stabilizing the patient, 129, 286
Staging environment, 258–259, 290
Stakeholders, 422
in acceptance tests, 204–206
in middleware, 298–299
in unit test]]s, 179, 183
Static [[analysis, 331
Static compilation, 353
Stored procedures, 334
and acceptance criteria, 195
and acceptance tests, 85, 99, 188, 193
and components, 358
and defects, 101
and legacy system]]s, 95
and nonfunctional requirements, 227–228
and throughput, 138
INVEST, 93
Strategy pattern, 351
Stubs, 92, 178
for developing capacity tests, 244
Subversion, 32, 383–385, 397
Sun, 294, 359
Sunk cost, 300, 349
as part of:
SuSE Linux, 154
Sweeping it under the rug, 351
Symbolic link]]s, 260, 269, 271, 294
System Center Configuration Manager, 291, 296
System characteristics, 226
T
and releases, 409
in CVS, 383
in Subversion, 384
See also Version control practices
Tarantino, 328
Task-oriented build tool s, 145
TC3, 314
and acceptance testing, 214
and components, 357
does continuous delivery scale?, 16
See also Large [[teams
Templates, 305, 309–310
Temporary table]]s, 329, 332
Test automation pyramid, 178
Test coverage]], 87, 121, 174, 435
application reference data, 340, 343
de[[coupling from tests, 336
functional partitioning, 337
in acceptance tests, 339–341
in capacity tests, 243, 341–342
managing, 334–338
and acceptance tests, 210–212
and unit test]]s, 180–183, 335
speed of, 89
and databases, 335–336
increasing through virtualization, 305, 310
Test sequencing, 336
Test-[[driven development]], 71, 178, 427
See also Behavior-driven development
Testers, 193
Testing quadrant diagram, 84, 178
as part of inception, 423
importance of, 434
legacy system]]s, 95–96
midproject, 94–95
Tests, 105
failing, 308
isolation of, 336–337
manual, 126, 128, 138, 189, 223, 343
sequencing, 336
types of, 84
See also Automated tests, Manual testing
TFTP (Trivial File [[Transfer Protocol), 289
Thread pools, 318
and application performance, 230
catching problems with acceptance tests, 189
Thresholds in capacity tests, 238
Throughput, 225, 231
Timeouts and acceptance testing, 207–210
Tivoli, 287, 291, 318
TODOs, 74
Toolchain]]
and testing environments, 254
and the deployment pipeline, 114
and artifact repository, 373
and dependencies, 363
and the deployment pipeline, 114
and the integration pipeline, 362
from binaries to version control, 165–166, 418
managing and enforcing, 438–439
when pipelining components, 360, 366
Trade-off]]s for nonfunctional requirements, 227
Transactions for managing test state, 337
Trunk. See Mainline development
Trust and dependency management, 369
Tuple, 43
Turing completeness, 198
Twist, 85–86, 191, 196
Two-phase authentication, 273
U
Ubiquitous language, 125
Ubuntu, 154, 353, 394
and unit testing]], 178–179
See also GUI
Uncontrolled changes, 20, 265, 273, 288, 290, 306
Undeployable software, 105, 391
Union filesystem, 400
Unit test]]s, 89
and asynchrony, 180
and CI, 60
and databases, 179–180, 335–336
and dependency injection, 179
and state, 183
and UI, 178–179
automating, 135
principles and practices of, 177–185
speed of, 89, 177
vs. acceptance tests, 188
and deployment scripting, 153
and user-installed software, 267–270
as part of:
and nonfunctional requirements, 228
testing, 87, 90, 128, 255
Use cases and acceptance tests, 86
User acceptance testing, 86, 135
and test data, 343
in the deployment pipeline, 112
and acceptance testing, 125
and continuous delivery, 267–270
and deployment automation, 129
testing using virtualization, 310
Utility, 421
V
Value stream, 106–113, 133, 254, 420
Velocity, 139, 431, 433
and middleware configuration, 296, 298, 301
as a principle of continuous delivery, 25–26
as part of project initiation, 424
as pre[[requisite for CI, 56–57
definition of, 32
distributed. See Distributed version control
for libraries, 38, 354
forking, 81
importance of regular check-ins for, 36, 59, 405
locking, 383
mainline. See Mainline development
stream-based development, 405
Views, 334, 403
and blue-green deployments, 262
and deployment scripting, 155
and orchestration, 258
and pro[[visioning]] servers, 303
and the deployment pipeline, 304, 307–310
baselines, 53, 305
definition of, 303
for acceptance tests, 217, 220
for creating testing environments, 254
for environment management, 118
for infrastructure consolidation, 304
for managing legacy system]]s, 306
for speeding up tests, 305, 310
for testing nonfunctional requirements, 305
for testing user-installed software, 310
managing virtual environment]]s, 305–307
of networks, 311
reducing risk of delivery through, 303
Snapshot, 305
templates for, 305
Visibility, 4, 113, 362
Visual Basic, 271, 345
Visualizations, 140, 366
Vnc2swf, 136, 213
W
Walking skeleton, 134
Warm-up period, 245, 259, 261, 272
Warranty, 421
WARs, 159
Waste, 105, 391
Web server]]s, 296
Web service]]s
as an API, 357
WebSphere]], 153
White, 197
and acceptance tests, 125
and delivery, 28
and deployment, 271
Wikipedia, 313
Window driver pattern, 201–204
Windows, 154, 310, 352
Windows Deployment Services, 288–290
Windows Preinstallation Environment, 290
Wireshark, 301
WiX, 283
Word[[Press, 313
and distributed version control, 396
and the deployment pipeline, 111
of acceptance testing stage, 187
Works of art, 49, 288–289, 306
Works on my machine syndrome, 116
WPKG, 291
X
Xcopy deployment, 353
XDoclet, 158
XML (Extensible Markup Language]]), 43, 147, 297
XUnit, 135, 191, 200
Y
YAGNI (You ain’t gonna need it!), 245
YAML, 43
Yum, 294
Zenoss, 318
Fair Use Sources
CI/CD: Continuous, Continuous Integration / Continuous Delivery, Continuous Deployment. Key Book: Continuous Delivery - Reliable Software Releases through Build, Test, and Deployment Automation
Introduction to Continuous Delivery, Configuration Management, Continuous Integration, The Deployment Pipeline, Automated Testing, Quality Assurance in Continuous Delivery, Managing Data in Continuous Delivery, Version Control for Everything, Build and Deployment Scripting, Environments on Demand, The Role of QA, Decoupling Deployment from Release, Managing Infrastructure and Environments, Monitoring and Feedback Loops, Implementing Continuous Delivery, Cultural and Organizational Change, Scaling Continuous Delivery, Advanced Continuous Delivery Practices, CI/CD Case Studies, CI/CD Conclusion
Continuous Delivery, Automation, Software Development, Build, Test, Deployment, Continuous Integration, Automated Testing, Deployment Pipeline, Configuration Management, Version Control, Quality Assurance, Infrastructure as Code, Monitoring, Feedback Loops, Cultural Change, Organizational Change, DevOps, Build Scripts, Deployment Scripts, Unit Testing, Integration Testing, Acceptance Testing, Performance Testing, Security Testing, Code Quality, Code Review, Feature Toggles, Branching Strategies, Merge Conflicts, Build Tools, CI/CD Tools, Virtualization, Containerization, Docker, Cloud Computing, AWS, Azure, Google Cloud Platform, Microservices, Database Management, Schema Evolution, Data Migration, Environment Management, Production Environment, Staging Environment, Development Environment, Load Balancing, Rollback Strategies, Zero Downtime Deployment, Scalability, Reliability, High Availability, Risk Management, Change Management, Release Management, User Acceptance Testing, Feature Branching, Mainline Development, Trunk-Based Development, Artifact Repository, Log Management, Incident Management, Post-mortem Analysis, Compliance, Regulatory Requirements, Software Licensing, Open Source Software, Third-party Dependencies, Build Optimization, Test Automation Frameworks, Scripting Languages, System Administration, Networking, Data Storage, Encryption, Authentication, Authorization, API Design, Service-Oriented Architecture, Legacy Systems, Technical Debt, Documentation, User Documentation, Developer Documentation, Operational Documentation.
Continuous Integration, Continuous Deployment, Continuous Delivery, Jenkins, GitLab CI/CD, GitHub Actions, CircleCI, Travis CI, Bamboo, TeamCity, Azure DevOps, CodePipeline, CodeBuild, CodeDeploy, Spinnaker, IBM UrbanCode Deploy, Argo CD, Tekton Pipelines, JFrog Artifactory, SonarQube, Docker in CI/CD, Kubernetes in CI/CD, Infrastructure as Code, Configuration Management Tools, Automated Testing in CI/CD, Deployment Strategies, Monitoring and Logging in CI/CD, Security in CI/CD, Microservices and CI/CD, CI/CD for Machine Learning, GitOps, Artifact Repository Management, Build Automation, Test Automation, Deployment Automation, Pipeline as Code, Environment Management, Feature Flag Management, Canary Releases, Blue/Green Deployments, Rollback Strategies, Load Testing in CI/CD, Performance Testing in CI/CD, Integration Testing in CI/CD, Service Virtualization, Secrets Management in CI/CD, Cloud-Native CI/CD, DevSecOps, Version Control Systems, Code Review Practices, CI/CD Metrics and KPIs, Container Orchestration in CI/CD, Serverless Deployments in CI/CD, Compliance in CI/CD, UI Testing in CI/CD, Mobile CI/CD, CDN Integration in CI/CD, Database Changes in CI/CD
Software Release Lifecycle, Software Development Lifecycle, Continuous Integration vs. Continuous Delivery vs. Continuous Deployment, Continuous X, CI/CD Tools, Continuous Improvement, DevOps, DevSecOps, Automation: Pipelines, Automation over Documentation, Artifact Repository, Build Automation - Automated Build - Build Pipeline, Build Server, Test Automation - Automated Testing, Change Management, Configuration Management, Deployment Pipeline; Delivery Ecosystem, Scripting (Build Scripting, Deployment Scripting), Version Control (Git, GitHub, GitHub Alternatives), CI/CD and Serverless - CI/CD and SRE - Cloud Native and CI/CD - CI/CD for Microservices - CI/CD Security - CI/CD and DevSecOps, CI/CD for Data Science - CI/CD and Databases, CI/CD for Machine Learning, CI/CD Bibliography (Continuous Delivery by Jez Humble and David Farley), CI/CD Courses, CI/CD Glossary, Awesome CI/CD, CI/CD GitHub, CI/CD Topics. (navbar_cicd - see also navbar_devops, navbar_iac, navbar_gitops)
© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.