ci-Continuous Integration (1)-Software industry "pipelining" Overview 1 overview
Continuous integration (continuous integration) is a software development practice in which team development members often integrate their work, with each member being integrated at least once a day, which means that multiple integrations may occur on a daily basis. [1] Each integration is validated with automated builds (including compilation, release, automated testing) to identify integration errors early.
Continuous Integration is equivalent to applying the idea of a conventional industrial assembly line operation to the modern software industry . The difference is that the industrial pipeline eventually comes out as a product replicator, but the software pipeline ultimately comes out of a generation of newer iterations, but the common denominator is that the efficiency of the overall output will be greatly increased.
First of all, the CI solves the problem:
Product iterations for small steps
High-frequency version release
System integration anytime, anywhere
Stable System Evolution Roadmap
These are the goals that are required in modern agile Software engineering theory.
[1] |
Baidu Encyclopedia. Continuous integration. 2015 |
2 Development model changes
The various roles of the traditional development collaboration model:
Engage in functional development of software products
Writing Unit Test scripts
Functional validation in a simple development phase
Development staff
Writing test Cases
Comprehensive functional verification in the integration phase
Build a test environment with developer deliverables
Perform functional testing
Some automated tests
Test personnel
And in the traditional process, there are the following characteristics:
In addition to the developer, the other roles are largely manual or mostly manual , with low transaction efficiency
Development and communication basically by word of mouth or mail/qq, communication cost is big
Most practitioners always do repetitive and tedious work, without the technical growth of
The lack of accumulation of practical activities, each time is the same from the beginning of the same artificial repetition
After the introduction of the Continuous integration of engineering ideas, the following changes will occur:
In other words, all the characters have to be first a developer and then a person in the xx field . This model in the current IT intelligence-intensive internet industry is particularly obvious, in some major online recruitment platform can see big Internet company recruitment information is basically:
Test Development Engineer
Release Development Engineer
Operations Development Engineer
And then the pay treatment is the developer's treatment, and even now many of the company's staffing is part of the developer's list.
In the Internet industry, the software development model has changed from the traditional software engineering to the Agile Software Engineering , the corresponding method of realizing this thought also changes, so the skill requirements of the corresponding practitioners should be changed.
In other words:the field of IT industry positions, must master the development skills, if not to make some changes and promotion, then the next phenomenon is the development of the entire group of people began to occupy the field of it class positions .
3 Continuous Integration practices
The typical tool for continuous integration is the open source system Jenkins. Through the research on the application of Jenkins Tools, a full-line software development diagram is drawn, as follows:
650) this.width=650; "Src=" http://images2015.cnblogs.com/blog/111649/201512/111649-20151228202150417-682257350. PNG "style=" margin:0px;padding:0px;border:0px; "/>
Pre- CI Environment Preparation:
Feature developers develop good product feature codes
Publishers develop automated build and release code
Testers develop automated test code.
Combine these toolchain with the Jenkins tool to successfully debug your pipeline and build all your environments.
The above is equivalent to the establishment of the CI system, there will be a certain amount of technical input, but the subsequent iterative process, is to recover these costs.
Post-Iteration Workflow:
The developer specifies a branch to the GIT server to submit new code
The webhook of a git server receives a commit event and initiates a request to the Jenkins server to specify an interface to execute the build script
Synchronizing code from a git server
Execute an automated build script to generate deliverables
Automatic test Environment Setup
Jenkins executes automated test scripts Jenkins initiates a request to an automated release system to automate the publishing system for automatic grayscale publishing triggering automated test systems to be released gradually throughout the network
Basically, the above steps can be fully automated unattended completion. The whole process is efficient and error-prone, compared to the manual production mode, the continuous integration means will greatly reduce the cycle of each iteration, ensure that the overall project can be at a very small pace and very high frequency of steady evolution.
4 Stage Summary
This article as the beginning of the series of continuous integration , there are some emphasis on the theoretical part, in order to let everyone understand the overall structure, but also to establish a modern software engineering overall concept.
The following sections will focus on the environment and the development of the corresponding environment code, and finally can form a complete set of continuous integration system to provide productivity.
ci-Continuous Integration (1)-Software industry "pipelining" overview