This one is all about CI/CD; pipelines, jobs, automations, Github, Gitlab, etc etc! We discuss strategies for testing, linting, building, deploying, smoke tests and more for both Magento 2 stores and extensions.

The Registry - Magento 2 dev podcast

Peter Jaap Blaakmeer, Jisse Reitsma

Continuous Integration / Continuous Deployment

FEB 18, 202150 MIN
The Registry - Magento 2 dev podcast

Continuous Integration / Continuous Deployment

FEB 18, 202150 MIN

Description

Full transcription below.

Some show notes

https://github.com/run-as-root/gitlab-pipeline-templates
https://github.com/mediact/testing-suite
https://github.com/phpro/grumphp
https://github.com/captainhookphp/captainhook
https://github.com/rectorphp/rector
https://github.com/fabpot/local-php-security-checker
https://github.com/GoogleChrome/lighthouse-ci/
https://github.com/renovatebot/renovate
https://github.com/Brunty/cigar
https://github.com/sitespeedio/sitespeed.io
https://github.com/zaproxy/zaproxy
https://github.com/phpstan/phpstan
https://github.com/exakat/php-static-analysis-tools 

https://github.com/jalogut/magento2-deployer-plus 

https://github.com/userfrosting/fortress

Transcription

Jisse 0:01 

Hey, everyone. Welcome to The Podcast Registry number 2021.5 CI/CD, I guess, right?

Peter Jaap 0:15 

Yep. 

Jisse 0:16 

There are two Dutch guys, Peter Jaap and me. Yes Sir.

Peter Jaap 0:21 

Hello.

Jisse 0:21 

We're going to talk about Tech stuff, Magento stuff and Oriented for back end developers, I guess. In this episode, we're going to focus upon CI/CD. Basically, maybe an introduction a little bit about what we understand of CI/CD. What it's should be doing? How it fits into our own businesses and etc.? But Peter Jaap you came up with a topic.

Peter Jaap 0:48 

I think, actually, you did.

Jisse 0:50 

I did already. So, actually, I have to admit that something else is on my mind. So, you notice Swedish Chef, who says like, a bird, bird, bird, bird. Have you heard about the Finnish Chef, who for, who for, who for. It's changing our agenda quite a bit. The new front ending of internet supported by internet. So, who face is on the rise? But we're not going to talk about that. There was the previous episode. Number four was dedicated toHyvä. Today, talking about CI/CD. So, what is CI?

Peter Jaap 1:40 

What is CI? CI/CD is accommodation of "Continuous Integration" and "Continuous Deployment", those two topics are a lot of the times combined, mentioned in one sentence, CI/CD. But if you split them up, they're actually two parts. So you have the Continuous Integration (CI) part and the Continuous Deployment (CD) part. So, let's start with Continuous Integration. What is Continuous Integration? I'm not going to give 100% correct definition, but I'll say what I interpret SCI and I guess that resonates with most people. Because he was integral part in your code flow, where you integrate all the different lines of code, all the different packages, all this other stuff, you combine and have written yourself into one monolith in most cases and you check, mostly whether it integrates with each other. This could be unit tests, although those are more on a unit basis. So, not necessarily integration but that's usually part of this step and Integration Tests is like, End to End Tests.

Jisse 3:01 

The Integration Tests of Magento itself as well. So, kick starting the Integration Testing Framework MFTF (The Magento Functional Testing Framework) for Instance has told a part of it.

Peter Jaap 3:13 

Cypress IO is used a lot. 

Jisse 3:16 

Definitely, yeah. 

Peter Jaap 3:18 

Stuff like that. So, that's the integration part and then you have the continuous deployment part that's where you actually push code to a test environment or review environment and acceptance environment, whatever you want to call it and eventually to a production environment. So, what's this "C"? Because now we've talked about integration and deployment. So, why is it continuous? It's continuous when you trigger these actions, mostly using pipelines, automatically when there's a commit or attack release. So, you automate this stuff, you don't have to do it manually. And then when the pipeline succeeds, then all the checks have passed and you're fairly confident to be able to put your new stuff live. The main benefit of CI/CD is assurance, more assurance than you otherwise would have to deploy stuff. Because you are supposed to have some rigid testing in place, that almost guarantees that nothing will break when you put it live, if you have set it up correctly. This is a Utopia in my opinion, stuff will still break.

Jisse 4:42 

Yeah. I think the burden always is that it's quite an effort to put it all up and make sure that it's functioning. So, what would you say about the costs involved to set up everything properly, compared to actually the benefits in general.

Peter Jaap 5:01 

In general, it by far outweighs any cost to set it up, especially now since all the systems have become so much easier. I remember when we set up CI/CD for Magento One like, five, six years ago, that was painful. Magento one didn't really Lint itself. They have supported the building stuff like that. The tools we have now weren't as great. Back then as they are now. There were a lot less people working on it back then. So, it was a lot less support, a lot less blogs, and a lot less general knowledge in general about CI/CD. I think when we first set up our deployment pipeline and our review, our testing environment system, which we'll talk about later, probably, I think I spent like, three or four months, full time on building this setting it up.

Jisse 6:03 

Yeah. To me like, well, it sounds maybe that you're much more experienced with this whole stuff than I am. However, as soon as I'm using a looking at my own business. While I'm not busy with projects. I have a couple of projects, but those are my own, then I have extensions, I've micro services, I've got a lot of diversity in there. My tool here is never the same. So, it's all sounds pretty impressive. Seeing you talk about all of this stuff that always comes to the natural.

Peter Jaap 6:38 

I always feel the other way around that you know more about this stuff than I do. I always say, with your extensions, I always see you're setting up test environments, Unit Tests End to End Tests.

Jisse 6:50 

The funny thing is I guess, it's a totally different thing. So, for all my parts, the testing part is m...