Automated CI/CD of Multiple Projects Using TeamCity’s Kotlin DSL

In a previous article, I described a way to organize low-latency products as multiple code bases which are bound together with a Maven Bill of Materials (BOM). Understandably, this requires setting up continuous integration and deployment for a large number of similar projects. Maintaining such a setup manually in the face of change while ensuring its consistency will take a lot of effort.  In this article, I will describe how the team at Chronicle Software has tackled these issues in different projects by writing code that does this for us, in the form of Kotlin DSL for TeamCity.

This guide will show how to configure the same set of CI/CD builds for multiple Maven project repositories of similar layouts programmatically, following the DRY (don’t repeat yourself) principle. Following it will require a base knowledge of git, Maven, and TeamCity but would not require knowledge of the Kotlin language, since all of the displayed code is self-explanatory.

The Role of CI/CD Pipeline in Software Development

The CI/CD pipeline includes continuous integration, delivery, and deployment. DevOps teams use it to generate, test, and release new software automatically. This pipeline benefits from regular software changes and a more collaborative and agile team process. You've probably heard about the benefits of CI/CD tools, which are used to provide code more frequently and reliably. Let's examine what it is and how it benefits software development.

What Does CI/CD Pipeline Stand For?

There are two abbreviations for CI and CD: CI stands for continuous integration and CD for continuous delivery and deployment. The software development methodology is known as Continuous Integration, and Continuous Deployment (CI/CD) is based on the idea that incremental code changes are made frequently and consistently. Continuous Integration (CI)-triggered automated build and test stages ensure that code changes submitted into the source are trustworthy.

What CI Observability Means for DevOps

In the endeavors to conquer and expand, we have found ourselves now wrestling the beasts of the clouds. After all, the battle of Cloud development with all its gains was expected to be nothing less than enigmatic. Our greatest strategy, anticipated to secure yearning triumph has been laid out and given the most peculiar yet apt name. DevOps. However, there lies within this great strategy potential harm to its core and therefore warrants its safekeeping.

Alright, let’s get to the point now, Cloud Computing! A great progression in software development and definitely a concept that has proven its worth over the past decade now. With the promise of delegating most of the infrastructural and operational responsibility to cloud vendors, allowing us to primarily focus on the business logic.

How to Run Parallel Cypress Tests on BitBucket Pipeline

Do you use BitBucket Pipeline as your CI server? Are you struggling with slow E2E tests in Cypress? Did you know BitBucket Pipeline can run parallel steps? You can use it to distribute your browser tests across several parallel steps to execute end-to-end Cypress tests in a short amount of time.

How to Run Tests in Parallel

Distributing tests across parallel steps to spread the workload and run tests faster might be more challenging than you think. The question is how to divide Cypress test files across the parallel jobs in order to ensure the work is distributed evenly? But… is distributing work evenly what you actually want?

Ruby on Rails Minitest on Github Actions: Parallel Testing

How to run Ruby on Rails tests in Minitest on Github Actions? What to do if tests are slow? How to manage complex workflows? You can use Github Actions build matrices to divide Minitest files between jobs and run the test suite much faster.

If your Minitest tests are taking dozens of minutes and you would like to save some time for your Ruby engineering team then you could use tests parallelization on your CI server.

Caching Ruby Gems on Github Actions Using ruby/setup-ruby or actions/cache

How to start CI build faster by loading Ruby gems from cache on Github Actions? You can start running your tests for a Ruby on Rails project quicker if you manage to set up all dependencies in a short amount of time. Caching can be helpful with that. Ruby gems needed for your project can be cached by Github Actions and thanks to that they can be loaded much faster when you run a new CI build.

You will learn how to configure Github Actions using:

BDD Tests on Github Actions With Cucumber Run in Parallel Jobs

Cucumber employs Behavior-Driven Development (BDD) for testing your application. This type of test is often time-consuming when running in the browser. You will learn how to run Cucumber tests on Github Actions using parallel jobs to execute the test suite much faster.

Github Actions Matrix Strategy

Top 7 Benefits of GitOps: How to Reinforce Your Software Productivity and Accelerate Business Success

Today’s world regards time as of paramount importance. This said, the disruptive tech-enabled innovations are foremost meant to save both business owners’ and users’ time. The industry of software development is based upon the same postulates – the sooner the better, provided that timely product deliverables are coupled with efficiency and convenience.

The Continuous Integration (CI) and Continuous Delivery (CD) practices are among popular software engineering industry trends that help cut costs, time, and risks associated with delivering changes. Yet another trend to optimize the industry lies in applying DevOps methods, oriented to increase the efficiency of development and operation processes, and to speed up product delivery.

Parallel RSpec Tests on CircleCI With JUnit XML Reports

You will learn how to run RSpec tests for your Ruby on Rails project on CircleCI with parallel jobs to shorten the running time of your CI build. Moreover, you will learn how to configure JUnit formatter to generate an XML report for your tests to show failing RSpec test examples nicely in CircleCI web UI. Finally, you will see how to automatically detect slow spec files and divide their test examples between parallel jobs to eliminate the bottleneck job that’s taking too much time to run tests.

Ruby Gems to Configure Your RoR Project

Here are the key elements you need:

E2E Testing With Cypress on Jenkins With Parallel Pipeline Stages

In this tutorial for JavaScript end-to-end testing, you will learn about Cypress test runner for UI automation testing and how to use it with the Jenkins CI server. Cypress helps with frontend automation testing using a headless browser or just a regular browser. E2E tests often take a long time to run and for bigger projects, those types of tests can take dozens of minutes or even hours. To save developers time you want to load balancing Cypress tests across Jenkins parallel pipeline stages. Thanks to that, you can run your 1-hour test suite in a few minutes.

How to Speed Up Cypress Tests

Cypress is a Javascript End to End testing framework that has built-in parallelisation but in this article, we will cover Cypress parallel without dashboard service. You want to be able to run tests also when the external Cypress dashboard service API is down. It’s possible thanks to the Knapsack Pro client for Cypress with built-in Fallback Mode.

How to Run GitLab CI Pipeline With Parallel RSpec Tests in Ruby

GitLab CI allows you to run tests much faster thanks to its CI parallelization feature. You can run parallel jobs across multiple GitLab Runners. In order to do it, you will learn how to split tests in a dynamic way across parallel tasks to ensure there is no bottleneck in GitLab Pipeline. Thanks to that CI build can be run as fast as possible so your Ruby and JS tests can be finely fast.

GitLab CI Parallelization

The common problem when you want to run tests in parallel to complete your one-hour test suite in a few minutes instead of waiting hours is to find a way to split tests on parallel jobs. Some of your Ruby or JavaScript tests can take milliseconds and some even a few minutes per test file (for instance, when using Capybara in RSpec features testing). The problem with slow tests also occurs in E2E (end to end testing) when using Cypress test runner as browser testing can take quite a long time to execute.

Fast CI Build Time With Parallel Jobs on Semaphore CI for RSpec, Cypress, and Jest Tests

Semaphore CI 2.0 allows for configuring your CI build task with parallel jobs. This way, you can run simultaneously a few different commands that do not depend on each other. But we could also use parallel jobs to split your test suite across a few jobs and save time this way. I will show you how to speed up your CI build for your Ruby or JavaScript project (Rails/Node project).

With Semaphore CI 2.0, you don’t pay for a reserved amount of containers that can be run in parallel as in some other CI providers. Instead, they count the amount of work time spent on running containers. This creates an incentive to run more parallel jobs to execute our tests fast and still keep bill at a similar level as if we would just run all tests in single container waisting our own time.

Mule 4 Continuous Integration Using Azure DevOps

Once we started developing applications in MuleSoft and storing our code in source control platforms like GitHub, Bitbucket, GitLab, or Azure, just to mention the most common ones, we needed to look into automating the process to deploy our applications either to CloudHub or an on-premise server.

In this post, I will try to explain how a MuleSoft application can be automatically deployed into CloudHub or an on-premise server from Azure DevOps as our main CI platform and source control platform.

Run RSpec on GitHub Actions in the Shortest Time Using Parallel Jobs

GitHub introduced their own CI server solution called GitHub Actions. You will learn how to set up your Ruby on Rails application on GitHub Actions with the YAML config file. To run your RSpec test suite faster, you will configure parallel jobs with matrix strategy on GitHub Actions.

Automate Your Workflow on GitHub Actions

GitHub Actions makes it easy to automate all your software workflows with world-class CI/CD. The building, testing, and deploying your code right from GitHub became available with simple YAML configuration.

CircleCI vs Jenkins: Choosing The Right CI/CD Tool

If you work in the software industry, you must have realized the never-ending demand for evolution at a particular stage. This is why modern SDLC has more emphasis on the Continuous Integration and Delivery as it helps the DevOps team deliver the software faster with good quality. Gone are the days when Jenkins was the only CI-CD tool that one could think of! Many new CI-CD tools have emerged with out-of-the-box features that make you wonder about which CI-CD should you choose. 

One such tool in the CI-CD tug of war is CircleCI which modernizes CI/CD practices by overcoming certain limitations of Jenkins. On the other hand, being one of the oldest players in the CI-CD market, Jenkins has a large user base with an easy learning curve as you get a lot of content & community forums around it. So which one should you use? Should you go for CircleCI or Jenkins? Well, that’s exactly what I would help you decide by the end of this article.

DevOps Practices for PowerShell Programming

Powershell is a powerful scripting language and I have seen a lot of developers and administrators miss out on all the goodness of DevOps practices such as versioning, test automation, artifact versioning, CI/CD, etc. 

In this blog, I’ll try to explain with a working example on how to program PowerShell (not just scripting) with a predetermined module structure, ensuring quality with unit tests and deliver code in a reliable and repeatable way using continuous integration and continuous delivery pipelines.