The introduction

Software that can be integrated and delivered is valuable to the customer or the demand side.

Every piece of software has an integration process, and if the software is small, for example, with only one person and no external dependencies, then integration is fine. As software becomes more complex, more dependent, and more developers, early integration and frequent integration can expose problems as early as possible and make corresponding adjustments to prevent problems from being discovered later in the software, resulting in software failure.

define

Martin Fowler defines continuous integration as follows:

Continuous integration is a software development practice in which team development members integrate their work frequently, usually at least once a day per member, which means that multiple integrations may occur per day. Each integration is verified by an automated build (including compilation, release, and automated testing) to find integration errors as quickly as possible. Many teams find that this process greatly reduces integration problems, allowing teams to develop cohesive software more quickly.

advantages

  • Reducing software risk Early integration, frequent integration, and effective testing can help expose problems and software defects as early as possible and understand the health of the software. Assuming less software is better for maintenance and new business development. If botslab each category of equipment branch development alone, not integrated in time to come in, rely on reuse, conflict, business problems cannot be solved as soon as possible, accumulated to a certain degree of the problem to solve the cost would be bigger, business development is not to make way for the code refactoring, then lower quality software is inevitable, a lot of project is such a failure
  • Reducing repetitive processes The process of software integration looks simple, but it is difficult to do. The repetitive work of compiling, testing, reviewing, deploying, and responding to software is time-consuming and pointless, and automated integration frees up development to do the brainwork. Omissions can lead to additional workload and misjudgment of project quality for downstream participants. The quality of software output affects project planning, so automation is an important part of continuous integration
  • Generating deployable software anytime Continuous integration has the obvious benefit of being able to export deployable software anytime, anywhere, for either the demand side or the customer. We can talk to the customer about how well the software is built and how high quality the code is, but to the customer, a usable software is his real asset. Continuous delivery can expose product problems and development direction early, so that customers can give effective feedback and development focus.
  • Software is transparent continuous integration generates software build status and quality information, and often integration can see some trends and predict some software quality trends.
  • Team confidence Continuous integration builds the team’s confidence that the developer knows clearly what impact their code has had, tests the stability of the predicted software quality, and that the product or customer can rest assured of the requirements

steps

  1. Unified code base
  2. An automated build
  3. Automatic test
  4. Everyone submits code to the repository master every day
  5. Each code delivery triggers a build on the continuous integration server
  6. Fast build
  7. Simulate automated testing in a production environment
  8. Everyone has easy access to the latest executable applications
  9. Everyone is aware of what is happening
  10. Automated deployment

The principle of

  1. All developers need to do local builds on the local machine and then commit to the version control repository to ensure that their changes do not cause continuous integration failures.
  2. Developers submit code to the version control repository at least once a day.
  3. Developers need to update code from the version control repository to the local machine at least once a day.
  4. A dedicated integration server is required to perform integration builds, many times a day.
  5. 100% pass every build.
  6. Each build produces a releasable product.
  7. Fixing failed builds is the highest priority.