In recent years, the term pipeline has been strongly influenced by the topic of DevOps in connection with software development. In general, a pipeline in software development stands for the sum of all activities that lead from an idea to the operation of this idea. In relation to DevOps, the pipeline often corresponds to a Continuous Delivery pipeline, which has been extended by further mechanisms for monitoring and communication between operation and development of the software.
Building a DevOps pipeline
To build a pipeline, the existing processes must be analyzed and documented (who does what and with what?). Once all the steps have been recorded, the company's own pipeline can be optimized. To do this, in the spirit of DevOps, these questions must be asked:
- What exactly are we doing in this step?
- How well does it work?
- What can we do better?
Based on the answers, you can then start implementing improvement measures, e.g. by automating steps or selecting more suitable tools.
Components of a pipeline
Essentially, every pipeline in software development includes these steps:
- Planning of changes to the software
- Issue tracking
- Writing code
- Unit tests
- Integration tests
- Functional tests
- To a testing server (staging)
- To a productive server
Tools of a pipeline
These steps are implemented with the help of tools.
- Ideas for changes can be collected and elaborated in an issue tracker or wiki.
- Code is written using an IDE and stored in a version control tool.
- Builds are performed using a build server. It also runs automated tests itself or triggers a code analysis tool. Finally, the build server deploys the software to a server or places the build in an artifact repository.
A simple way to run the tools of a pipeline is to use the Cloudogu EcoSystem. It is a platform for tools that are commonly needed for a pipeline. The advantage of the platform is that it can be run and extended with little effort.
An example of a very simple pipeline is this one:
- Code is stored in the SCM-Manager tool.
- The build server Jenkins executes builds and unit tests. It also triggers a static code analysis by SonarQube and finally stores the application versioned in Nexus repository.
As needed, this pipeline can be extended to include issue trackers such as Redmine, Easy Redmine or JIRA, wikis such as Smeagol or Confluence, a database management system like Cassandra, a requirements management tool like Fidelia or container management with Portainer.