Open Build Service (OBS) development has increased exponentially
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 40 | |
Author | ||
Contributors | ||
License | CC Attribution 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/54413 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
openSUSE Conference 201924 / 40
7
11
12
13
15
16
17
18
19
20
23
25
26
27
34
38
40
00:00
Infinite conjugacy class propertyService (economics)UML
00:23
Software developerOscillationFront and back endsClient (computing)Web-DesignerFront and back endsLine (geometry)Office suiteLaptopComputer animation
01:03
Front and back endsClient (computing)OscillationLine (geometry)Client (computing)Web applicationFront and back endsLine (geometry)VisualizationComputer animation
01:42
Revision controlComputer programmingBeta functionSoftware testingSoftware developer
02:22
Computer programBeta functionBlogFeedbackLattice (order)Computer programmingBlogLink (knot theory)Profil (magazine)Multiplication signSoftware bugMoment (mathematics)ChainCuboidWater vaporBlock (periodic table)Web pageBeta functionComputer animation
03:29
Form (programming)Software frameworkHome pageRepository (publishing)Web pageRight angleComputer programmingWeb pageUser interfaceBeta functionDifferent (Kate Ryan album)Home pageSpacetimeProjective planeRepository (publishing)Multiplication signCodeComputer iconBitProof theoryBootstrap aggregatingElectronic mailing listStability theoryInterface (computing)Software frameworkMathematicsElement (mathematics)Computer animation
07:39
Repository (publishing)Web pagePulse (signal processing)Gauge theoryCuboidElectronic mailing listRight angleWeb pageInformationPulse (signal processing)BitComputer animation
08:01
Web pagePulse (signal processing)Multiplication signFrequencyInformationElectronic mailing listSheaf (mathematics)Computer animation
08:27
Local GroupAvatar (2009 film)Cartesian coordinate systemTable (information)Group actionSpacetimeXML
08:59
BlogFeedbackBeta functionComputer programLattice (order)MathematicsComputer programmingTraffic reportingMobile WebComputer animation
09:40
Traffic reportingDecision theoryMathematicsInformationBitContinuous integration
10:03
ExplosionLiquidSource codeTraffic reportingLevel (video gaming)Software testingIterationTouchscreenInformationMaxima and minimaOpen setContinuous integrationComputer animation
11:06
Software testingLevel (video gaming)Projective planeDifferent (Kate Ryan album)Point (geometry)MathematicsTraffic reportingBitCASE <Informatik>Slide ruleComputer animation
12:37
CASE <Informatik>MathematicsBitRepository (publishing)Offenes KommunikationssystemSource codeQuantum stateEvent horizonOpen setTelecommunicationWhiteboardAutomationDirection (geometry)RobotComputer animation
13:58
Compilation albumReal-time operating systemInterface (computing)InformationAutomationGroup actionMathematicsComputer iconGreatest elementFeedbackInteractive televisionFront and back endsResultantBuildingComputer animation
15:15
WebsiteSoftwareSystem administratorTask (computing)Different (Kate Ryan album)Physical systemConnected spaceInstance (computer science)Software testingLoginComputer animation
15:52
LoginMultiplication signMathematicsDirection (geometry)Service (economics)Task (computing)Instance (computer science)Machine visionCartesian coordinate systemPhysical systemLatent heatSocial classComputer animation
17:34
Wechselseitige InformationCountingLoginData managementMiniDiscSpacetimeWindows RegistryFront and back endsLocal ringInformationBuildingTrailAxiom of choiceSpacetimeInformationWindows RegistryFront and back endsState of matterPhysical systemServer (computing)Instance (computer science)Communications protocolWeb 2.0Service (economics)Link (knot theory)MiniDiscOpen sourceView (database)Computer animation
21:26
Software developerSoftware maintenanceTable (information)WebsiteRevision control
21:57
Revision controlPasswordSoftware testingProcess (computing)Front and back endsPasswordRevision controlMultiplication signSoftware bugSoftware testingComplete metric spaceBranch (computer science)Library (computing)Suite (music)FreewareMathematicsCommon Language InfrastructureSinc functionAxiom of choiceReal numberProcess (computing)Traffic reportingScripting languageQuicksortSystem callReading (process)Computer animation
25:35
Revision controlExplosionLattice (order)BlogFeedbackComputer programBeta functionSlide ruleTable (information)BlogProgrammable read-only memoryBeta functionComputer animation
26:00
Videoconferencing
Transcript: English(auto-generated)
00:08
Well, we can start. Hello, thank you for coming to this talk about OBS, Open Build Service. First of all, let me introduce you to the people who is going to talk to you today.
00:24
My name is Arai. I'm a web developer in OBS. David is also a web developer. Frank works in the back end, and Marco is in charge of OSC, our command line client.
00:41
Some of our colleagues really believe that we work like this. We live in the Canary Islands in Spain, and they think we are all day long lying on the beach. Some they think with our laptop, but it's not like this at all. We work in a normal office.
01:03
We share it with all the Canarian guys, and it is quite normal, as you see, full of chameleons, of course. And this is the agenda for today. We are going to talk about what is new in OBS.
01:24
First, David and I are going to talk about the web application. Then Frank is going to explain to us what's new in the back end, and finally Marco is going to tell us the news about the command line client.
01:43
Well, sometimes we develop some features that are so big or so complex that we need exhaustive testing for them. So we need some users to test them, but they are not in a final version.
02:04
So how can we do that? We have for that the beta program, where we don't show those features to all the users, but only to those users who want to join the beta program and test what's new, all the features that are ongoing in development.
02:23
It's very easy to join. Any of you can join right now if you want. You can just have to log in in OBS, go to the profile page, to your user page, and then on the left side, you have a link to join the beta program. From that moment, you can see all the new features
02:44
that we are delivering, and you can start working with them in your daily work, and it's going to be very useful for us because maybe you can find some bugs or you can realize that some workflow has changed and it's not good for you.
03:01
So please join the beta program. It's very easy, and every time we deliver some new features, we are going to announce them in our blog. Have a look to it every two weeks or every month. Probably you will see something new there,
03:20
and it's very important for us that you test them and open an issue if you find something strange. If you join the beta program right now, you can see that we have a refreshed user interface. You can see that most of the pages has looked a different way.
03:45
And why do we rebump the user interface? We have many reasons for that, and the most important one is that the technology we were using is now obsolete, and it is no longer maintained.
04:03
So for this reason, we are revamping it. We have to choose a new technology, but there are more reasons. Another one is that we want our user interface to be mobile-friendly. We also thought that it was time
04:21
to make it more modern and a bit nicer. And it's also useful for us to rewrite the code a bit because it was a bit chaotic sometime, and we need them to be tidy and clean to be able to refactor it in the future
04:44
or maybe changing the workflow, and it's easier if we have everything tidy and clean. Well, we did some proof of concept with some workflows, some frameworks, sorry.
05:01
We tried semantic UI. We also tried Bootstrap and Bulma. And finally, we realized that the best for us was Bootstrap. The reasons are, first of all, there is a big community behind Bootstrap. It is a stable project.
05:22
It's reliable. It's well-documented. It has all the features we needed. Some of our colleagues had experience with it, so we choose it. I'm going to show you some of the pages that has changed.
05:48
This is the old main page, the home page of OBS. And now you can see how cool is it nowadays. A lot of change, right?
06:01
Amazing. Don't you think so? I don't think so. Yes, it has changed a bit. We have new icons. The layout is wider. We have more empty space between the elements,
06:20
but it's not really a big change, as you can see. But it was what we wanted to achieve. We didn't want to disrupt your daily work. We just wanted to keep it like it was. But it has changed a lot behind.
06:42
The code has changed a lot. We have migrated a lot of things. So for us, we are getting what we wanted. This is another example. This is the page of the project. And it looked like this before, and now it looks like this.
07:02
Yes, a bit better. Not bad. Most of the pages are migrated like this, keeping what we had before, but making it more clean. And now I'm going to show you some of the pages
07:23
that really changed because we thought it was necessary or it was a bit confusing before. And the repositories page is one good example. It was like this. We had some, we list some, all the repository names,
07:42
a bit more information. But now we have, we are displaying these in boxes. So we are using all the free space on the right. So it looks better now. This is another good example. This is the Pulse page.
08:01
And this is, it was a list also, and now it looks like this. It's colorful. All the information is divided into sections. And we also can select for period of times there.
08:22
So it has improved a lot. Also, we did some good job, I think, with the members, group members tab. Before it was a table for only one column or two, if you are admin. And now we can see all the users like this.
08:45
We focus on the avatar and the name, and they are side by side to use better the space. And we did it. We have our application, and now it's mobile friendly.
09:00
It looks very well in the mobile. And you can see everything I have just show you if you join the beta program. So please join. Please give us feedback. Please let us know if you have found something wrong or you suggest any change.
09:23
That's all from my side. Next, David, I'm going to tell you more interesting things about OBS. Thank you. Thank you, Sarah. I look like a singer with that. Okay. So now we have the status report API.
09:42
I mean, in the last few years, we was trying to do some changes. We were trying to improve our continuous integration. And we know that when we can provide more information, you can take better decision for stuff that you can do in your workflow.
10:01
So let's explain a little bit what is a continuous integration. So imagine like in GitHub, your source code is, you have a pull request. So it's trying to build. We pass up to some tests. And after that, the tests are reported. So you have some report.
10:20
And everything is green, everything is fine. So it's merged to your source code and you can release it. What we have done with the status report API is an API that you can take this information from the external tool and show it in OBS. That means that when your, for example,
10:43
Travis tells your test is green, in OBS, you can show this information. You can see it in the checks that is below that we have some test with OpenQA that is succeed. Another one with a minimal that is pending because it's not finished. And one that is failed.
11:01
And with the status report API, we empowered our staging workflow. Our staging workflow is some kind of CI because with that, we can take a bunch of summary requests and test all together. So for example here, we can see that we can take a lot of packages,
11:23
a lot of summary requests that you want to integrate in your project. You add it in a staging project that then you start to build. And it starts, it is that in a external CI. With the status report API, you can check if the external have done or finished it.
11:43
And we have finished it. Sorry, I forgot this slide. If I finish it and report it, and if it's green, you can merge it and you can release it.
12:00
So here we have an example. So here you can see the staging workflow. In this case, for the project that's Linux. And I think it looks nice because it's very useful. So with that what we want is, sorry. So with that, you can see that the good point of the staging workflow is that
12:21
you can take different change, these friends submit request that's currently different changes from different projects and you can test all them together. Not like the other CI that you can only test them independently by Y1. So now let's speak a little bit about the future.
12:43
So right now what we have is that when some changes occur in our repository, that is the case of GitHub. Someone contribute, make a pull request,
13:00
this pull request is merged. GitHub sent to us a request and then we start to do stuff. For example, updating the source, start rebuilding. But what we cannot do and we want is when something happens in OBS, we should also be possible to send an event or send a request to another external tool.
13:22
For example, in the case of OpenQA, so we want an event to happen in OBS, we can tell to OpenQA, okay, now you can test. OpenQA is an automated tool for open system. That could be OpenQA, that could be also Travis, any other kind of tool that we want to do.
13:41
So with this concept, we try to improve the communication with the tools directly. We don't need any intermediate or any kind of bot or any kind of cron that do stuff in the middle. So we want to connect and talk with the external tools directly. What another improve that we want to do
14:01
is automatic interface updates in real time. What that means? That means that you don't need to do anymore F5, F5 to get information. So let's have an example. So here you can see that your user is interacting with the interface and he talk with the backend and the backend gave him the answer.
14:22
So if he want to give an update information, he need to refresh again the page or do another action to get the feedback. And in talking a real example, here you can see the build result. That's the package per city that is still building from some repository
14:40
and if the user want to know if the build has finished, he need to click in the refresh icon that is on the top. And sometimes nothing change because the backend is still building. You don't have any information. So what we plan to do really is when the backend has something to update, the interface should show the update information.
15:01
That means that this build is taken that's in the bottom should automatically change to succeed if the build will succeed without any interaction from the user. So now, without any, since we've been itching, and as we, the team,
15:21
we are responsible for the instance, buildopensource.org and we are many and many admin tasks like deployment, debugging, issue looking into the logs, monitoring into different dashboard and we want to avoid this kind of task
15:41
and doing thing more automated. And automated, sorry, and connect system via software. Regarding the deployment, as we are many people doing that and we expect in the future that more people will do the same,
16:03
we need to have some kind of, we need to start managing the deployment. So we would like to know the current deployment. We also would like to set deployment in a specific time or even know what's happening in the past,
16:21
I mean, the history of the deployment. Another aspect is we also try or maybe sink going to the direction to the continuous deployment. That means when a change happens, the deploy will automatically get a deploy.
16:41
And that will provide to us more time to be able to focus in more important tasks. For having a clear vision of what's happening in the buildopensource.org, I mean, the instance that we are in charge right now,
17:01
we have to increase the monitoring for the application health, for application health. I mean, for example, for example, to look performances or to see what's happened there or what's happened with our system. And we also want to be alerted,
17:22
I mean, to get some notification when something critical happens to be able to fix it as fast as possible and give you a better service. So for example, right now, we have performance monitoring for that.
17:41
We also have tracking, a tracker exception, but they are all disconnected. They send to us their own notification. And for us, it's a little of sometimes very hard to have an overview of the state of what is happening in all the place. Maybe the system is down,
18:02
maybe the user makes something wrong, something happened, and for us, it's very difficult to track all this information. So what we want to do is to work, what we want to work is to connect all these tools. Because like I said before, when something wrong happens,
18:20
like for example, the service is down, we want to know what's happened and we want to know it the easiest way to check what is happening. Sorry.
18:41
And also to be sure that we, and having this information, we can fix the problem as fast as possible and give you a better service and bring back the service to its normal state. So in resume or in summary,
19:01
what we want is to have an automated, connected and observable system. And that's all from my side. So Frank. Thanks David.
19:22
From the backend side, it was really hard for me to find something what might be interesting for the users because we did many improvements and for the speed of the backend. But mostly, most users don't see the things
19:44
we are doing there. So I will concentrate here on the constrainer stuff. We did it in the last year. We replaced scope view as a tool for our container uploads to a registry.
20:04
We implemented container unpacking and layering on the server side and implemented the whole Docker registry protocol.
20:21
So OBS now can run as a Docker registry natively and a notary. So this is especially interesting when you run your own instance because this saves a lot of disk space.
20:44
By this, I don't know who has already used registry open source work. Okay. We now enhance the information which registry gives in the web front end,
21:01
especially here. You can see that you have a link to your building project where the container is built. And now you also can choose Potman as your tool of choice for using the Docker containers.
21:26
Yeah, and that's from my side. And now I hand over to Marco.
21:40
Hello, my name is Marco. Most of you might know me from sitting behind those video tables. But beside of that, I am the OSC maintainer and OSC developer. And I make it really short because there is no big news. We are on, the current version is 1.6.5.1.
22:03
There was six releases since last year, since I gave the almost same talk in Prague. We have 146 commits since then, which most of them are just small stuff,
22:22
but nevertheless, 146 commits. And there were two big changes. One is the URL grabber is no longer needed, so we are not dependent on him anymore. And the reason why we are not dependent on him anymore is we are Python 3 compatible since the latest version.
22:44
Yay! It took a long time, but at least we made it. So I have a lot of free time. No, not really. Because the next things, we will completely rewrite the password handling
23:02
because it's a pain in the ass. It's not good because if you ever have tried using keyring, I don't know, have anyone? Is using keyring with, yeah? Yeah, it's possible, but it's not user-friendly,
23:21
let's say it that way. So this will be better than the complete setup process, so the first time you start, OAC will be improved so that you get, like, you have the choice, should the password be stored at all, should it be stored in the keyring, something like that. Then the documentation, as always, needs to be improved.
23:43
If anyone is interested in writing documentation, please come to, oh, cool, I will come to you. And what I realized while migrating to Python 3 is that the test coverage in Python, in OAC, is not very good.
24:00
We test the base library where we mock the backend calls, which was nice because I used this Py223 script, run it over OAC, let the test suite run, everything works, I was very cool. I'm done, five minutes, I don't know what your problem is.
24:21
Yeah, but then I started using it and everything broke, so we need better test coverage, we need better way to test, like a complete CLI test, not only mocking the backend, but more like testing again against a real backend. And of course, there will be a lot
24:40
of Python 3 bug fixes coming, so we will see a lot of releases like 165.1.2.3.4, you name it, until the Python 3 branch is completely stable. So if any one of you is, please use the Python 3 branch, I am open to bug reports, I'm happy to receive bugs,
25:01
because the more bugs I get, the more I can fix, and the more stable the Python 3 branch gets. So that was from my side. So questions? I think this is not just for me, this is for everyone. So if, yeah, if someone who is responsible for this talk.
25:26
I save you. Okay, any questions? No? Thank you very much. So before we leave, please. I forgot one slide in this talk, in this tab, wait, wait, wait, wait.
25:44
I'm trying to, okay. Don't forget, please, join the beta program, try vlog.org and create users, and also review our blog for more news. Thank you very much.