Why you should use Buddy.works if you want to build a CI/CD pipeline the easy (fast) way.
Tags: buddygit, gitlab, cicd, devops
Published: 2020-10-29 14:17:27

In this article, I am going to show you why [Buddy.works](https://buddy.works/) is probably the most underrated CI/CD tool for many developers. Especially when you want to build a CI/CD pipeline quick or you about to build your first CI/CD pipeline.

###Building a CI/CD pipeline with Buddy compared to GitLab.

Why is building a CI/CD pipeline with Buddy easier than using GitLab? Because they basically already built some ready to use CI/CD functionality for you. That you simply configure to use it in your own pipeline. It's like you want to build an online shop you could be using a shop system like Magento that already has all the functionality like products, customers, checkout you need or you could build an online shop from scratch with PHP and a framework like Symfony.


**Using GitLab CI/CD is like using a framework. So you don't have to start from nothing, but there isn't any useable functionality. That you can already use.**

**If you are using Buddy CI/CD it's like using an already finished shop system like Magento or Shopware that already has basic shop functionality. So you only need to modify it to your needs and add some custom functionality.**

### So how would building a zero-downtime deployment looks like, build with Buddy CI/CD compared to GitLab CI/CD.

So let's assume you want to build a zero-downtime deployment for your PHP Application probably Magento because without that every little change will cause a whole shop downtime.

###How does a zero-downtime deployment work?

Also known as atomic deployments, a simple solution to do this is to build the assets in a separate directory and then simply swap the directory with a symlink. You can read more about how zero-downtime deployments with Buddy exactly works here: 
[Read more](https://buddy.works/docs/pipeline-examples/zero-downtime-deployment)


###Zero-downtime deployment Pipeline GitLab vs Buddy

####GitLab solution
With Gitlab you could use something like PHP Deployer what is a tool for Zero-downtime deployments. But to use it you first need a PHP Docker image with all the dependencies that are needed to run PHP Deployer, then you would need to know how to build a CI/CD Pipeline with the .gitlab-ci.yml file, and how to configure PHP Deployer correctly for your server. As a beginner that would probably need hours to get it ready to work, at least for me.
[Here a tutorial I found about it.](https://atymic.dev/blog/laravel-zero-downtime-deployment/)

####Buddy solution
With Buddy there is already a prebuild zero-downtime deployment Solution (Action) that you can configure with their GUI where you specify the server and the git Repository you also can add an ssh action to run some build commands on the server or use the filesystem from Buddy to build the assets (artifacts) that's it Buddy automatically create the needed folders on the server and uses the code from the git repository to deploy the application.
[Read more on Buddy about it.](https://buddy.works/docs/pipeline-examples/zero-downtime-deployment)

####Other prebuild solutions from Buddy (Actions)

Here are some example prebuilt solutions that only need minutes to configure it for a Buddy CI/CD Pipeline but probably hours to build them for a Gitlab CI/CD pipeline.

* Lighthouse tests
* Link Validator
* SSL Checker
* Visual tests
* Image Compression
* SSH Connection
* PHP CodeSniffer
* All kind of Notifications (Email, Slack, Discord, MSTeams)

Buddy does name this prebuilds Solutions Actions.

####Conclusion
If you need a feature that Buddy CI/CD has already built as an Action for then you can configure it in minutes and use it. What would need hours to build the same functionality with other tools like GitLab from scratch. If this is not the case you probably need the same time to build it in Buddy.

#### Is Buddy the right solution for me?
So if you need the Ultimate enterprise custom CI/CD Pipeline then you are probably already using something like GitLab and you should not care about Buddy. But if you still deploy your changes manually probably something like WordPress and you want a simple solution to automate it Buddy is the way to go.


[Buddy.works](https://buddy.works/)