 Okay, so I think it's time. Hello. Welcome everyone to our presentation. I'm Simon and with my friend Ignacio today I want to show you a feature of Zool that is surprisingly not well known among users. So stay with us to find out how you can move your jobs debugging to a whole new level. So if you're completely new to Zool we're going to give you a big high overview It gives you need to deep dive into the subject. Simon has a very very good talk from the OMPA infosummit in 2019 in Shanghai. If you want to scan the QR code and you're good to go. So what is Zool? Essentially Zool is a CI series system one of its main features is the getting mechanism that automates the merging process Ensuring the application is tested properly it relies on ansible roles and playbooks And it supports cross-project dependencies users may specify change on a different project on repository that is known to Zool and it will take that into account And last but not least Zool is used on OpenDef which is the largest open source CI system in the world Okay, so for motivation for our talk Let me give you some background story I'm pretty sure you can all relate you all know this there is a work you have to do So like a feature to implement or something you spend a few days working on it And then a miracle comes But after some time it starts to work Great, you can now close all your 50 browser tabs. All you need to do is to push your code for review And you are done But then suddenly a while colleague appears only to point out There is a failure in the CI system. Some tests are not passing and What then? I mean clearly you did everything right because you tested in a new computer, right? Of course you did So that must be a obviously a problem with the CI system again as always What can you do in such case? Well, you can go to the Extremal solutions like like the presented in the slide But the better approach might be to fix actually the issue and you might do it in traditional way like you try to reproduce it and After some time you will eventually success But we will present you another feature of zoo that will make it easier for you So jogging aside The autohol feature is a very important for us engineers Testing environments offer differ from the development ones So despite our best efforts, this is the way it is So you have many differences in software versions hardware revisions firmware releases and on top of that many different configurations of all of the above This makes reproducing the issue quite a difficult task So get it into the test environment might be the best solution So yeah, another quick introduction from zool. If you are a zool user The typical operation as how you see it is usually there comes some request Either by some reach. I go you just submit a change to review from a gared usually And it's catch by the zool scheduler service here number one And this service with the help of notepool service allocates a note some runner where the zool executor process comes And executes your job steps After that Everything is cleaned up like the runner node is removed and all you can do is you browse the logs Within the zool web user interface This is where the neat feature of zool called autoholts comes What it does it offers you a way to prefer preserve a runner note for a specific amount of time So if there is a failure in your build that node is not cleaned up and You can get there for a specific amount of time What is not worth to notice is that it's not something really new in zool itself It was actually if you look at the dates in the commits. It was actually implemented A lot of years ago during the development of zool version 3 But what's important is quite recently about a year ago It was available over zool web interface. So it is now more conveniently accessible for all also developers We don't need to use the zool cli system cli client to access it And this is this is very convenient And yeah, here we originally wanted to present you some demo But because of the lighting talk form of our presentation We are not as brave as yesterday keynote speakers to do a demo in eight minutes So we went with a slightly safer approach So hence I would like to welcome you to a quasi demonstration performed by Ignacio Thanks Shimon. Um, so how do you go about enabling an autohol for one of your builds? You navigate to warn your zool instance URL and you're greeted with this page First things first you need to log in top right corner and then once you do so You can navigate to the autohol tab This is what the autohol tab looks like right now. We have no autohol enabled so We have the no autohol found message displayed And let's go ahead and create one of the autohol by clicking on the create request button This leads us to the configuration page for our autoholt and The fields pointed by the red arrows. You have to fill those in project name job name change reference Then you give a reason for your autohol request. This can be debugging x issue or something like that And then how many times you want to hold the node? Then last you Indicate for how long in seconds you want this build to be held And then you hit create if everything goes right You go back to the autohol space and You are greeted with your autohol listed there By clicking on their request id You are directed to your specific autohol that you just requested This is what it looks like. This is a gives you very basic information I just want to point out the important bit is that by Pointed by point five Since we haven't triggered The request yet We have a zero out of one And then at the bottom we see the message that we have no triggers for our request so now is the time to either Take your job and trigger it or wait for a periodic job to trigger Once that happens and if everything goes right Now your job and your autohol trigger has Worked now it's one out of one pointed out by point seven And uh now we have to Click and navigate to our build by clicking the id for our build That's point number eight on the slide And this leads us to the page for our build Important point is that next to the failed message We see a very small Pin icon that means that the autohol has worked and our build is being held for us So we only have one thing left and is find out the ip of the node that is running our build To do so we navigate to the lockstab. That's number 10 on the slide And here we have to Go into the sullinfo directory and then there you will find your inventory.jammel. That's uh, that'll be number 11 And on that file you want to look for the uncivil host variable That variable is holding the ip of your node All you have left is just ssh into the node and you're good to go So this way you have a nice and clear solution to access a real shell environment inside your test environment and Please note that all this mechanism do is it delays the cleanup it Delays the inevitable But it does not set any authentication by itself So it's up to you and your job steps to set up some password or ssh access key on the machine so you can access it And there are two like not down sides, but limitations also to consider when Considering this feature One is that currently there is no way to extend that the autohol to hold that is already in progress So if you might expect that the debugging will take a little more time Please consider that in advance to increase the time when you create the autohol request And second more important limitation for some people is that it only works for now with the It doesn't work with the container Zool drivers node for drivers So if you if your jobs are using virtual machines, we are perfectly fine to use it But for containers, we are missing Routers creation and stuff to the containers. So that doesn't work However for case of like virtual machines or bare metal hosts It's much better alternative than the other solutions that we commonly know what they see people use by for example Injecting some additional debug tasks or like remote pdb instance inside the jobs Because of the point mentioned in slides And yeah here we reach the conclusions. So as a summary for takeaway for you If you didn't hear about zool before please read about it It's a really good cicd system and as in many cicd systems the runner nodes leave only as long as the job duration Takes but with the autohol feature you might have a clear and nice way To extend the time how long the runner leaves and it can give you a additional time for debugging any nasty issues So Don't hesitate to ask your zool instance admin if you have one About the autohol feature today And that's it for us. If you want to grab the slides, there is the QR code and the link You can download them and yeah, thank you for coming and listening to our presentation And because of the lighting to form and the time Really short. I think we don't have opportunity for questions here But we are we welcome you to Ask and catch us and ask us for any questions and the doubts We will be here near the entrance to the marketplace. So Come and ask us about zool Thank you. Thank you