23 CI/CD Tools

      CI/CD is one of the best practices for DevOps teams to implement. It is also an agile methodology best practice, as it enables software development teams to focus on meeting business requirements, code quality, and security because deployment steps are automated. In this article, we will discuss various 23 CI/CD tools and their features in brief.

1. Jenkins

Jenkins is the leading open-source automation server and also Continuous Integration tool. Built with Java, it provides over 1,700 plugins to support automating virtually anything. Jenkins allows seamless, ongoing development, testing, and deployment of newly created code. Continuous Integration is a process wherein developers commit changes to source code from a shared repository, and all the changes to the source code are built continuously. This can occur multiple times daily. Each commit is continuously monitored by the CI Server, increasing the efficiency of code builds and verification. This removes the tester’s burdens, permitting quicker integration and fewer wasted resources. Some of the key features of Jenkins includes:

  • Jenkins is a platform-agnostic, self-contained Java-based program, ready to run with packages for Windows, Mac OS, and Unix-like operating systems.
  • Jenkins is easily set up and configured using its web interface, featuring error checks and a built-in help function.
  • There are thousands of plugins available in the Update Center, integrating with every tool in the CI and CD toolchain.
  • Jenkins can be extended by means of its plugin architecture, providing nearly endless possibilities for what it can do.
  • Jenkins can easily distribute work across multiple machines for faster builds, tests, and deployments across multiple platforms.
  • Jenkins is an open-source resource backed by heavy community support.

2. GitLab

GitLab CI/CD tool is a part of GitLab and a powerful alternative to Jenkins. It is an open-source web interface that can be used to apply all the continuous methods like integration, delivery, and deployment to your project without any third-party application. It provides a user-friendly interface along with distributed version control services. Some of the top features that make it one of the best alternatives to Jenkins are:

  • Just like Jenkins, it is an open-source tool too.
  • You can test your build in parallel, thereby reducing time.
  • It allows docker integration and helps in automating release and application delivery.
  • It provides better support.

See how to Build An Automated Testing Pipeline With GitLab CI/CD

3. Atlassian Bamboo

Bamboo is a product of Atlassian, and it’s a useful tool for continuous integration, development, and deployment. It runs builds and tests and efficiently integrates with JIRA to update issues and commits and connect test results for an end to end visibility within the team. It supports multiple technologies like AWS, Amazon S3 buckets, Git, SVN, Mercurial, etc. Some of the key features of Bamboo includes:

  • It can be used to run parallel batch tests.
  • It provides seamless integration with JIRA, BitBucket, and Fisheye.
  • It is effortless to set up.

4. CircleCI

CircleCI is a flexible tool with easy maintenance and can run in almost any environment. Every commit leads to automatic build execution. To add to it, if any new build is triggered, any queued or running build is automatically canceled. Besides, it provides features like:

  • Integration with GitHub, Bitbucket, and GitHub Enterprise.
  • It splits tests among multiple containers, thereby reducing build time.
  • It provides SSH support so that users can access the Virtual Machine via SSH and run commands.
  • Very easy to maintain as it allows for automatic upgrades.

5. TeamCity

TeamCity is also known as the “Intelligent CI Server” because of its ease of use and integration. It offers different installation packages for different operating systems. It is a powerful tool developed from JetBrains, which allows building, and running tests even before changes are committed, hence keeping the code clean. Some of its features that make it one of the best Jenkins alternatives are:

  • It is well documented and provides easy installation.
  • It provides integration with tools like Docker, JIRA, etc.
  • It offers well-defined APIs available for extension.

6. Travis CI

Travis CI is a continuous integration and testing CI/CD tool. It is free of cost for open source projects and provides seamless integration with GitHub. It supports more than 20 languages, like Node.js, PHP, Python, etc. along with Docker. Some of the key features of Travis CI includes:

  • Very easy to set up with broad user community support.
  • No project is merged before tests are passed successfully.
  • You can easily customize the build environment as per your requirements.

7. BuildMaster

BuildMaster by Inedo is one of the best Jenkins alternatives that offers continuous integration on different platforms. With BuildMaster, you can manage your apps and deploy them to the environment without any hassle. Moreover, it doesn’t require extensive expertise to set up the pipelines. Some of its features include:

  • Create release management platforms that can be self-managed.
  • Automated gates prevent the release of untested software.

8. Bitrise

Bitrise comes as a platform as a service (PaaS) for continuous integration and continuous delivery in mobile applications. Each build runs on its virtual machine, and at the end of the build, the data is scrapped. It offers a free plan and allows integration with services like Slack, HockeyApp, etc. Also, it provides features like:

  • Apps are delivered without any manual intervention.
  • It integrates with major third-party testing and deployment services.
  • It allows quick setup having service integration with a lot of services.

9. Spinnaker

Spinnaker is an open-source platform developed by Netflix for continuous delivery. It is powerful and provides integration with major cloud providers. It supports multiple hosting technologies like Docker, Kubernetes, etc. It is useful for cloud-focused approaches. Some of the key features of Spinnaker includes:

  • Powerful and flexible pipeline management system.
  • It provides integrations to the major cloud providers like Google Cloud Platform, AWS, Microsoft Azure, and Oracle Cloud.

10. UrbanCode

An IBM product, UrbanCode, is a continuous integration application that provides multiple features like visibility, traceability, and auditing bundled in a single package. It enables you to deliver applications faster. Irrespective of the environment, you can quickly deploy applications to data centers, cloud, or virtual environments with no error. Some of its features that make it a preferred Jenkins alternative are:

  • It minimizes deployment errors.
  • Drag and drop feature in the editor makes it convenient to use.
  • Increased frequency to deliver applications.

11. Buddy

Buddy, also known as Buddy Works, is a continuous integration and delivery software with an interactive user interface, making for a perfect Jenkins alternative. It helps to build, test, and deploy applications faster quickly. You can get your CI/CD pipeline running in just a few minutes’ configurations. Besides, it provides feature like:

  • It offers on-premise solutions.
  • It provides support for multiple languages.
  • One can customize the build and test environment as per requirements.

12. Drone

Drone is considered one of the best Jenkins alternatives when it comes to integrating and deploying for busy development teams. It is a continuous self-service integration and delivery platform. It provides you the ability to customize multiple features on the go. It integrates easily with GitHub, GitLab, Bitbucket, and GitHub Enterprise. Some of its top features include:

  • It supports multiple languages and operating systems.
  • It provides plugins for pre-configured steps.
  • Every build is executed in an isolated container.
  • It provides auto-scaling with a single binary file.

13. AWS CodePipeline

AWS CodePipeline is a continuous integration and continuous delivery service that easily and quickly automates your release pipelines for updates. Every time you change the code, AWS CodePipeline will build, test, and deploy your application. Also, it can be easily integrated with GitHub. Some of its features that make it an ideal Jenkins alternative are:

  • Follows the pay for what you use approach. You need not block your money or pay any fees. You only pay for what you are using.
  • It provides a workflow that can be configured as per your release stages.
  • It offers parallel execution, thereby increasing the workflow speed.

14. CruiseControl

CruiseControl is a continuous integration tool, and it provides a framework that can be extended to create customized build processes. Though written in Java, it can be used in different projects with the help of builders provided by it. It can integrate with different source control systems. Some of the key features of CruiseControl includes:

  • Provide remote management support.
  • You can build multiple projects on a single server.
  • Provides email and messaging notifications.

15. Integrity

Integrity is a continuous integration server that builds your code and runs your test as soon as a commit happens. A report is then generated, and the users or the team is notified. The only limitation is that it can be used only with GitHub but can be mirrored with other SCM. Some of its features include:

  • It supports multiple notification mechanisms.
  • It works fine with GitHub Repos, public and private.

16. Shippable

Shippable provides an easy way to set up continuous integration and delivery for applications. It optimizes DevOps operations and provides ready-to-use build images. It provides analytics to help you improve. It also offers machine-level isolation to secure the workflows. Some of the key features of Shippable includes:

  • Enable Continuous Improvement with rich analytics and insights.
  • Secures your workflows with Role-Based Access Control (RBAC)

17. CodeShip

CodeShip is a hosted continuous integration and continuous delivery platform found by CloudBees. It provides fast feedback and customized environments to build applications. It provides integration with almost anything and is good at helping you scale as per your needs. It comes free for up to 100 monthly builds. Besides, it provides feature like:

  • Parallel execution for fast feedback and minimum to no wait times.
  • Easy to configure.
  • It provides support for headless browsers.

18. Buildkite

Buildkite enables you to run continuous integration pipelines on your infrastructure. It provides fast and secure integration. It allows you to run multiple builds with maximum control. It has an interface that provides visibility of your pipelines, which you can monitor. Some of its features include:

  • It provides unlimited language support.
  • It provides chat support for quick resolutions.
  • It offers easy integration with tools like Slack, HipChat, etc.

19. GoCD

GoCD comes as a continuous open-source integration and continuous delivery server with an end-to-end map showing the path to production in a single view. You can integrate it with popular environments like Kubernetes, Docker, and many more. It has advanced features of traceability wherein you can easily debug a broken pipeline. Some of its features that make it a capable Jenkins alternative are:

  • It has a great support community.
  • Easy to upgrade even when plugins are integrated.
  • It provides fast feedback.

20. Semaphore CI

Semaphore provides you features for continuous integration and delivery by removing technical challenges. You need not depend on hiring staff specifically for deployments. You only need to define a workflow, and there you go with building a great application. Some of the main features of Semaphore CI includes:

  • It provides flexible pipelines for complex projects.
  • It offers parallel testing for faster movement.
  • Debugging capabilities for quick resolutions.

21. Microtica

Microtica is a DevOps tool for automation with a complete software delivery process. It allows you to use reusable pieces of code to help you build infrastructure in no time. With Microtica’s pipeline workflow, you can get an overview of the build process at any given time. It’s not just all. It also allows you to automate sleep cycles, thus reducing AWS cost drastically. Also, it provides features like:

  • It allows you to deploy microservices with Kubernetes in no-time.
  • Reduce AWS costs for non-production environments

22. AppVeyor

AppVeyor provides continuous integration and delivery services for any platform. You can quickly build, test, and deploy your applications in a fast manner. It supports GitHub, Bitbucket, Kiln, etc. Each build executes in an isolated and clean environment. Some of its features include:

  • The console output makes it easy to debug the failure.
  • It provides faster builds with virtual machines and pseudo access.
  • It integrates with any source control tool.

23. Azure DevOps (Azure Pipelines)

Azure DevOps presents a simplified process for creating a continuous integration (CI) and continuous delivery (CD) pipeline. You can bring your existing code and Git repo, or you can select a sample application. Through this process, deliver value faster to your customers with a continuous integration and continuous deployment (CI/CD) pipeline which pushes each of your changes automatically. A CI/CD Pipeline implementation, or Continuous Integration/Continuous Deployment, is the backbone of the modern DevOps environment. It bridges the gap between development and operations teams by automating the building, testing, and deployment of applications. Some of the key features of Azure DevOps includes:

  • As a SaaS offering, Azure DevOps is reliable, scalable and globally available.
  • Azure DevOps pipeline is very simple and easy to configuration.

      I hope you really enjoyed to read and learn all the CI/CD tools. You can try each tool based on your needs in your project and organization. Enjoy your CI/CD pipelines.

Reference: LambdaTest

make it perfect!

Automation execution in the DevOps world using GitLab CI/CD

CICD-Pipeline-Devops-Edureka

      GitLab is getting more popularity in recent times. One of the reasons for popularity because it combines the source code repository and CI server. Generally, GitLab composed of source code repository and Runners (open source project which is written in “Go” language). Runners are light-weight agents that trigger the jobs assigned to them with the help of dockers (it is a container). If you have a GitLab server then no need for a separate CI server.

      Here I would like to explain how the automation scripts trigger as a pipeline when the developer commits the developer code into the repository.

Capture      The whole magic happens with help of .gitlab-ci.yml file (YAML). It is a configuration file that you can create on your project’s root. This file automatically runs whenever you push a commit to the server. This triggers a notification to the runner and then it processes the series of tasks you specified in the YAML file. The following are some important configuration parameters in the .gitlab-ci.yml file.

  • image: use docker images. Telling to docker agent that image going to use for execution.
  • stages: define stages (jobs) in a pipeline.
  • stage: defines a job stage (default is test).
  • before_script: override a set of commands that are executed before the job.

     The following are the important eight steps to achieve automation execution in the DevOps world using GitLab CI/CD. Here I have done for Selenium automation with Gitlab CI/CD

Step 1: Create Automation Test Project using TestNG + Maven. Develop automation test cases.

Step 2: Create .gitlab-ci.yml file in the root directory of your automation project and configure before_script, stages and test stage details in .gitlab-ci.yml. Below is the configuration details of .gitlab-ci.yml,

image: maven:3.6.3-jdk-11
  
before_script:
    ################################################################################################
    # Install Xvfb (X virtual framebuffer) packages.                                               #
    # Xvfb (X virtual framebuffer) is an in-memory display server for a UNIX-like operating system # 
    # It implements the X11 display server protocol without any display.                           #
    ################################################################################################
    - apt-get update
    - apt-get -y install gnupg
    - apt-get install -y unzip xvfb libxi6 libgconf-2-4
    
    ##########################
    # Install Java on system #
    ##########################
    - apt-get install -y default-jdk
    
    ##################################################
    # Install Latest Google chrome package on system #
    ##################################################
    - curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
    - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
    - apt-get -y update
    - apt-get -y install google-chrome-stable
    
stages:
  - test
  
test:
  stage: test
  script:
    - chmod a+x /builds/gitlab_username/sampleautomationproject/chromedriver #If you not given the permission then you may face "java.lang.IllegalStateException: The driver is not executable" error.
    - mvn clean #Compile your scripts
    - mvn test #Run your scripts

Step 3: Login to GitLab Dashboard.

Step 4: Create a New Project in GitLab to keep the automation project > Create a Repository.

Step 5: Commit and push your automation test project to the GitLab automation repository.

Step 6: Just refresh the GitLab and see the Pipeline and Jobs section of CI/CD. You can see your automation scripts are executing.

1

Step 7: Create .gitlab-ci.yml file in the root directory of the development project and configure triggerjob details in .gitlab-ci.yml. Below is the configuration details of .gitlab-ci.yml,

image: maven:latest

stages:
  - build
  - test
  - automationstage

build:
  stage: build
  script:
    - mvn clean

test:
  stage: test
  script:
    - mvn test
    
triggerjob:
    stage: automationstage
    trigger:
        project: gitlab_username/sampleautomationproject
        branch: master

Step 8: Make some changes/add new features in development project and deploy it. Observe that development project pipeline starts, once it success it will trigger the automation stage for automation execution.

2.PNG

     Please try to utilize the above steps to make your automation life easier (with GitLab). In this link https://gitlab.com/sanojs you can find the sample POC which I have implemented for this GitLab CI/CD.

make it perfect!