WEBVTT

00:00.000 --> 00:15.000
I can ask how many of you use Jenkins.

00:15.000 --> 00:20.000
I want to show you use Jitabla.

00:20.000 --> 00:21.000
Okay.

00:21.000 --> 00:22.000
Okay.

00:22.000 --> 00:29.000
I don't ask for Jitabla because everything is died now with Jitabla.

00:29.000 --> 00:30.000
Okay.

00:30.000 --> 00:31.000
Okay.

00:31.000 --> 00:32.000
Okay.

00:32.000 --> 00:34.000
Who uses Gerrit?

00:34.000 --> 00:35.000
Yeah.

00:35.000 --> 00:37.000
You use Gerrit.

00:37.000 --> 00:38.000
Yes.

00:38.000 --> 00:39.000
Okay.

00:39.000 --> 00:41.000
Why in the past?

00:41.000 --> 00:43.000
In the past.

00:43.000 --> 00:45.000
Okay.

00:45.000 --> 00:46.000
Yeah.

00:46.000 --> 00:47.000
I can understand.

00:47.000 --> 00:51.000
But let's say different proposed Gerrit and Jitabla.

00:51.000 --> 00:54.000
Different way to regue and work with the code.

00:54.000 --> 01:01.000
I'm not a fan of Jitabla, but just because my model of developing working is Gerrit Orient.

01:01.000 --> 01:02.000
So...

01:14.000 --> 01:15.000
Okay.

01:15.000 --> 01:16.000
Anyway.

01:16.000 --> 01:19.000
The big difference between Jitabla and Jitabla.

01:19.000 --> 01:23.000
And Jenkins is like that you take appeals every day.

01:23.000 --> 01:25.000
And you pay for the pills.

01:25.000 --> 01:27.000
And this is Jitabla.

01:27.000 --> 01:30.000
And you find until the pills kill you.

01:30.000 --> 01:32.000
Or you go to a surgery.

01:32.000 --> 01:33.000
Okay.

01:33.000 --> 01:38.000
And now you can go to a surgery for eight hours.

01:38.000 --> 01:40.000
And after that you don't need to take the pills.

01:40.000 --> 01:42.000
If you survive.

01:42.000 --> 01:43.000
Okay.

01:43.000 --> 01:45.000
So this is a big difference.

01:45.000 --> 01:46.000
Okay.

01:46.000 --> 01:50.000
I try to get the surgery operations to have fun.

01:50.000 --> 01:51.000
You know.

01:51.000 --> 01:53.000
It's much more fun to get the surgery for eight hours.

01:53.000 --> 01:56.000
And then forget about your problem.

01:56.000 --> 01:57.000
Okay.

01:57.000 --> 01:58.000
I'm Michael.

01:58.000 --> 02:00.000
I'm working on a number of solutions.

02:00.000 --> 02:02.000
I'm not really a CICB guy.

02:02.000 --> 02:10.000
So I start 15 years ago to do something CICB just because the company needs some infrastructures.

02:10.000 --> 02:11.000
And yeah.

02:11.000 --> 02:13.000
Now what's coming with AI.

02:13.000 --> 02:15.000
I've been testing this on.

02:15.000 --> 02:18.000
So my main focus was embedded.

02:18.000 --> 02:20.000
It's still embedded.

02:20.000 --> 02:21.000
But in the weekend.

02:21.000 --> 02:23.000
A lot of weekends.

02:23.000 --> 02:26.000
Let's say today's every weekend.

02:26.000 --> 02:28.000
I spend some time in Jenkins.

02:28.000 --> 02:31.000
Now I do some plug-in contributor.

02:31.000 --> 02:34.000
And of course I even contribute for wanting energy.

02:34.000 --> 02:36.000
Plug-in for CV.

02:36.000 --> 02:38.000
Extraction from a doctor for instance.

02:38.000 --> 02:42.000
It's just to play a bit to see how the model was working in the wanting energy.

02:42.000 --> 02:43.000
Yeah.

02:43.000 --> 02:45.000
I find this communion is really fun.

02:45.000 --> 02:47.000
The Jenkins one.

02:47.000 --> 02:51.000
This is from my university and say that basically if you want to be an engineering,

02:51.000 --> 02:54.000
say you need to be prepared to go around the world.

02:54.000 --> 02:57.000
And this of course, those things are improving now.

02:57.000 --> 02:58.000
I go with the bicycle.

02:58.000 --> 03:01.000
So not anymore like this.

03:01.000 --> 03:02.000
So now I move like this.

03:02.000 --> 03:04.000
So it's quite fun.

03:04.000 --> 03:06.000
Because I'm a CICB guy.

03:06.000 --> 03:07.000
It's not needed.

03:07.000 --> 03:08.000
Let's say, put it this way.

03:08.000 --> 03:10.000
It's better to, you know.

03:11.000 --> 03:15.000
Every, you know what is contributing to patients.

03:15.000 --> 03:18.000
Seems that is a kind of topic that everyone knows.

03:18.000 --> 03:22.000
But in my experience, but maybe you're lacking more than me.

03:22.000 --> 03:26.000
The fact that in a lot of companies that,

03:26.000 --> 03:29.000
if they have already a good release process,

03:29.000 --> 03:31.000
is already a good thing.

03:31.000 --> 03:34.000
But you know, not everything is moving so fast.

03:34.000 --> 03:37.000
And you start up and you company that I've seen appearing

03:38.000 --> 03:40.000
Yes, they use extensively.

03:40.000 --> 03:41.000
Contributions.

03:41.000 --> 03:42.000
Contributions.

03:42.000 --> 03:43.000
Paraguay and so on.

03:43.000 --> 03:45.000
Why we use Garrett because you know,

03:45.000 --> 03:50.000
Jenkins is not really a system that you do contributing.

03:50.000 --> 03:52.000
You interact with the user.

03:52.000 --> 03:53.000
You do.

03:53.000 --> 03:54.000
You know, you cannot,

03:54.000 --> 03:59.000
Jenkins is only a way to our fantastic way to trigger your business.

03:59.000 --> 04:01.000
Or to execute your jobs.

04:01.000 --> 04:04.000
Let's say that Jenkins can execute any jobs.

04:04.000 --> 04:08.000
It can fix any kind of infrastructure problems.

04:08.000 --> 04:12.000
And it does not depend on any locking technologies.

04:12.000 --> 04:15.000
It's Apache licensing.

04:15.000 --> 04:19.000
I think that's under the end now on the continuation of foundation.

04:19.000 --> 04:21.000
So it's quite nice.

04:21.000 --> 04:27.000
But you can figure out an image with your fantasy.

04:27.000 --> 04:30.000
Any kind of things that you want to have in your infrastructure.

04:30.000 --> 04:32.000
And you need to ask if they succeed.

04:33.000 --> 04:34.000
It doesn't exist.

04:34.000 --> 04:36.000
It's also open source developer.

04:36.000 --> 04:37.000
You can just create.

04:37.000 --> 04:40.000
If it's created, you can just improve.

04:40.000 --> 04:44.000
So that is the way why I mean this.

04:44.000 --> 04:46.000
Yeah, the goal is, you know,

04:46.000 --> 04:47.000
is the solution.

04:47.000 --> 04:49.000
We want to define bugs.

04:49.000 --> 04:51.000
We want to our cycle of developers.

04:51.000 --> 04:53.000
We will finance on.

04:53.000 --> 04:54.000
This is the tool that I use.

04:54.000 --> 04:56.000
I can you can see parts on a cube.

04:56.000 --> 04:58.000
But that is open source.

04:58.000 --> 05:01.000
I mean, there is part of a son of a cube that is open source.

05:01.000 --> 05:06.000
All the other things are completely, you know, open source tools.

05:06.000 --> 05:08.000
First of all, the analysis.

05:08.000 --> 05:10.000
First of all, the code checker.

05:10.000 --> 05:11.000
Gerrit.

05:11.000 --> 05:12.000
Explain.

05:12.000 --> 05:13.000
Plugin.

05:13.000 --> 05:14.000
With AI.

05:14.000 --> 05:15.000
Jenkins.

05:15.000 --> 05:16.000
Gerrit.

05:16.000 --> 05:17.000
I plug in.

05:17.000 --> 05:18.000
Sonar cube.

05:18.000 --> 05:19.000
Martin most.

05:19.000 --> 05:20.000
I think so.

05:20.000 --> 05:21.000
It's almost open source.

05:21.000 --> 05:23.000
So yeah, it's fine.

05:23.000 --> 05:25.000
You can have everything that you have.

05:25.000 --> 05:27.000
Consider the other ecosystem.

05:27.000 --> 05:31.000
But what is maybe it's a bit difficult to start with it.

05:31.000 --> 05:33.000
So there is not an easy.

05:33.000 --> 05:38.000
You don't create a repository in GitHub or and you have everything's there.

05:38.000 --> 05:40.000
And you have your GitHub actions.

05:40.000 --> 05:42.000
You need to spend some times.

05:42.000 --> 05:46.000
But when you spend, you have spend some times.

05:46.000 --> 05:47.000
You have Jenkins.

05:47.000 --> 05:50.000
So we have completely control of what you are doing.

05:50.000 --> 05:51.000
You have continually.

05:51.000 --> 05:53.000
You can continue to improve your pipeline.

05:53.000 --> 05:58.000
You are not limited to any things because you have any plugins that you want.

05:58.000 --> 06:01.000
If you don't have you create it, you have administration.

06:01.000 --> 06:03.000
You can maintain your plugin.

06:03.000 --> 06:06.000
You can decide to store your activity in a stream.

06:06.000 --> 06:07.000
Whatever.

06:07.000 --> 06:09.000
You can have your runners inside your company.

06:09.000 --> 06:12.000
You can have runner in the clouds.

06:12.000 --> 06:13.000
You can have runner.

06:13.000 --> 06:15.000
Connect to the SSH.

06:15.000 --> 06:16.000
You can have runner.

06:16.000 --> 06:17.000
Connect to web socket.

06:17.000 --> 06:19.000
You can run your windows.

06:19.000 --> 06:20.000
In Apple.

06:20.000 --> 06:21.000
Yeah.

06:22.000 --> 06:23.000
So what Jenkins offer?

06:23.000 --> 06:24.000
Okay.

06:24.000 --> 06:26.000
For our my type of ecosystem.

06:26.000 --> 06:30.000
We need to a way to trigger job with inger it and Jenkins.

06:30.000 --> 06:32.000
I use personal use jerry trigger.

06:32.000 --> 06:35.000
There is an implementation for jerry forge that you use.

06:35.000 --> 06:37.000
Another paradigm to do trigger.

06:37.000 --> 06:38.000
It's okay.

06:38.000 --> 06:39.000
It's fine.

06:39.000 --> 06:45.000
The problem that jerry trigger that I hope that I'm going to solve this year is to create a way to use

06:45.000 --> 06:48.000
HTTPS for triggering event.

06:48.000 --> 06:54.000
Much more fluidly and not all the SSH connections on it to get rid of this.

06:54.000 --> 06:55.000
But yeah.

06:55.000 --> 06:56.000
It can trigger.

06:56.000 --> 06:57.000
Okay.

06:57.000 --> 07:00.000
When I trigger in GitHub, you have the concept.

07:00.000 --> 07:02.000
The wrong concept of pull request.

07:02.000 --> 07:06.000
The worst things that the people create is the pull request.

07:06.000 --> 07:09.000
Some people that create 20 patches.

07:09.000 --> 07:14.000
And people that are only the pull request as a huge giant piece of code.

07:14.000 --> 07:18.000
And that's not understand what is in each part of the code.

07:18.000 --> 07:20.000
What is this patch is needed.

07:20.000 --> 07:22.000
It's clean up.

07:22.000 --> 07:23.000
Yeah.

07:23.000 --> 07:24.000
Always get a long things.

07:24.000 --> 07:25.000
They just said change change.

07:25.000 --> 07:26.000
And this one day.

07:26.000 --> 07:28.000
Just add a new commit on top of it.

07:28.000 --> 07:29.000
Okay.

07:29.000 --> 07:30.000
It's not really in jerry.

07:30.000 --> 07:31.000
It's committed oriented.

07:31.000 --> 07:33.000
It means that we are going to review each commit.

07:33.000 --> 07:36.000
We can trigger builds that.

07:36.000 --> 07:39.000
Very much each commit on your pull request.

07:39.000 --> 07:40.000
Call it pull request.

07:41.000 --> 07:44.000
And because you get it, we have the concept of topic.

07:44.000 --> 07:49.000
That is a concrete number of commits that implement a functionalities.

07:49.000 --> 07:53.000
That makes to have the same functionalities in CDI as a pull request.

07:53.000 --> 07:56.000
So you can build the entire topics as once.

07:56.000 --> 07:57.000
Verification build.

07:57.000 --> 07:59.000
Or you can build single things.

07:59.000 --> 08:02.000
So we're really quite interesting and powerful.

08:02.000 --> 08:04.000
And there is a lot of reason that we need.

08:04.000 --> 08:08.000
You know, our field to build each commit because we want.

08:08.000 --> 08:10.000
Our code to be be acceptable.

08:10.000 --> 08:12.000
And we want our code to be well-documented.

08:12.000 --> 08:14.000
So get it help.

08:14.000 --> 08:16.000
Improve this or enforce this to developers.

08:16.000 --> 08:18.000
Then okay, artifact manager in Jenkins.

08:18.000 --> 08:20.000
You can use any artifact manager.

08:20.000 --> 08:22.000
You can connect to S3.

08:22.000 --> 08:24.000
Personal use S3.

08:24.000 --> 08:25.000
Then we have local resources.

08:25.000 --> 08:27.000
You know, sometimes you need to contents between jobs.

08:27.000 --> 08:29.000
So you have limited hardware resources.

08:29.000 --> 08:30.000
You want to.

08:30.000 --> 08:32.000
Then we have what do you have.

08:32.000 --> 08:33.000
The other tools.

08:33.000 --> 08:36.000
One energy that permit me to have any kind of analysis.

08:36.000 --> 08:38.000
This is static analysis collection of problems.

08:38.000 --> 08:40.000
Put on the thread page.

08:40.000 --> 08:41.000
And so on.

08:41.000 --> 08:44.000
Now we have recently worked with the guys that from China.

08:44.000 --> 08:46.000
They explain a role plugin.

08:46.000 --> 08:47.000
They were quite nice.

08:47.000 --> 08:50.000
Was introduced to use AI to interpret it with result.

08:50.000 --> 08:51.000
It's for free.

08:51.000 --> 08:52.000
I mean for free.

08:52.000 --> 08:53.000
If you take the Chinese.

08:53.000 --> 08:56.000
Chinese AI is basically for free.

08:56.000 --> 09:00.000
If you want to spend more money, you can take the other AI that you post.

09:00.000 --> 09:01.000
Very expensive.

09:01.000 --> 09:02.000
Renamex.

09:02.000 --> 09:03.000
Because it's a log build.

09:03.000 --> 09:04.000
I try to figure out.

09:04.000 --> 09:06.000
How does Chinese AI works?

09:06.000 --> 09:08.000
And there was pretty good.

09:08.000 --> 09:11.000
Yeah.

09:11.000 --> 09:13.000
That's why we're adopting.

09:13.000 --> 09:14.000
Yeah.

09:14.000 --> 09:16.000
Let's try to improve things.

09:16.000 --> 09:19.000
Okay. You know, the things I try to just go fast here.

09:19.000 --> 09:23.000
Because I want to give some example how the things I use it.

09:23.000 --> 09:29.000
So code review for us is basically is a basic steps for improve code quality.

09:29.000 --> 09:32.000
I know that now people tends to generate code by AI.

09:32.000 --> 09:33.000
Let the code review by AI.

09:33.000 --> 09:37.000
Let the AI inject the fixed inside the code.

09:37.000 --> 09:40.000
So the role of the developer decides to mix.

09:40.000 --> 09:45.000
Start to be not, but I want my in the company that people progress and

09:45.000 --> 09:48.000
have an overview of the code should be done.

09:48.000 --> 09:54.000
So what we're using AI is how the AI can improve the code review faces.

09:54.000 --> 09:57.000
How the AI can down a bit.

09:57.000 --> 10:02.000
The promise, the entry promise that a design can have when you push some code.

10:02.000 --> 10:09.000
So, but the AI code review is, we start it to understand what can be the

10:09.000 --> 10:10.000
I code review.

10:10.000 --> 10:12.000
We implement a plugin.

10:12.000 --> 10:15.000
We fork a plugin from a community, right?

10:15.000 --> 10:17.000
Another Chinese guy that started.

10:17.000 --> 10:21.000
And then we just recently changed in review.

10:21.000 --> 10:22.000
I plugin is an aim.

10:22.000 --> 10:24.000
It's not the official one in Garrett.

10:24.000 --> 10:26.000
Because we have a large discussion.

10:26.000 --> 10:28.000
And forget about it.

10:28.000 --> 10:35.000
So they just have, thank you missing some very old version that we provide.

10:35.000 --> 10:41.000
So now we integrate the length change, like Java for change to support multiple

10:41.000 --> 10:42.000
Becend.

10:42.000 --> 10:50.000
The same concept I implement in explainer plugin to allow us to use any AI that we want.

10:50.000 --> 10:52.000
So the concept is very basic.

10:52.000 --> 10:56.000
The comments that you can inject inside the, you know, the Garrett interfaces.

10:56.000 --> 11:02.000
You can point it to the I to ask to review some part of code or to re-review the code.

11:02.000 --> 11:06.000
The review of the code can start, let's say, automatic.

11:06.000 --> 11:12.000
Every time that you push a change or you can be the CI that push a curve

11:12.000 --> 11:17.000
Request on a post over the Garrett to say, okay, now review because the test will pass.

11:17.000 --> 11:30.000
So the problem of the I, of course, is the I is like, it's like, you know, someone that in your apartment, you don't like him.

11:30.000 --> 11:34.000
So it's someone that you find any kind of error in what you are doing.

11:34.000 --> 11:40.000
I was cute at, you don't wish to wash, you know, the washing machine, you forget the door open.

11:40.000 --> 11:41.000
This is the I.

11:41.000 --> 11:43.000
It's always fine something.

11:43.000 --> 11:46.000
I don't understand why it's possible, but okay.

11:46.000 --> 11:57.000
So what we try to do in the company said, to try to make make sense of, let's say, say to the I, okay, this is something that we want to do.

11:57.000 --> 12:05.000
And try to accept what is really needed because we never make, seems that it's difficult to make a repeat.

12:05.000 --> 12:11.000
And but because our I is able to vote, is able to provide some things.

12:11.000 --> 12:14.000
And so it's very annoying.

12:14.000 --> 12:23.000
And I don't try to make the I able to vote minus two that the Garrett means you can not be able to push.

12:23.000 --> 12:32.000
But the, the fact that the I can, cannot all review the code, that is one thing.

12:32.000 --> 12:37.000
But in my opinion, if we review even your commit message over the code.

12:37.000 --> 12:41.000
So it's what you describe, it's corresponding what you wrote.

12:41.000 --> 12:46.000
Because it's not for me to review like I was in a company corporate.

12:46.000 --> 12:50.000
And one guy sent me a batches of 2000 lights of code.

12:50.000 --> 12:53.000
I said, smell something strange.

12:53.000 --> 12:54.000
I do different.

12:54.000 --> 12:57.000
We used W and it was 50 lights.

12:57.000 --> 13:00.000
You would just miss up all the identical everywhere.

13:00.000 --> 13:04.000
So I said, okay, just let it push where the four lights so code are should be there.

13:04.000 --> 13:09.000
So it's very important that the, the commit message, the what you present is consistent with the commit message.

13:09.000 --> 13:15.000
And this is a can be done easily by the I because the I found that your commit message not descriptive.

13:15.000 --> 13:20.000
Your commit message, this, some part that you need to add and so on.

13:20.000 --> 13:24.000
And we started to, you know, to continue this plugin.

13:24.000 --> 13:27.000
We implement a lot of things.

13:27.000 --> 13:32.000
So basically what we try to do, it's to create certain interactions.

13:32.000 --> 13:34.000
Even we create a way to devugate.

13:34.000 --> 13:37.000
So we have we can dynamically change the prompt.

13:37.000 --> 13:43.000
We can dynamically change some as some parameters of the I because it's, we need to experiment.

13:43.000 --> 13:44.000
It's in the beginning.

13:44.000 --> 13:48.000
We are not able to figure out what, what will be needed.

13:48.000 --> 13:53.000
So at now, we are still, you know, improving.

13:53.000 --> 13:59.000
Recently, we, we even create a way to give a structure to the I.

13:59.000 --> 14:03.000
So to say that you can commit in your project like AI instruction dot mark down.

14:03.000 --> 14:06.000
So it's will analysis, it will add to the prompt.

14:06.000 --> 14:08.000
Each project they can have is on prompt.

14:08.000 --> 14:13.000
So we try to figure out what we can, you know, now everything is open source.

14:13.000 --> 14:15.000
Of course, it's in generate up.

14:15.000 --> 14:17.000
And then it's mirrored in GitHub.

14:17.000 --> 14:21.000
So every people that love GitHub, they have there.

14:21.000 --> 14:23.000
But you know, the main project is in generate up.

14:23.000 --> 14:26.000
That is a way to you get it.

14:26.000 --> 14:30.000
Then push back to to GitHub.

14:30.000 --> 14:31.000
Yeah.

14:31.000 --> 14:35.000
So I put some trivial example for some, sometimes you go, but,

14:35.000 --> 14:40.000
basically, what is doing is that pointing out to the context and review it.

14:41.000 --> 14:45.000
Now, the, the plugin is several way towards it.

14:45.000 --> 14:48.000
It can works only on the context of the patch.

14:48.000 --> 14:50.000
Or it can work in upload mode.

14:50.000 --> 14:54.000
It means that it will pull things that is not known.

14:54.000 --> 15:01.000
So if you have some see file that you have some function that it doesn't find in the context,

15:01.000 --> 15:04.000
but you won't understand why this was changed.

15:04.000 --> 15:09.000
It tried to pull the, the, the files that is contains the information that

15:09.000 --> 15:12.000
is to continue to review.

15:12.000 --> 15:13.000
It's not easy.

15:13.000 --> 15:16.000
We have still problem to connect it to the factory for the eyes,

15:16.000 --> 15:19.000
not trigger after testing after build.

15:19.000 --> 15:20.000
It's still over.

15:20.000 --> 15:23.000
Oh, it's, it's, it's, it's, it's, it's, it's, it's, it's, it's, it's,

15:23.000 --> 15:28.000
it's, it's, and we've, I will be able to, to interact with the,

15:28.000 --> 15:29.000
with the eye.

15:29.000 --> 15:33.000
So we can ask question and we have interactive comment.

15:33.000 --> 15:37.000
This is some, some drawback about because Gerrit,

15:37.000 --> 15:42.000
we save each messages that is even reply as getting information.

15:42.000 --> 15:46.000
So this can scale a lot of the memory data, the digital data,

15:46.000 --> 15:48.000
the history of the Gerrit to maintain the threads.

15:48.000 --> 15:51.000
But it's the same of the code review.

15:51.000 --> 15:55.000
So the line comments also probably we have a lot of comments,

15:55.000 --> 15:57.000
but this will ask to review.

15:57.000 --> 16:01.000
And you can ask to review discard all the old comments that he was done before.

16:01.000 --> 16:02.000
So yeah.

16:03.000 --> 16:07.000
So the plug-in rom-up is very simple.

16:07.000 --> 16:12.000
So we want to basically give the possibility to understand what was the,

16:12.000 --> 16:14.000
the results of the test of the build.

16:14.000 --> 16:17.000
So he has more information back to review.

16:17.000 --> 16:21.000
And we want to integrate it on the Gerrit API,

16:21.000 --> 16:26.000
API because they do a lot to improve in 3.13.

16:26.000 --> 16:29.000
And we want that our comment can be a suggested change in the code.

16:29.000 --> 16:31.000
So apply these changes.

16:31.000 --> 16:34.000
So the user can directly apply this suggested code.

16:34.000 --> 16:37.000
But you know, it's, it's open.

16:37.000 --> 16:42.000
So we hope that something will, will happen.

16:42.000 --> 16:43.000
Okay.

16:43.000 --> 16:44.000
Okay.

16:44.000 --> 16:45.000
The testing.

16:45.000 --> 16:46.000
Yeah.

16:46.000 --> 16:47.000
The testing.

16:47.000 --> 16:50.000
That will show something.

16:50.000 --> 16:54.000
So we want to basically about a way to test our code.

16:54.000 --> 16:58.000
So it's nice to collect the things of a testing.

16:58.000 --> 17:00.000
But to what we, what I understand.

17:00.000 --> 17:04.000
I'm coming from the age where people write the code.

17:04.000 --> 17:06.000
And that's forget about testing.

17:06.000 --> 17:07.000
The code is working.

17:07.000 --> 17:08.000
It's perfect.

17:08.000 --> 17:09.000
It's written.

17:09.000 --> 17:10.000
Okay.

17:10.000 --> 17:13.000
But now it's every people that joined the company.

17:13.000 --> 17:15.000
Science the last six to seven years.

17:15.000 --> 17:19.000
They were ready at the concept that each part of the code should be tested.

17:19.000 --> 17:23.000
So we need to design the code to be testable.

17:23.000 --> 17:25.000
And it's, it's not only this,

17:26.000 --> 17:31.000
it's not the way to, you said, if we have this, if you don't test the code.

17:31.000 --> 17:32.000
You know, we can buy this.

17:32.000 --> 17:34.000
You need to design your code to be testable.

17:34.000 --> 17:39.000
So what this, I can help is to collect all this information through the testing

17:39.000 --> 17:42.000
and create the, the tools,

17:42.000 --> 17:44.000
can generate the output as there was,

17:44.000 --> 17:46.000
with describing the traditional code.

17:46.000 --> 17:49.000
And we get this output and interpret it.

17:49.000 --> 17:51.000
It is output through Jenkins.

17:52.000 --> 18:01.000
And let's see how this can be done in Jenkins.

18:01.000 --> 18:05.000
So how can Jenkins can help to run a testing?

18:05.000 --> 18:09.000
I wish you basically how Jenkins can collect results coming from

18:09.000 --> 18:11.000
JU, it's a unit testing.

18:11.000 --> 18:16.000
Or how can Jenkins can provide and collect information from

18:16.000 --> 18:17.000
tools like Lab Grid?

18:17.000 --> 18:20.000
I don't know how much of you use Lab Grid in other integration

18:20.000 --> 18:22.000
or for continuous integration, but okay.

18:22.000 --> 18:27.000
It's just a way of wrapping of resources that you connect to your hardware

18:27.000 --> 18:28.000
and we see later.

18:28.000 --> 18:33.000
And you can create easy pipeline using Python so to test your hardware.

18:33.000 --> 18:36.000
So that is the concept.

18:36.000 --> 18:40.000
So what I mentioned, so we need to decide the code in order to be

18:40.000 --> 18:41.000
testable.

18:41.000 --> 18:42.000
So it's not important that,

18:42.000 --> 18:47.000
recently we done some IoT design firmware with,

18:47.000 --> 18:50.000
in the, in the Netherlands and the office in Netherlands.

18:50.000 --> 18:55.000
And the lead decided the, the IoT in an order way

18:55.000 --> 18:59.000
that we can generate the test for this IoT

18:59.000 --> 19:03.000
and forever like around 79 or 80% of coverage

19:03.000 --> 19:04.000
of the code.

19:04.000 --> 19:07.000
And create all the abstraction that allow a lot to test

19:07.000 --> 19:09.000
all the part of the, of the IoT.

19:09.000 --> 19:11.000
So if we designed the code in the process,

19:11.000 --> 19:16.000
the code in the proper way, then we can come out

19:16.000 --> 19:20.000
with trained statistics and this can be happened

19:20.000 --> 19:22.000
when you generate the releases.

19:22.000 --> 19:25.000
You can have it if you have like verification build,

19:25.000 --> 19:28.000
you can create gate, you can, if you have,

19:28.000 --> 19:30.000
you know, everyone know that if you have unit test,

19:30.000 --> 19:32.000
you can generate code coverage because, you know,

19:32.000 --> 19:35.000
without unit test, you go coverage when anything.

19:35.000 --> 19:39.000
Then you can run the mem checking, use the value grid,

19:39.000 --> 19:43.000
and then you can, everything that you can check

19:43.000 --> 19:45.000
at the time the CI is better to implement.

19:45.000 --> 19:48.000
We even check documentation warnings,

19:48.000 --> 19:50.000
semic file warnings.

19:50.000 --> 19:53.000
So everything that can, let's say,

19:53.000 --> 19:57.000
reduce the time to review code that is not satisfied.

19:57.000 --> 20:00.000
Our standard should be integrated in the pipeline.

20:00.000 --> 20:07.000
So, so we want only to review buildable patch.

20:08.000 --> 20:11.000
So CI can run a test several big configurations

20:11.000 --> 20:15.000
and run, because we have those, those important things

20:15.000 --> 20:19.000
that we discuss it, that we want to build a busy capability.

20:19.000 --> 20:22.000
So we don't like GitHub for that one, for instance.

20:22.000 --> 20:24.000
It's one of the problem.

20:24.000 --> 20:28.000
Then we want, if we want really to work as a GitHub

20:28.000 --> 20:31.000
or a GitHub, we want to use topic build.

20:31.000 --> 20:34.000
But the topic is more sophisticated than per request.

20:34.000 --> 20:36.000
Topic is across multiple bits.

20:36.000 --> 20:40.000
So a topic can be a change set that is in three of four

20:40.000 --> 20:41.000
key repositories.

20:41.000 --> 20:44.000
So when you verify an operating system,

20:44.000 --> 20:47.000
you want to apply all the topic across two

20:47.000 --> 20:49.000
repositories and buildable as a bundle.

20:49.000 --> 20:52.000
So a topic is a concept that is across multiple

20:52.000 --> 20:54.000
git and this guarantee is possible,

20:54.000 --> 20:56.000
because you can create connection between the poor

20:56.000 --> 20:59.000
request or between things in the different repositories.

20:59.000 --> 21:02.000
This is the reason why I was created by Google for Android.

21:03.000 --> 21:07.000
This is an 있다 PROoped type build at trigger.

21:07.000 --> 21:10.000
So you have the patch set that is tricky.

21:10.000 --> 21:14.000
Get it in the instance and the run the job and execute the test.

21:14.000 --> 21:15.000
So nothing more.

21:15.000 --> 21:20.000
And then this is a cities, this is a new stage view.

21:20.000 --> 21:23.000
This is a new쟁ist stage view, a pipeline graph view

21:23.000 --> 21:26.000
that is better now that show the steps.

21:26.000 --> 21:28.000
You can sew the green and the steps in this

21:28.000 --> 21:30.000
are what is going on.

21:30.000 --> 21:34.360
going down, and this was the result up to Gerrit.

21:34.360 --> 21:36.960
So Gerrit is constantly connecting what happened here.

21:36.960 --> 21:41.680
You will have a notification back to your job.

21:41.680 --> 21:44.760
Yeah, this is what happened in a standard Jenkins

21:44.760 --> 21:47.960
unit test pipelines that there is some

21:47.960 --> 21:49.960
then in this slide, there are some weak

21:49.960 --> 21:52.080
that remind how to create them.

21:52.080 --> 21:55.440
But the basic what you are trying to do is that you

21:55.440 --> 21:57.600
want at some point to perform the test,

21:57.600 --> 21:59.640
and then you have a parallel blocking Jenkins

21:59.640 --> 22:01.840
that all the tests can be run in parallel,

22:01.840 --> 22:06.360
and execute all the testing features.

22:06.360 --> 22:09.600
Yeah, there are some examples out to use a code checker

22:09.600 --> 22:11.360
or one again to cheat in these slides,

22:11.360 --> 22:17.880
but I prefer you to see what to talk more about now.

22:17.880 --> 22:19.680
What we have testing, we are unit testing,

22:19.680 --> 22:21.320
we cannot complete things.

22:21.320 --> 22:23.280
Now, we are not only testing films,

22:23.280 --> 22:27.880
but we increase all the power power elements together

22:27.880 --> 22:30.720
to cover all the things like other testing.

22:30.720 --> 22:34.280
OK, now, the rest of the year, we started to have projects

22:34.280 --> 22:37.880
that allow us to test hardware, so we are up to her lump grid,

22:37.880 --> 22:40.960
that is basically, I frame us that a lot of

22:40.960 --> 22:44.880
alokiter resources of colored places to hardware,

22:44.880 --> 22:46.680
and then you can interact with user other

22:46.680 --> 22:49.960
to replace it, so basically what the CI is doing is

22:49.960 --> 22:52.880
ask for resources, if the resource is busy,

22:52.880 --> 22:55.480
by other CI, there are other job that are running,

22:55.480 --> 22:59.040
so the CI is waiting for the resource to be free,

22:59.040 --> 23:01.640
and then get the resource automatically free.

23:01.640 --> 23:04.240
So basically, there are lots of run,

23:04.240 --> 23:07.240
multiple testing, both even the resource are partially used

23:07.240 --> 23:11.600
by other jobs that are running, but when you have get the resources,

23:11.600 --> 23:15.480
then you are located until the job is finished.

23:15.480 --> 23:19.400
Lovely, there's an architecture that is basically,

23:19.400 --> 23:23.800
it's let you to basically have several components,

23:23.800 --> 23:27.080
what is important is to allocate, as I said, displays,

23:27.080 --> 23:32.440
so you will have the client to disconnect to the lab grid.

23:32.440 --> 23:34.360
A lab grid is not only used by the CI,

23:34.360 --> 23:36.440
you can use it by any user to assess the resource

23:36.440 --> 23:39.600
of what it devices, so we use not only to interact with CI,

23:39.600 --> 23:43.440
but we use even to interact with the hardware.

23:43.440 --> 23:45.720
Then we have the support, the coordinator, the clients,

23:45.720 --> 23:49.480
very easy, the exporter is the one that has the resources,

23:49.480 --> 23:52.720
connected to coordinate is one, all the exporter,

23:52.720 --> 23:56.200
give to the coordinator what they have in them,

23:56.200 --> 23:58.360
connect to it, and the client is you,

23:58.360 --> 24:03.480
the task that the resources to execute any test.

24:03.480 --> 24:06.320
OK, the key feature is basically the support for the hardware,

24:06.320 --> 24:09.080
so you have serial, SSH, power manager,

24:09.080 --> 24:11.040
social location, so it's quite easy,

24:11.040 --> 24:13.960
because they have a lot of driver information tests.

24:13.960 --> 24:18.000
And there are, they're not a nice things that I don't find any

24:18.000 --> 24:21.840
a lot of testing, but I will make my things public sooner,

24:21.840 --> 24:26.600
so that someone can start from there, I think.

24:26.600 --> 24:29.960
Yeah, the lab grid configuration is done in a YAMFI

24:29.960 --> 24:31.760
that you have in the nodes.

24:31.760 --> 24:34.320
So let's see, because we have not a lot of times

24:34.320 --> 24:38.320
this is a test example, lab grid, but I want to talk straight

24:38.320 --> 24:42.480
forward on, OK, this is the benefits,

24:42.480 --> 24:44.840
but I want to show some pipeline there.

24:44.840 --> 24:47.680
So this one, for instance, this one is a kind of pipeline

24:47.680 --> 24:50.520
that is part of the test, multiple configuration,

24:50.520 --> 24:53.240
go to lab grid, execute all the tests.

24:53.240 --> 24:56.120
It's not, this is the due to preparations,

24:56.120 --> 24:59.320
then it is the running test for different architectures,

24:59.320 --> 25:02.160
and then this can run basic hit-down, yes.

25:02.160 --> 25:05.480
OK, that is fail, because the YFI is unstable,

25:05.480 --> 25:08.120
the YFI test, so it's a one in that.

25:08.120 --> 25:14.320
It's not really fail, but one gate was not passing during this pipeline.

25:14.320 --> 25:18.720
But you can find it basically there, the pipeline.

25:18.720 --> 25:20.480
OK, well, one of the things

25:20.480 --> 25:24.240
that you know, all the things that I want to have in an infrastructure

25:24.240 --> 25:27.640
is understand why my build was failing.

25:27.640 --> 25:31.040
So now I add up what is in the G, as I said, multiple things.

25:31.040 --> 25:34.440
Now, even the languages was added yesterday by the content of today's

25:34.440 --> 25:38.360
goal, and this is very powerful, because we know

25:38.360 --> 25:43.040
when a build failure is happening, and we have

25:43.040 --> 25:47.400
a dedicated explainer or a part where we can see where

25:47.440 --> 25:52.640
the arrow comes from, and you can find the plugin.

25:52.640 --> 25:54.360
There is even screenshot, how should we?

25:54.360 --> 25:57.560
Now I don't know if I have time to show you.

25:57.560 --> 26:02.160
And yes, basically my roadmap is to integrate in pipeline

26:02.160 --> 26:05.240
like I feel, and improve the nodes.

26:05.240 --> 26:08.080
So what I'm doing with the I is that I need to find the steps

26:08.080 --> 26:11.560
that you fail, but if you have parallel step, like 10 steps,

26:11.560 --> 26:15.800
then you fail three things together, and the I should not

26:15.800 --> 26:16.920
only take the first one.

26:16.920 --> 26:19.880
My goal, the free, collect all the results, and give to the

26:19.880 --> 26:22.400
OK, it failed, the unit test for this reason.

26:22.400 --> 26:25.400
If fail, you don't know, the same check for this reason,

26:25.400 --> 26:26.840
it failed, you know, for this reason.

26:26.840 --> 26:28.760
So the idea is now to navigate.

26:28.760 --> 26:32.360
If you want to improve the committees this one, it's very easy.

26:32.360 --> 26:33.200
I go the three.

26:33.200 --> 26:35.400
I go back to the first node, the failure, then there's

26:35.400 --> 26:37.360
sent to the I.

26:37.360 --> 26:39.520
And then there is a lot of useful link.

26:39.520 --> 26:43.340
OK, sorry.

