A toolchain automates software development processes by linking several software applications (tools). The goal is to use specialized tools for individual tasks. The automated processes reduce the susceptibility to errors and increase quality and efficiency.
Depending on the use case, toolchains consist of different components. However, the principles are always the same, regardless of whether a toolchain is used for Continuous Integration, Continuous Delivery or DevOps.
Advantages and disadvantages of automated processes
Automated processes have two advantages. First, fewer manual steps minimize sources of error. Second, efficiency increases because once a process is automated, no more work time is needed for it. This also leads us to the disadvantage of automation: the setup can be very time-consuming. Therefore, it is important not to automate everything, but to weigh and prioritize which steps should be automated.
Continuous Delivery Toolchain
- Source Code Management: A tool to manage source code in repositories.
- Build Server: A tool for performing builds. The build server is usually the central component of a toolchain. It fetches data from e.g. the SCM tool to perform the build and initiates subsequent steps such as deployment or functional tests.
- Artifact Repository: A tool for storing binary artifacts. These can be releases of the product, libraries or software components.
- Issue Tracking and Project Management: Tools for managing issue tickets and project management.
- Knowledge Management: Tools for managing information and knowledge, for example in the form of a wiki.
- Test automation: Tools and frameworks for automatic testing of changes.
- Server configuration and monitoring: Tools for automatic deployment of releases and monitoring of operations.
There is a wide range of tools for all these categories, each with their own advantages and disadvantages.
Example of a toolchain
The Cloudogu EcoSystem is a platform that runs tools for software development. There are many integrated tools that can be selected in the setup.
These tools can be used to cover the entire software development life cycle:
- Source Code Management: SCM-Manager (management of Git, SVN and Mercurial repositories.)
- Build Server and Deployment: Jenkins
- Test automation: SonarQube
- Artifact Repository: Nexus Repository
- Issue Tracking and Project Management: Redmine or JIRA
- Knowledge Management: Smeagol or Confluence
- Application management: Portainer
These tools already form a professional toolchain that is easily extensible.
In addition to simply providing the tools, the Cloudogu EcoSystem also offers the advantage of low administration overhead for installation and ongoing operation. Details can be found in this blog post.