DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. The CI/CD Infrastructure: My Recommended Tools

The CI/CD Infrastructure: My Recommended Tools

Learn the characteristics of the best tools in the CI/CD pipeline, from source code repos to continuous integration and code quality tools.

Evgeny Mekhanikov user avatar by
Evgeny Mekhanikov
·
Aug. 02, 18 · Opinion
Like (12)
Save
Tweet
Share
24.67K Views

Join the DZone community and get the full member experience.

Join For Free

In my last article, I detailed CI/CD best practices for improving your code quality. Now, I want to explain how to set up a CI/CD pipeline: choosing tools, installation, and execution. In this blog post, I will recommend tools for the pipeline. Next time, I will explain about installation and execution. Let's get started.

CI/CD Infrastructure Tools

When setting up a CI/CD pipeline, the first thing we need to do is to create our infrastructure. This blog post will explain which types of tools you need to install and the tools I recommend for each type. Let's get started.

For a CI/CD pipeline, we need to install:

  • A source code repository;
  • Continuous integration software;
  • Code quality tools;
  • A repository manager to store binary artefacts (optional);
  • A communication tool (optional).

There are lots of mature open source tools to choose from.

Source Code Repository

The Source Code Repository is used in the pipeline as a place from which to take the source code for processing: building, testing, deploying and so on. You can choose between a SaaS service like GitHub, GitLab, or Bitbucket, which have free plans, or a self-hosted service (when you take GitLab and install on your server), which is more secure.

The best tool, in my opinion, is GitLab. It has an integrated issue tracker, a CI/CD tool, so you can build code similar to Jenkins right on GitLab, code coverage, auto deploy, Jira integration, a container registry a secure and private registry for Docker images), a wiki and many more features.

Here is a screenshot of the GitLab projects screen:

Continuous Integration Software

Continuous Integration Software is used for the implementation of the CI/CD pipeline. The best open source tool for CI/CD in my opinion, which is also the most popular one, is Jenkins CI. Jenkins has a huge amount of plugins for almost everything and also has great integration with IDEs like Eclipse and IntelliJ Idea.

Here is a Jenkins Job screen:

Code Quality Tools

A CI/CD pipeline is an implementation of the development process. The pipeline can be used to automate the development process, to make it faster, cheaper and less error-prone (humans make more mistakes and more often than robots). So, if code quality is important for your development process, you need to integrate your CI/CD pipeline with some Code Quality Tool.

Code quality tools are useful for displaying the estimation of code quality - easy and understandable visualizations of different code quality aspects: code coverage, tests failures, static code analysis and so on.

The most popular tools for checking code quality are static code analyzers like PMD, checkstyle, FindBug, and Checkmarx. Jenkins CI has plugins or interactions with these tools.

I would recommend SonarQube because it has a great integration with IDEs like Eclipse and IntelliJ Idea and you can see all code violations in real time in real time.

This is what the sonarlint and IntelliJ Idea integration looks like:

Binary Repository Manager

The binary repository manager is used to store binary artefacts. A CI/CD pipeline usually works like this: take the source code from the Source Code Repository, build it, test it, create versioned binary artefacts and put them in the Binary Repository Manager. After that, if required, the CI/CD pipeline can take the binaries that were already created from the Binary Repository Manager, and deploy them to an environment (like test, dev, staging or prod environment).

In other words, the Binary Repository Manager is required if you want to deploy the same binary to many environments, instead of building it again and again. After all, it is faster to deploy binaries that were already created than build new ones each time. The repository can also be used to deploy scripts. So, you can store Docker images in the repository and deploy them to a Kubernetes cluster, for example.

There are plenty of open source Binary Repository Managers. You can consider Sonatype Nexus Repository or Archiva. Here is comparison table of them.

Here is a screenshot of Archiva:

Communication Tool

A communication tool is useful in a CI/CD pipeline because it enables an immediate reaction on your side. For example, if the CI/CD pipeline sends a notification to a Communication Tool (like chat or email) when something went wrong, or when a new version of the software was deployed and it is ready for testing. In the second case, for example, the tester can start testing immediately to decrease the development cycle, which is the time between when the feature appeared in TODO until it was deployed to production. You can also use BlazeMeter to add automated performance testing to your CI/CD pipeline and cut out manual interference altogether.

I recommend open source RocketChat because it is mature, open-source, and has great integrations with other tools. I know many people prefer Slack; here is a comparison between them.

Here is what RocketChat looks like:

That's it for now! Next time we will explain how to install my chosen tools: GitLab, Jenkins CI, SonarQube and Rocket.chat, and how to execute them in one pipeline.

Running BlazeMeter in Your CI/CD Pipeline

Your performance tests should be part of your Continuous Integration Pipeline, to ensure that any code change doesn't degrade performance. You can add BlazeMeter to Jenkins with the BlazeMeter Jenkins Plugin, or to other CI tools through plugins or through our API. Then, run your tests and analyze with BlazeMeter's insightful reports.

This is the Jenkins integration:

Continuous Integration/Deployment Open source Pipeline (software) Repository (version control) intellij Infrastructure Integration Binary repository manager Jenkins (software)

Published at DZone with permission of Evgeny Mekhanikov, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Introduction to Spring Cloud Kubernetes
  • DevOps for Developers: Continuous Integration, GitHub Actions, and Sonar Cloud
  • Chaos Engineering Tutorial: Comprehensive Guide With Best Practices
  • How To Choose the Right Streaming Database

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: