DEV Community 👩‍💻👨‍💻

Cover image for Continuous Integration is Not Optional
Joseph Maurer
Joseph Maurer

Posted on

Continuous Integration is Not Optional

Stop Wasting Time On The Boring Stuff

With any project, there are the boring maintenance tasks that tend to take up more time than anyone would like them to. Need to do a new build of your game in Unity? Depending on the size of your game, that task could take awhile to build and deploy to the proper place. Want to push a new version of your website and run tests to make sure everything still works? Deploying the files to the appropriate place can take a minute and manual testing is often repetitive and error prone. Because of this, there are continuous integration (CI) tools that aim to automate a portion of your project lifecycle. I thought I would go through my favorites:

Team City

Team City Development Chain. Source: TeamCity

TeamCity CI/CD gives you the ability to automate pipelines of varying complexity and scale with relative ease. This is mostly due to the build chains that let you construct a visual pipeline of how the code will come together during the build. Even if the code is distributed across multiple repositories you can chain them together when running the build. Team City’s biggest differentiator is not their UI however.


Kotlin CI Config Example Source: TeamCity

Their biggest draw is that you can set up your CI using Kotlin instead of boring Yaml. Which honestly makes sense because JetBrains (who runs TeamCity) developed the programming language. I use TeamCity at my everyday job and I find it a useful tool when building my games.

Google Cloud Build

Source: Alvaro Viebrantz

As a part of the good cloud suite of offerings, Cloud Build is a relatively straightforward offering for continuous integration and continuous delivery solution. Integrating the CI pipeline into your project is a straightforward process of using Google Cloud and configuring your project. The basics are that you need to create a cloudbuild.yaml file (or even a JSON file) that lives in your project’s root directory that defines the steps needed to build your app/game/website. Here is an example of the same yaml command, done slightly differently so that it is super confusing.


Source: Dave Stanke

Overall Cloud Build is an excellent Continuous Integration tool that allows you to simplify your build, release, and testing process. I actually use Google Cloud Build as apart of my CI process for deploying my website. I have a trigger set up so that when I push to my Github repository, an action is triggered that grabs the updated code and merges it with the live branch of my website. It also takes care of producing artifacts such as a Docker container for testing. The best part is that it’s free! I highly recommend checking out Alvaro’s blog post about how he uses CI to integrate with IoT devices.

Github Actions

Source: GitHub

Honestly, GitHub Actions work remarkably similar to the previous two products I’ve mentioned here. The big difference here is that if you are integrating directly with GitHub repository where your code is already probably checked in. Actions are event driven, meaning that you can trigger CI/CD when on, pull request, deployment, page build, release, and lots of other comment events that occur around your code base. The downside here is that you are stuck with Yaml files that are checked into your .github/workflows directory of your repository.


Source: AWS

There are a ton of possibilities with these tools and they are extremely flexible by design. You can configure these systems to integrate with your situation and how you need to deliver your product.

Follow me on Twitter for ideas on how you can use continuous integration in your project to save you time!

Top comments (0)

🌱 DEV runs on 100% open source code known as Forem.

 
Contribute to the codebase or learn how to host your own.