Sei sulla pagina 1di 1

Continuous Integration its about scalable, automated, open, continuous,

and interative processes


CI ELEMENTS
dependency

THE INSPIRATION
assumption is the mother of all screwups - wetherns law of suspended judgement developing good software comes down to consistently carrying out fundamental practices (regardless of the technology) - paul m. duvall

THE CI PROCESS

Lack of cohesive, deployable software Late defect discovery sound Low quality software familiar? Lack of project visibility
these problems are a result of not managing risks.

TAME PROJECT RISK

quality means doing it right when no one is looking. asking people to type in - henry ford strange commands is a waste of time and a CI BENEFITS breeding ground for - constantly produce deployable software mistakes - martin fowler

management communication testing nothing deploying is secret! packaging nothing building is manual! versioning

- improves the projects development process - increases and scales team communication - increases the quality of the project - increases collective confidence in the codebase CI DEVELOPER PROCESS - decreases bug lifespan - loosely coupled IDE & build process - reduces common project risks - err to all build dependencies in the VCS - improves project time/cost/quality management - run private builds frequently - increases visibility of project quality metrics - write automated tests - functionality (ie. latest code builds/runs right?) - dont commit broken code - performance (vs. goals and to detect new issues) - commit frequently! make small changes - complexity (eg. KLOC, full dependency tree) and commit after each task - testing and documentation coverage OPTION TO TREAT DIFFERENT BRANCHES - fix broken builds immediately OF THE SOURCE - enjoy better, more frequent feedback REPOSITORY IN (including resource utilization/load/ PROCESS DIFFERENT CI OPERATIONS performance testing metrics, and WAYS ation - formalize, version and automate the instanti regression testing) - I.E. MORE OR - enjoy simple deployment (a non-event), of deployment environments LESS TESTS - focus on measurable properties and issues less manual processes, and more DIFFERENT - enjoy automated resource utilization metrics chance to work on interesting things RULES TO ACCEPT A - the capability to overcome resistance - use the ci developer process... COMMIT (from other team members) to CONTINOUS INTEGRATION IS implement improvements by using TECHNICAL, ORGANIZATIONAL, CULTURAL automated mechanisms. (AN ATTITUDE, NOT A TOOL) - avoid silos (monopolies-of-knowledge)

- detect changes - build == code assembly/verification/analysis MAINTAIN THE - compile code and maybe build documentation ABILITY TO RELEASE - deploy to testing environment - test AT ANY TIME - unit testing at business/data/common layers - code style enforcemcent - load/performance testing - regression testing - security testing - component/subsystem testing - environment testing - inspect - label and package - deliver feedback to inspire changes - optionally deploy to staging/prod environments IF A WORKERS EFFORT IN

NOT A CA T FOR INTE CH-ALL GR PROBLEM ATION S PRETTY C ... BUT LOSE.

CI QA PROCESS
-

HER EIGHT-HOUR DAY IS TIED UP IN EIGHT HOURS OF MANUAL TASKS, THERE IS run faster tests first (fail early) ABSOLUTELY NO TIME LEFT FOR all tests/inspections must pass MONITORING THE test always, not sporadically PROCESS AND write automated tests that are able THE PRODUCT, PLANNING to reproduce every single defect IMPROVEpopulate version control with test data MENTS, AND enjoy automated regression testing SO ON....

BEWARE! ACHTUNG!

DANGER! XIAOXIN!

Projects that do not embrace this practice may wait until immediately prior to delivery to integrate and test the software. This can delay a release, delay or prevent xing certain defects, cause new defects as you rush to complete, and can ultimately spell the end of the project.

! PERIGO!

ADVERTENCIA!

Potrebbero piacerti anche