 Okay. Hello, hello, everyone. Hello, everyone. My case is not working. My case is not working? I think my case is milled. Okay. Okay. Hello, everyone. And thank you for attending my talk. I think it's lunchtime. I'm very glad so many people are here. Okay. Before I start, I want to explain about the topic, open source in Davion. And actually this is open source. Open build service is developed by OpenSUSE, which is infrastructure for building your packages. And we have been using that at work for a lot. So my employee encouraged me to contribute to making Davion official packages. So now it's available in Davion packages. So my talk won't cover how Davion use OBS. But we use OBS at work to build the Davion directive. Yeah. So this is the topic. So I hope it won't confuse you guys so much. So really thank you to attend. And also I need to thank that OpenSUSE, create such nice tools. It's very easy to use and save a lot of time. And also I also need to thank FullStand to give me the opportunity. And this is my first FullStand. I've never been here before. So this is the first time for me. Okay. Let me introduce myself. My name is Andrew Lee. And my original name is Li Jianqiu. I'm from Taiwan. So I've started to contribute to OpenSUSE by doing the RPM packages in Red Hat and Maindrink. And then later on become Davion developer since 2009. And at that time I was packaging the LXDE project, which is a lightweight desktop. So I make it into the Davion and also modify Davion's dollar I also work in the built-in fast charge team in Collabora for more than 5 years. So at work I use OBS a lot to building the distribution or packages for client's needs. So let's start the talk today. Okay. Let's look at the agenda. Okay. During this talk I will give you guys a simple overview about what OBS is and how can it benefit you. And also I will give an example that how it has building very nice workflows like we are using nowadays. And also I will explain about the applications in OBS. So you have basic idea that how OBS has multiple machines running has also the builder be high. So once after you have the application overview, it will be easier for you to install the package in official Davion distribution to set up OBS for your need. And in the end I will provide that how you can modify to optimize that you need and put into OBS into your infrastructure at work. Okay. Let's look at the overview and let's start to look at the classic packaging way just without OBS. I used to that you have a user you need your software you need to build. For example here is an example you build MD64, Articature, Davion JC packages and then once you build it and you publish into your repository so users can download your package. And then for time being you have more users. They request multiple distribution like Davion has a new release like a stretch you need to have another repository. And this kind of thing that you need to maintain two clean chelute one is for Davion JC and one is for stretch for your users to download. And then you need to upload twice after you build the binary package. And longer time you have more users. Maybe the users request other Articature then you just need to maintain multiple clean chelute and multiple Articatures. And more and more like your users request like you build on Davion and also Ubuntu and multiple different versions of Ubuntu and multiple different versions of Davion. And you become really really massive because you have maintained so many different Articatures for example and then different distributions and different versions. And how can you maintain so many clean chelutes? And just imagine that one of your bug fixes. Okay. You build maybe on some version of Davion maybe fail on one version of other distributions. Then how can you manage this? You have to build so many times and then you catch it like oh this is a problem. So it takes a lot of those time in a classic way. So let's fix this kind of mix. How to mix? How to fix? Just put the OBS as your building infrastructure and OBS has building those kind of thing you can choose the different Articatures different distributions and different versions. And then it's down. So how much time and resources you see? Okay. Let's look at the now you have basic idea how OBS can save your time. So let's look at the benefits. The benefits eventually that most of you even you are existing or new software projects or you are packages or you are users you all can benefit from using OBS. Here is an example that is this example you see the screenshot. We just upload one source package there, source upload and then you have you can see the multiple distribution and different Articatures we configure to build as our target. And some other distributions, some other Articatures what's missing because there's no dependency so it will show that unresortable and the other builds if it shows like a success. This is for the existing software projects. Okay. Once the package is built you don't have to upload copy the binary to the publish on the website that OBS does that for you. Automatically publish. So you can see this example but here is the Articature it's a Debian directive that will be covered by Andrew Shardewa tomorrow morning and also my colleague will give a talk but here's an example for the repository screenshot. You can see that package published to that and also have a very nice workflow. Just imagine you have a production product and then you need to provide like a security fix into your production product. But before you land the new package you'll be better to have some QA to test. Or in another case it's like you need to release a product and they have like a software phasing for bug fixing only. So you may have release manager to review and approve the package you want to learn into your production product. So in OBS it is built in the submit and review workflow. So you can just upload into the OBS and submit and you can say have a QA or you have a release manager to approve. Okay, here is a quick look. You see that the package is submitted and you can see that the package opens under the target distributions then you can decide if you want to learn it or not. And for packages if you build in package used to you have to do like a mainline to maintain many, many different clean shooters to build your software, your packages. And for OBS every time you build the source package use a people's trip to automatically create the clean shooter to build in the environment. So all the packages that you upload once and then you all build in the same consistency and also reproducible way on OBS. So you save a lot of time for your packages. Okay, if you are the users the OBS provides a very nice repository. I just before I start the presentation I was talking with someone outside that said the developer always like to have this very, very new packages. So if you work in the environment maybe you are a developer also you are a user because your colleague may have want something new software. So if you have an OBS setup they can just land the latest version and you can just keep tracking those kind of dependencies. So you guys can build on the same environment if you are users. So it will be a nice feature. Okay, it's just like here is a simple that the OBS will generate the repository so you can share the repository with other users. It will be easier. Okay, let's do again about more detail about OBS features and the workflow. So in OBS it's very, very nice that you save a lot of time because it builds on multiple different articatures and OBS can if you want to build a different articature and also different distributions, you don't have to mirror the whole repository from remote. It has a built-in download on demand. You can just choose the target distribution and target the articatures so it will handle those kind of things automatically for you. Just like example like here you can configure one project on the OBS so one source upload you can build on the DebianJC and Ubuntu different versions and different Debian versions and also in the config file you can also add the extension to the binary packaging then it builds. So once it builds then published you can find a file then you can know okay this one is built for Debian version and Ubuntu version so you can add the extension to the binary packages and also it has revision control for the source package it's like in the repository every time you have the source changes you track the lock and if something broken you can just revert to a previous revision so you have to track all the changes for the source packages. Okay there's automatic source processing you upload the source package you don't have to do the command line to build the software you own because OBS handles this for you and then you also can help you to calculate about the build dependencies so if something mixed it you will see that it's unresurfable for example on the web UI and once you click on that it will show us what is missing so you can see the missing dependency on the web GUI very nice and you can list that in one project you can see all the successful build packages you can also see that the failed one if you see multiple failed one in the team you can assign different tasks to other different developer team member to fix the failed to build the source package so it's very helpful for the work in the team and then of course work in the team it has the access control for the software repository you can see a repository can have a permission for different team members on different projects and also you have a request a view system like I mentioned before you have a production server or something production product and they have some new changes you have someone QA or release manager can review the the new package new updates here example that I uploaded the package if someone can see accepted you can see the history every time all these things are tracked on the web GUI after I introduced about features and workflow let's look at the articatures basically that articature has a bacon server which is storage that your packages and also the worker which needs the power to build the package and then the web front end and the command line tools let's look at the bacon server the bacon server basically has several demons to handle the source and the scheduler and the dispatcher assign the tasks for builders and also repositories and here is the in the corner you can see that the build host is the OBS worker you can connect the OBS worker with some cloud computer or containers or something you can build multiple or you need the more powerful things you can add more scale that the builders easily and this web front end is Ruby on Rails this is the only one need the database the bacon doesn't need but the GUI need the database and then command line tools I think that you use the tool you can interact with the host system the bacon and the web front end I use the command line tools I think that's an example here is just the command line tool is called OSC and OSC has a legacy vs control similar command is check out so I can check out my home branch it's a hollow package once I check out and I can go into the folder and see there's a devian package there okay I'm sorry I extracted the devian package and you can see that the source code then go into the package folder I extracted you can see this package I can see there's a devian folder there it just modifies the package as usual and after you modify it you bump the revision in the change log and then you just regenerate the source package once you regenerate the source package this is a CO1 this is a new revision I add appended in the source package and you can see the old one without the CO1 so in here you just use OSC to remove the old source version add the new one okay and then you can just do the commit once you've done this on the command line you go back to web UI you can see this building on the different articulation or different distribution that you configured in the project and you can click that you can see the build log on web UI and also we have also the if you want to you want to know more detail about OSC you just read the main page or help it has lots of very simple command there so we have a de-put plugin and de-put plugin is similar like in Davion or developer like the de-put command so with similar syntax you can just use one command to upload your source package instead of many many steps like I showed you before so it's a nice tool okay then now you have the basic articulation idea then you can know how to config so I want to say that this was four years work because when I want to package OBS a lot of JavaScript and RubyGN was broken or mixing or something in Davion like a more than 100 packages so before I package that I need to you know have all the dependency ready in Davion so I need to go into Davion and I found out what kind of thing is missing and then start to do that and make a proper Davion package and upload it into new queue and review my package then go into the repository so after two distribution I think JC and the stretch finally stretch I catch the time so now the package is then in Davion and stretch okay so now it's easy to install now you have the idea that OBS is back end and also the front end and also the worker so you can use the app get install one of those but not doing all of this on the same machine because you can imagine that when you build like a LibreOffice and are some other like flag files on the builders and know maybe that all the resource be taken then your web find properly won't work so don't put on the same machine okay here is a simple just a simple command and all dependency already fixed in Davion so you can see that put in lots of packages so after you do that command okay you just do just check the readme.debian you need some post install script running on that and also I mentioned all the details in the readme.debian you just read there and also we do that OBS in containers you can check out the container example there we are working on that but I'm really really new to containers if you find out something weird it's my first Docker image so if you have any problem later please let me know okay okay and in the Docker image we also provide a script called test script so you can just check the script there it's some simple command command line you just run the test script you will fetch the hollow package from Davion and then upload so you can see the first package built on Davion okay so I think this is mostly in the end of my talk I want to give you some tips for how to do the optimized OBS at your environment so here is some example that we do that merge our MISC this is actually we focus this software from Ubuntu to make it modify to work together with OBS so we have a distribution that we as a Davion directive on base of Ubuntu but we need to track if there's any update from Ubuntu or maybe it is from Davion there's some security fix so we need to run a software to do the continuously integration so this software we will compare the upstream new version that is the one and also the local one and if the differences then we do the 3A merges after the 3A merges you will generate the source package and upload and put into OBS and then request for review so you can see that the package is submitted automatically by merge our MISC and you can see the review you can see that the software builds successfully or it failed if you failed then you need one human to fix if you build successfully maybe you can just click accept it and the new version new fix will be going to your production repository and also you can hook that with your bug tracker like in the change log you have something close some bug so once the package is learned then you can have OBS to send the trigger to your bug tracker to close the bug or update the status of your bug on your working environment and also you can integrate with Jenkins to build the package from Git like we are using that for the kernel source package then kernel we have multiple working on the patch set in the Git so this one will automatically check out the repository and check out the source package and regenerate new patch set and apply to the source package and then upload a review submission to OBS you can even build like a digital image with Jenkins also in the same way the build script will fetch the packages from the OBS repository also then you can use that to build your image and also you can test that with Lava on the auto test on the actual hardware and Lava is a nice tool developed by Linaro and also what we have is kernel CI to test the kernel boost on real hardware you can integrate with Lava and there are more details I will be mentioning tomorrow tomorrow 9am in the morning my colleague Andrew Sharder will explain that Debian Directive platform for information and automatic vehicles that we are doing this and he will mention about how the infrastructure was Lava Jenkins and also as a software with OBS ok that's the recap of my talk so now you have the basic idea what's about OBS how can that solve your time save your time and also the features of the workflow and how you can install and how you may possibly integrate this into your working environment ok thank you for attending any questions it must have been in 2014 or so I know that the Debian project was looking at OBS I think it was Wookie and some other people were looking at OBS using it in the Debian built infrastructure I haven't heard anything out of that they decided not to do it are you aware of that is that somehow related to your work or not I didn't know that Wookie was looking for that I didn't know Wookie was working for that I didn't know that people who work labra now on it's not crazy but somebody has to do a little work to change everything ok any more questions can I show the benefits once again the summary of the benefits the slide the benefits can you show it once again means that very very beginning very beginning I made too many slides you mean this one mean this one benefit summary where was the benefit summary this one right this one you talked about integrating with Jenkins so people who today use Jenkins to build their packages you would recommend to switch to OBS the part about Jenkins went pretty fast it's about building distros by getting packages from OBS his question is that most people use Jenkins to build packages nowadays right and that was a beneficial switch to step OBS or not it's actually just like the previous slide here is infrastructure if you build Jenkins you don't see that overview of the packages and you don't have the review system right but if you just plus a layer of your Jenkins you generate the source package but you don't build inside Jenkins but submit the source package into OBS and build into OBS and you can see you can have an older OBS and you know nice features you can use that integrate into your build environment okay do I answer your question I have a second question how easy is it for a user that doesn't know anything about packaging to do the following to say oh I want to backboard this package that it's available in Buster and I want to have it built for stretch or even for Jesse okay his question is that doesn't have much experience on packaging you know and then they want to try to do a backboard I think yes because you can just create a project and you can set up the DOD to have different target distributions then you can just try to import the source package into that project and you can see how many missing build dependency you can also try to import without modify maybe builds but for that you have to know about the package now just import you can use the depot plugin one command then put it into the Buster and look at the web UI and see if any build dependency is missing there so when you upload this stuff adding it to the open build OBS thing you don't have to worry about this many first manifest things like the living compact rules or whatever those things yeah his question was that easy to use OBS without the packaging knowledge so that since uploaded they can yeah I think the time is up so if you have more questions you can grab me outside okay thank you for attending