CI/CD Platform Comparison: CircleCI, Codefresh, GitLab, GitHub Actions

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
the problem is with this platform that i don't understand it [Music] hello everybody and thank you so much for joining me here for another video on my youtube channel welcome it's great to have you here and let's get started for those who are new to my channel my name is anis and usually i make videos around a challenge called 100 days of kubernetes where we aim to learn something new related to kubernetes cross 100 days and be sharing with you here my journey on my youtube channel now for today's video i thought it might be fun to look at different ci cd platforms different platforms that you can use to build and run use your icd pipelines now cicd stands for continuous integration continuous delivery those pipelines are basically ways that you can standardize processes that you need to do to deploy your application on different environments so you can define everything has to be done in cicd pavlens and people not do the job manual one by one independently on their own machines but you do it instead in one main repository through a ci cd pipeline now if you're completely new to cicd pipelines then i highly suggest you to check out my previous video on github actions where in the first part of the video i just generally talk about csd problems what they are how they work why we use them how we use them what benefits do we need from them and so on and so forth and this video is gonna be quick and i'm mainly just gonna rant and praise different pipeline platforms so let's get started like always if you prefer the written content the blog post is linked below so do check that out if you prefer the written content my videos don't have an official transcript but they have the blog post linked below of all the information that i'm also going to convey in this video as you probably know i used for a lot of my examples day three now the tree helps us to prevent kubernetes misconfigurations from reaching our production environment so it's basically a check that allows you to see whether our kubernetes manifests are configured correctly which is crucial for security to make sure to validate our manifest before we actually deploy them now i'm using them for this example because as part of their documentation they have a section over here which basically details all of their integrations and as part of their integrations they have an example for circle ci for traffic ci for github actions for gitlab ci ct and for jenkins so i'm going to focus in this tutorial on github actions on circleci on codefresh and on gitlab ci cd so those are the four now this is not a comprehensive comparison just like how to get started and when i would use which just so you get a feel for the platform and how the same um type of the same step can differ between those different platforms um now to set it up or to follow this tutorial or to use my examples from the blog post you just have to create an account with a dream it's really straightforward here are the comments on how you can get started with day three it's basically just one curl command and then you can run the day to test come on to see how it works um yeah and when you check out circle ci you can see here's our first step now you don't need the build step i believe um i'm not 100 sure um but this is the main step the test step let me zoom in so you see that better okay so this is basically what's gonna run the same two commands that you would use locally as well to get started and i just want to run exactly that kind of step in those four different um csd platforms now why am i not using jenkins why am i not using travis because i feel like the four platforms that i chose are highly similar in the type of companies that they would target that or type of companies and individuals who would use those platforms versus um well to some extent they differ for example and i will go into more detail on that later um but that's ultimately it so with travis for example jenkins particularly i feel like only certain types of companies use those individuals wouldn't necessarily go ahead and use that for themselves that's why i'm doing it the way i'm doing it so let's get started with our repository now i have here this example repository on my github account called cicd example very creative i know i'm very creative these days now as you can see i have several folders here now the manifest folder has just a deployment yaml file and a service yaml file so i can also show you how you could test with specific yaml files and start off with the example that's provided by the tree upon installation now we have here a dot github slash workflows folder it's basically a folder and a folder and here we have the github example yaml file that has our first pipeline this is our first pipeline now once you basically go ahead and you add this into your repository you would add this folder this path and you would add a file with your um a yaml file with your pipeline that's how you would go about it or that's how you i usually went about and you can also have multiple um workflows in the workflows folder i believe you can do that and then you basically specify the steps on the job and everything that has to be done now the good thing is with github actions the documentation i'm sorry it's very bad i think it's very bad for such a company to have so difficult to follow examples and documentation but the community is making up for that so you find lots and lots and lots of examples on how to set up your pipeline it's very straightforward you can basically just google any type of pipeline that you need and then you have it there which is pretty amazing so this is how you would do it and then um it basically only runs with the main branch right now like it's specifying only on push and pull request of the main branch run this pipeline now to use daydream um like this problem by itself wouldn't run because it requires the data token now that the tweet token allows you to access your data tree account now you can access udt account either by running edit to test command and you will provide it with and here with a link through which you can access your account or you can go to app.detrio and you can log in they also support no single sign on now so here's my account i have three different policy checks staging part and crossplane uh that i've used before in the past and what you do to access your account token is you go to settings and here's your account token now you need to put that in your environment variables you go to settings environments and then the funny thing is so you set an environment and within the environment you can then set secrets that belong to that environment now here's the secret that i set i just the tree token and i provided a token now i think this is a bit of a workaround of like you have environments and then you have secrets and it makes it a bit more difficult to kind of differentiate it because you can also probably have secrets that are not dependent on environment new repository secret yeah which is not like it makes it a bit difficult to follow the correlation between them from my perspective and you also have to figure out where to find environments but that's usually within settings if it's not more obvious now if you want to run to run your pipeline you can either push the repository and it will render pipeline or you go to actions and then you can run the pipeline somewhere you will be able to run it now here are the different times that the peplin ran on the first push the second push the third portion the fourth but i know also very creative my my commit messages very creative very comprehensive so if i go to this pipeline i will see here that this step failed why did it failed run the three policy checks because my policy checks didn't pass that's why this command failed so it ran the policy checks and this all was supposed to work like that like this pattern was not supposed to run i told it to fail if the command fails and the command failed and here i can see basically the output of the d3 policy check awesome so i expect the same kind of output from the other pipelines now let's jump ahead to gitlab cicd and see how it works there now for that to work i had to create the repository or link the repository within um gitlab i'm not sure how github and gitlab communicate but i think they communicated and i'm very confused by that um maybe they don't communicate because he's no fourth commit anyway what do you do with gitlab you add a dot gitlab file i called it got dot gitlab ci and i don't know if you always have to call it away and this is basically i mean this is the smallest the smallest step that you can have like this is so straightforward in my github let's go back to my github ci cd workflow i mean i don't know if i needed really all of this it seems like i needed all of that but gitlab is a lot stronger more straightforward in that this is how you would define the new pipeline within your root project very straightforward and here you have to do the same thing you have to set an environment variable so how do you set the environment variable well you go to settings you go to ci cd it's a bit more nested over here and then you go to variables i think it's variables you go to variables and you set the value they tweet token and i set my digit token that's where you set it and now it's nested within here and then you can go back to cicd pipelines and as you can see there's one cancelled one and one failed one now let's check out my failed pipeline and how it ran over here oh does it work so i'm gonna check it out it's similar prices and it provides me with the same output so all of those pipelines they provide you with an output message or like what's actually running right that's not a big wow moment um i mean that's kind of what you would expect so you can debug your application now the funny thing is that it used different kind of policy checks to github so as you can see within my fourth one here if i check this out i have four failed and 17 booths past and here it's a bit different so i'm not sure what it did by default i have to look into that um but ultimately it's working and it's using the same kind of messages so instead of using just the default one the default example yaml file i could use my own yammer manifests so awesome it's a bit more i mean with gitlab i always find a bit more difficult to find everything that's going on and like where i can find my resources and set settings sets of things um versus within github i'm used to github right like i'm used to here doing things through the github ui versus gitlab so i'm always a little bit confused when i'm using gitlab it will never wear off i think and that's okay now circleci i have a confession to make i was working for seven months at code fresh and circle ci is one of their competitors have i ever tried circles k no um did i think it was worth trying maybe but i did not try it so i used it yesterday for the first time as you can see here does it tell me when i last ran it summer must tell me when i last ran this pipeline but the problem is with this platform that i don't understand it like i don't want to be harsh but i don't understand what it does that gitlab or github can't give me i just don't understand it if you know why you would use circle ci specifically what kind of advantages it gives you for 15 a month and that's like kind of the starting price 15 a month then please do let me know in the comments because i don't know and i feel bad for not knowing but i just don't here's the dashboard i mean maybe if i would subscribe to it maybe i would have more options here on the left maybe they just hide the options i don't know so if i go to projects i have here all of my github repositories which i don't fancy i don't like this because i mean it gives me a quick way to set up a new project but i didn't tell circleci to know about these projects i only connected it to the cicd example and then for github it just shows me all of the other projects so i'm not too much of a fan of this page because i just want to have my specific project i don't need all of this right going to the dashboard it shows me my previous rants and that's okay so um that's okay no um let's check out the test stage that failed it provides me with the same kind of output everything that i expected maybe a bit less of information than the other ones maybe it's hiding some information but ultimately it's the same information that's okay and here are the different steps and i mean they are not too beautiful it's okay it works right it's good um let's check out well last thing what is the last thing dashboard insights insights doesn't show much yet total credits that's how much it consumed i think you have like 3 000 credits or something per month for free um we i don't understand the credit system as well either i don't know i'm sorry i i don't want to offend anybody but i don't know not my thing so circle ci you put a folder with dot circles here and you put your configuration in here now you don't need this step likely because there's nothing to build like i don't know why it's part of the digi example i don't think there was anything to build so here i'm using this darker image so you can define your docker image i don't know do you have to use the official images or can i just use any image that's a good question to fill out for next time and then i just tell it which commands to run it's okay it's a different kind of language to the others um it would be also interesting to go through their documentation and see like how many examples they have um i don't want to bash on anyone but it just it's okay it's good it works and uh last thing we have code fresh quick disclaimer i'm a little bit biased just a little bit because i used to work for one of those platforms that i'm gonna talk about today which is code fresh and they also have provided me by now again with a pro version so i'm a tiny tiny tiny tiny bit biased no yeah code fresh um you will start off the getting started page and then you start a project now i started the ci example project and within this project you can have multiple pipelines so i'm going to go ahead and use this day tree pipeline now what you can do is to define your pipeline right here right right and i don't i can use the like the in yaml one from the repository like the code for chamomile one here but i could also just go ahead and define my pipeline in the ui that also works so i have two steps a clone step that uses the repository which i don't really need and then a test step now what i did different here in this test step is that i told her to use the manifests the deployment yaml file i want to test within my main project manifest deployment yammer file i want to check this for my miss configurations okay so once i have set this up i need to define the variables and you can just define the variables here on the right and the variables you can set additional steps from the marketplace and triggers it's i just like that it's right there and i don't have to click myself through it what you do have to click yourself through it though is setting up your integrations that's something you will have to do so you have to set up for example your docker integration your git integration to get started those are the two main ones to get you started so going back to my pipeline in my project once you run it you have a build and it shows you a really beautiful build it shows you the different steps and then you look at the output and here's basically the second stop and this is the output and as you can see in this case there are no failed rules because i used the amazing deployment yama file that i already checked before i committed it for errors but you don't know if people will actually do that and that's why you want to use their tree to make sure that even if people don't check their deployment yammer files for misconfigurations that the cicd pipeline actually does it now how would i use those different pipelines that's a good question thank you for asking um well i would use gitlab if i'm using gitlab duh no um sorry that was condescending um i would use gitlab if my project is hosted on gitlab then it makes sense to use gitlab and i have used gitlab throughout the entire time i was at siever and we never had a problem with what you could do on gitlab now we didn't have to have any fancy additional things like where is it now like the git ups platform that's provided by code fresh we didn't use that kind of stuff so in that case gitlab is perfectly fine similarly with github actions it does the job right like it's good it's for what you need it it's good it's working right that's all you need in most cases it's working yay like hands up most there's so many projects platforms that don't work so give them applause for working awesome wow i'm being very ironic i'm sarcastic and ironic um anyway so uh conference i guess they are kind of they're partially competing with these platforms but not really because like you would use gitlab and github if you are open source or smaller company or you just don't need fancy stuff so but if you're not if you need more fancy stuff then and you're highly cloud native focus then code fresh is amazing and then you should probably use code fresh right yay now the thing is they are also then competing at the same time with from my perspective something with jenkins right organizations that want to modernize themselves and move on and advance and um get better in what they are doing and that's what court first kind of fits in now i just don't know where circle ci fits in i just don't understand it i just don't know i mean there must be lots of companies who find this very useful i i'm not i'm not part of them and that's okay you don't have to like everything you see online you don't it's okay it's okay you can look at something be like this is nice and i'm gonna live my life and this is good so yeah this is it for this this is it for this now that's it that's the end of the video i really hope it was useful as always please do leave your feedback comments suggestions thoughts anything you want to share in the comments below also make sure to join our devops community on discord uh the link is community dot one hundred days of kubernetes dot io so make sure to join there also if you're into devops please do subscribe to my weekly devops newsletter where share free online courses uh resources from across the space right to your inbox on a weekly basis please do hit the like button and subscribe to my channel to make sure that other people see my content as well now i hope you have an amazing day and an amazing remaining week i hope to see more of my upcoming videos have a lovely day bye bye you
Info
Channel: Anais Urlichs
Views: 8,928
Rating: undefined out of 5
Keywords: ci/cd, pipeline, continuous delivery, continuous integration, gitlab, codefresh, circleci, github actions, github, devops, devops pipeline, comparison, platform, using gitlab, github action step, kubernetes, kubernetes configuration, automatic check, using ci/cd platforms, ci/cd platforms explained, tutorial, ci/cd tutorial, ci/cd example, setup, tools, devops tools, devops example, getting started devops, kubernetes tutorial, kubernetes for beginners, devops tutorial
Id: oImW32EbveU
Channel Id: undefined
Length: 21min 58sec (1318 seconds)
Published: Thu Jan 06 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.