The Problems With Current Day CI Tools – and the Solution
With the growing presence of technology, the need for speed, and the want for on-demand production, the pace at which technology moves is exponential. To accommodate and keep up with this pace, changes need to be made at the software level, within the software delivery lifecycle. When engineers are building applications, they need the ability to successfully and efficiently build and test their code multiple times a day. Without a CI framework or even with one that isn’t up to par, doing this can take days, if not weeks.
To be frank, there are many CI tools out in the market that can help a software team deliver quickly, a popular one being Jenkins – but as great as the tool can be for custom scripting, there are drawbacks. Picking on Jenkins (and all of the OG CI tools really), it involves a lot of manual scripting. This entails a high learning curve and dedicated resources to maintain and fix the pipeline. Additionally, there is a lack of enterprise-grade governance, a lack of focus on testing and test optimization, service instability issues, and minimal integration between CI and CD. With all of these problems in mind, we went to work to create a modern CI tool that will help any developer ship code faster.
What Harness Did
We shifted into the CI space with the creation of Harness CI. We took the best concepts from our open-source counterpart, Drone, and added in some new features to enhance the developer experience by making it easier for developers to build and test code. We call this new module CI Enterprise (CIE).
Unfortunately, most developers dislike testing and writing tests, which is how tests like assertTrue(1,1) sneak into code. Testing also takes forever – not just writing, but waiting for them all to pass. With Harness, we’ve introduced Test Intelligence to help build faster and test smarter. Test Intelligence uses ML to select tests that are required to confirm the quality of code changes that triggered the build, and rank tests in an optimal order to increase the rate of fault detection. This is a unique feature in the world of CI solutions.
With this latest addition, Harness can now take on the entire CI/CD workflow. It is seamlessly integrated with Continuous Delivery, Cloud Cost Management, and Feature Flags so developers don’t have to navigate from application to application to follow the steps of the pipeline. The Harness Platform provides opinionated, unified CI/CD pipelines with approval gates.
Containerized Steps/No Dependencies Because Plugins Are in Containers
Like Drone, CIE also executes pipeline steps as containers. CIE leverages Kubernetes, which makes it language-agnostic. Since containers are lightweight abstractions of the host operating system, they are able to package code and dependencies together in isolation from different steps. In the pipeline itself, the user will specify a container to be used and the agent will fetch and then start the container where the job will run. Because each step is run in its own container and all the plugins have their own containers, the developer can say goodbye to dependency hell!
Visual Pipeline Builder and/or YAML Config as Code
When it comes to sequencing, it is definitely helpful to be able to visualize the order in which actions occur. That was the thought process behind the visual pipeline builder that is included in Harness CIE. When scripting pipelines, it’s easy to get lost in the lines of code and not realize the order that actions will happen. Once the developer gets into more complex pipelines, this issue remains and gets worse. In Harness, developers can see a graphical representation of what the pipeline looks like – with the nested steps – and can build from the UI itself, or if preferred, use the YAML editor. The YAML editor works just like a developer’s IDE and therefore is a tool that they are familiar with and can always revert back to.
GitOps, in line with the Infrastructure as Code movement, has found the spotlight in the digital transformation era. It is another way to give developers more control as they are building and testing code, because deployments should be just as easy as enacting a code change. Harness CI integrates with all the popular source control management tools including GitHub, GitLab, and Bitbucket. To get started, all users need to do is activate the repository and include a .harness folder for the configuration files. This will trigger a build within Harness CI once a commit is detected.
Secrets and Fine-Grained RBAC for Security
Security is important, but it doesn’t always get the attention it needs. With Harness CI, we made sure to address this concern. To keep secrets secure, developers can either use encryption, native secret management, or use an external third-party provider such as AWS Secret Manager, Kubernetes Secrets, or HashiCorp Vault, among others.
Harness CI also offers a way to organize applications based on the account, organization, and project level. With this added layer, we understood the need for fine-grained RBAC. Security can be managed based on each of the levels, and administrators can give users the appropriate access to be able to view and manage secrets – and the ability to execute a pipeline within the different organizational levels.
Exceptional Developer Experience
Developers spend hours looking at a screen and coding. Why not make their experience easier and more enjoyable?
Harness aims to deliver to the developer, which is evident in the product. It has a sleek, easy-to-use interface and addresses the major pain points, such as long build and testing times. As a developer, creating the logic and code for the application should be the number one priority – not spending hours or days building and deploying it. Let Harness automatically speed up your build, test, and deploy cycles! From the way the product was built, it was meant for self-service and clearly has the developer in mind.
Check out Harness CIE – book your demo now!