openSUSE Conference 2019 - Introducing Pagure
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 |
| |
Subtitle |
| |
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/54408 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
openSUSE Conference 201929 / 40
7
11
12
13
15
16
17
18
19
20
23
25
26
27
34
38
40
00:00
Software developerVideo projectorGoodness of fitProjective planeBitOpen sourceDomain nameRevision controlSoftware developerDistanceCollaborationismMultiplication signRepository (publishing)Proof theoryComputer fileWebsiteProcess (computing)Interactive televisionCorrespondence (mathematics)Default (computer science)TrailState of matterCodeSoftware repositoryEndliche ModelltheoriePatch (Unix)MiniDiscInstance (computer science)Computing platformSoftwareNumberPhysical systemLine (geometry)Connectivity (graph theory)Power (physics)Server (computing)Video gameCartesian coordinate systemComputer configurationControl flowEntire functionSeries (mathematics)Row (database)Web browserLevel (video gaming)WordLatin squareFamilyQuicksortDemo (music)Point (geometry)Arithmetic meanDifferent (Kate Ryan album)ACIDElectronic mailing listMultilaterationTerm (mathematics)Logic gateTunisOpen setMobile appNetiquetteDiscrete groupGroup actionSoftware development kitFunctional (mathematics)Computer animation
07:49
State of matterElectric currentHill differential equationBitInstance (computer science)Extension (kinesiology)Right angleReverse engineeringRepository (publishing)Key (cryptography)Multiplication signDefault (computer science)EmailNumberPhysical systemClassical physicsWeb 2.0Message passingBus (computing)Floppy diskSynchronizationPoint (geometry)GodView (database)Coefficient of determinationPlug-in (computing)Mechanism designMiniDiscString (computer science)CodeLogicPrincipal idealProjective planeSoftware maintenanceSimilarity (geometry)Cartesian coordinate systemScaling (geometry)Traffic reportingSoftware bugDivisorComputing platformMetadataSoftware repositoryoutputTrailQueue (abstract data type)Capability Maturity ModelHand fanService (economics)Computer fileCommutatorException handlingGroup actionPresentation of a groupConfiguration spaceLogic gateContext awarenessHookingDatabaseContent (media)Standard deviationOptical disc driveQuicksortSystem administratorInterface (computing)
15:18
BitMetadataPresentation of a groupSoftware repositoryMathematicsUtility softwareMultiplication signPlanningWave packetSoftware bugElectronic mailing listCloningSoftwareHookingDatei-ServerLibrary (computing)Projective planeProduct (business)SynchronizationInstance (computer science)Complex (psychology)Computer animation
17:50
Level (video gaming)BitPhysical systemOrder (biology)ChainComputer fileINTEGRALDifferenz <Mathematik>NumberCodeOperator (mathematics)EmailPattern languageLibrary (computing)Patch (Unix)Address spaceSoftware repositoryMultiplication signLeakTask (computing)CloningRepository (publishing)Content (media)Set (mathematics)Open sourceBranch (computer science)Exception handlingPoint (geometry)10 (number)Message passingDisk read-and-write headWeb 2.0Twin primeProjective planeProcess (computing)Computer animation
22:05
GAUSS (software)Virtual machineComputer animationLecture/ConferenceMeeting/InterviewSource code
22:42
Data miningHash functionFiber bundleBranch (computer science)Projective planeMathematicsRevision controlDifferenz <Mathematik>BitComputer fileHyperlinkConfiguration spaceMiniDiscSoftware repositoryInstance (computer science)Patch (Unix)SoftwareDescriptive statisticsNetwork topologyRadical (chemistry)Computer animation
24:24
Computer fileHash functionBookmark (World Wide Web)DreizehnCommon Intermediate LanguageExecution unitFluxRadical (chemistry)Computer fontComputer fileRight angleDirectory serviceLevel (video gaming)Source codeComputer animation
25:24
Hash functionHill differential equationBookmark (World Wide Web)Normed vector spaceHydraulic jumpMereologyComputer fileLevel (video gaming)2 (number)Demo (music)Configuration spaceEmailBeat (acoustics)AuthorizationSource code
26:50
Drill commandsHash functionBookmark (World Wide Web)Streaming mediaWeb pageLemma (mathematics)MassRight angleSoftware repositoryComputer fileDifferenz <Mathematik>Branch (computer science)CognitionLevel (video gaming)PlastikkartePattern recognitionSource codeComputer animation
27:26
Web pageTask (computing)Hash functionOnline helpGrand Unified TheoryMusical ensembleRight angleTask (computing)Source code
28:11
Task (computing)Web pageHash functionBookmark (World Wide Web)Revision controlPhysical systemRootInformationAuthenticationElectric currentInformation securityConfiguration spaceParameter (computer programming)Data managementDemonVideo game consoleOpen sourcePerturbation theoryDampingNetwork topologyComputer fileBranch (computer science)Task (computing)Branch (computer science)Computer fileInterface (computing)Level (video gaming)Subject indexingSource codeComputer animation
29:12
Software developerSlide rulePresentation of a groupCache (computing)CodeDifferent (Kate Ryan album)Product (business)Perspective (visual)Instance (computer science)Key (cryptography)PressureComputer architectureSoftware maintenanceProcess (computing)TrailBitTraffic reportingIntegrated development environmentPoint cloudArmBinary fileServer (computing)NumberPhysical systemSpacetimeBuildingMereologyBridging (networking)Hybrid computerComputer fileLevel (video gaming)Axiom of choiceExterior algebraFocus (optics)Proper mapProjective planeNetwork topology1 (number)AuthenticationVapor barrierAssociative propertySoftwareEmailAddress spaceFront and back endsSoftware repositoryPoint (geometry)Constraint (mathematics)PiKernel (computing)Goodness of fitPatch (Unix)Binary codeUsabilityMiniDiscStack (abstract data type)Uniform resource locatorDirection (geometry)DampingOpen sourceSign (mathematics)Logic gateRuby on RailsData Encryption StandardCompact CassetteKnotOpen setShift operatorValidity (statistics)Boundary value problemPredictabilityComputer animationMeeting/Interview
38:46
Videoconferencing
Transcript: English(auto-generated)
00:06
So good afternoon everyone So, I'm Pierre Chibon also known as Pingu and Neil and I are going to introduce you a little bit about the Pager project So what's on the agenda?
00:21
Basically, we'll start about what Pager is We go back a little bit through the history of how it came to be I'll present you a little bit further what the state is currently in and some of the features it has I'll speak quickly about the ecosystems and some of the application you can find around Pager Some of the ideas we have for the future and then Neil will take over for
00:44
Tempting Murphy and see if we can actually get a live demo to work on stage here So to the start what Pager is So it's very hard word to pronounce for non French people You can ask nearly as problems of it
01:02
Yeah Pager is a hard word to say So it's the French words that refers to the Latin word Pagerus, which is Which is a family of seashells of which the most well known is the Pagerus Bernardus which is otherwise known as the air meat crab and
01:20
Some of the picture you can see in there It's it seems to be anecdotal from this But I'm actually going to come back on this in a little bit later because there is a little bit of a meaning behind this using this name So for the purpose of this talk Pager is going to refer to a lightweight gig centric
01:41
Python based full project hosting Forge which also happens to be you know, the GPLv2 or later versions How does it came to be well started in the federal project and more precisely Because of the release engineering team. So the release engineering team in Ferreira used to work in
02:04
in a close proximity to each other, but also a little bit of Hard-to-reach team in in in Ferreira you could it was hard to collaborate with them It was hard to reach out to figure out what they were working on how they were working on them and see Where you could poke at things to help them So they wanted they were self-conscious of that and one they wanted to prove to improve that situation
02:24
So they wanted to open up the collaboration to get more of the the people in the federal community to help with release engineering At that time we have Pager which was then called ProGet as a proof of concept of the site something which I worked on the on the site to see Basically, I was looking at interaction between Python and get them
02:45
So why Pager well GitHub is that the default nowadays platform for building open-source software for building software in general The main issue is when you look at the licensing you're probably all aware of that But github is not a free and open source software
03:03
So for release engineering in Ferreira They really they were really attached to the to the notion of using only free and open source software to build federal So github was out of the picture Then we have a number of competitors We have fabricators we have Gerrit But those are actually mainly about code review systems
03:23
they are I spoke about with the one of the fabricator developer back then and There was ideas about including an issue tracker in fabricator but it was something down the line and not a priority for a project it wasn't what the project was meant to for and for GitLab one of the requirements we had then was that everything in federal infrastructure had to be deployed from an RPM and
03:46
Getting GitLab package was has been a multi-year Tentative which has never succeeded. We've never been able to actually get GitLab package in federal despite having several people working several years on this effort and
04:00
There is a second component to the GitLab is I don't know if many of you have been actually trying to maintain GitLab But I will let Neil mention somewhat about that so GitLab is great when you're using it as a user and It has a lot of powerful functionality, but on the flip side when you're administering that server
04:21
Your life is kind of hell they the the options tend to change quite a bit the way that it actually handles its upgrades is rickety as best and Every it's always a new surprise what breaks in a GitLab upgrade like there was a
04:42
For one of the places for where I have maintained a GitLab server for Going on a couple of years now There was a an entire release series like three or four releases in a row where merge request did not work because Loading a merge request would cause it to spike up. The browser would be overloaded. There'd be so much JavaScript
05:04
It would all fall over and you couldn't actually do anything That sort of defeats the point of something that kind of emphasizes a merge request style or pull request style workflow So it was a not fun So we've all just considered the reason generating team in Farah decided
05:20
Well, you know, let's give pager try and see how we can bring it forward This has impacted also another team in Farah, which is the infrastructure team itself Back then we were running something called federal state org and it was a place for Upstream so, you know just a place where you could use your code
05:41
Remember that for us it basically started a little bit before GitHub or at least before the guitar became what it isn't today To the point that we actually were using track Zero to twelve. I forgot to pick that version. So we were still using zero to twelve Even after the one that our release was was released and out
06:04
We were winning difference instance of track for each projects It wasn't self-service So basically if you wanted to create a new project in the federalized co-system using the federal Oste.org domain you would have to open a ticket to an infrastructure to the infrastructure folks One of them would wake up see the ticket process it create the corresponding git or SVN or
06:25
Mercurial and bazaar. I don't think we did we have CBS back then but we were offering all of these options and And set up the track for you So, you know, it could take between a few hours to a few days before you actually you were actually able to publish your code
06:40
The other place where we store code in federal is the this git repo So it's the place where we have a git repository for every package we ship in federal The thing is for a while. There was no collaboration model on this git If you wanted to contribute to a patch to a spec file the best way to do that was you know
07:02
Go to bugzilla open a ticket and attach your spec file in there, and I'm sure we all love the reviewing patches on bugzilla tickets So This has come to what Pago is today. So to give you some dates The first commit on the project is from March
07:21
2014 So a little bit more than five years ago and the Pago.io itself was released on May 2015 so a little bit more than a year after that federal seed was sunset in 2017 source.federalproject.org was launched on February 2017
07:40
So that that this is our disk it instance. I'm sorry on August 2017. That's our disk it instance and CentOS has recently also deployed Pago on the top of the disk it last April How does it look from a usage point of view? Well Pago.io has about 1600 projects today from about 700 users and
08:04
140 groups Needless to say that the number of projects that we have on Pago.io is Vastly greater than what we ever had on federal seed.org Just the fact that you just can self-service has tremendously helped in there So if you're wondering how Pago scales
08:24
On federal we are running an instance that has about 30,000 projects. That's how this gets You know almost 3,000 users CentOS just started and they only have 7,000 projects so far and On the scale ID I'm aware of one Pago instance that is running with close to
08:44
45,000 projects so it does scale to some extent So what does it do? Well, it's a it's a forge, you know Nothing new in there. We are we have a place where you can host your code where you can place your documentation where you can have an issue tracker report bugs report RFEs and
09:05
It's provides the now defacto standard fork and pull request or merge request workflow One of the some of the feature it has it's it designed to not be platform locking so Each project is actually composed of four gotcha git repositories
09:24
One is the main one you interact with the one that you're the most used to which odds your code The second one hosts your documentation the documentation can be text files HTML Markdown rest the markdown and the rest file will be converted to HTML on the fly and Then we have another two git repos one that contains all the ticket metadata and one that contains all the pro request metadata
09:47
So if you want to move out of kids of Pager you can download these two days for git repos and you have everything that is in the database for Pager for your project It's also comes back to the the pager instance the pager
10:02
animal on the side there Because one of the original idea was that you would be able to move a project from a pager instance to another one And that's actually also how we migrated our project from federalistic.org to pager.io We dumped the content from track formatted it in the way that pager expected it Enable the hook on the ticket and the pull request tracker
10:24
Get pushed and everything appeared on the pager side. So one of the original idea behind this would also that you would be able to have a Private internal pager instance and a public external pager instance and you would be able to sync issues from one to the other or pro request from one to the other
10:45
We also provide mirroring, mirroring to Pager or mirroring from pager So if you look at pager, we basically, you know, eat our own dog food So pager.io slash pager is the original project, but pager is also present on GitHub and on gitlab.org
11:02
We have a third party plugin mechanisms and we're starting to make use of this on The disk instance of pager in federal so that we prevents We are able to prevent new endpoints that that allows us to expand the use of pager without You know without putting in the upstream code
11:26
Endpoints Logic that is specific to a disk deployment So something we worked on recently in federal you have a point of contact You have a main principal maintainer for every package and sometimes that person goes out and goes away and then the package is off-hand
11:43
For a while people are able to unoffend the package. Let's make it their own So we have a mechanism using this we are able to say Well if the package is off-hand and that person is a packager They are able to take the to take the project from this orphan user We have an extensible git hook system
12:01
So if you want to write your own git hooks if you want to make it available all the projects on your four or Something that is optional. It's easy to do we have teams. So we have four teams by default I'm going to quickly go through three of them This is the pager.io one
12:22
Very very simple. We have a very similar one for the disk.git instance. This is it that reminds me of the Presentation we had yesterday about using similar SIEM across applications This is the git.centuaries.org and this is the closest one to the default. They basically only change the logo on the top here
12:45
And for the first team, I'm actually leaving the surprise for a little bit later Some of the other things it does so, how does it check SSH access? How does it check who can access which repos? Well originally our disk.git instance was using Git-O-Lite
13:01
So we built Pager on the top of Git-O-Lite and to some extent you could consider Pager to be some sort of self-service admin interface of Git-O-Lite But we very simply also get rid of it because it has given us a lot of problems When you have 30,000 repositories and you refresh the Git-O-Lite configuration file
13:20
And you need to recompile it every time you're adding a new contributor to a project or adding a new project It can take a little bit of time So we also figure, we also now Pager itself for ways of deploying it without Git-O-Lite And some of the things which is also nice, you can just reply to a comment You know whether it's from a pull request or from an issue by email
13:42
And it will show up in the database and in the UI We have also a number of notification systems The classic web books that now everybody uses, but we also support a number of message bus So we have FedMessage Which started to be the FedMessage bus and then got into, got trained into FederatedMessage bus
14:03
Which is a REMQ based, so it's a very much a fire and forget system We're moving from FedMessage to federal messaging in the federal infrastructure which is MQP based But we also support Stomp and MQTT notifications So to give you an idea, federal is using the top two
14:23
I know about one instance that's using the third one and the centers folks are using the MQTT one On the community side, we have 146 contributors It seems to be not so much, I mean you know when you look at bigger projects
14:40
On the other side, from the infrastructure point of view This is definitely the project that has had the largest number of contributors There used to be 40% of the contributors in the top 10 that was not Red Hat employee Except that we hired one of them So it's only the top three, out of the top 10 contributors it's only three that are non-Red Hat today
15:02
And we have listed here the three public instance which I've already mentioned But we are aware about a few private instances as well One of them, I'm not going to reveal any secret here, is run internally at Red Hat Others are run in different companies So when it comes to the ecosystem, it's a little bit around Pager
15:22
We have, so with the principle that you can have the issue metadata present in a Git repo That you can clone, there is a small utility which is called PAG-OFF Which basically lets you interact with your issue tracker offline I use this all the time, when I'm traveling, when you're on a plane, when you're on a train
15:40
You can just do something like PAG-OFF list Pager And it will go to your local clone of your Pager tickets and give you all the tickets that are open You can assign them to yourself, you can close them, you can comment on them You can do anything offline And when you reach network again, you just do a Git pull, Git push If you have enabled the right hook in the UI, your ticket is up to date
16:05
I find this very handy We have a small Python library that interacts with the Pager API It's not feature-complete, it's something that was started by contributors in the Pager project So it's not feature-complete, it does not cover the entire API
16:21
But it gives a base where people can collaborate if they need to Or if they want to expand and interact with Pager in a project The third one which I'm going to speak about is called RepoSpanner It's something which is fairly new We are currently running it and rolling it in production
16:42
It's a distributed Git storage server So one of the issues of Pager is that it needs direct access to the Git repo Which means that you can't really do load balancing unless you actually use something like NFS And then you run into... It's doable, I know an instance of Pager that is running with the Git repos and NFS It also can be a pain to deal with every once in a while
17:02
So RepoSpanner partly solves that because you basically create a cluster of RepoSpanner nodes And it mimics a little bit what GitHub uses in production So every time you push something, it will sync your push to the nodes And it needs the majority of the node to hack the change before it allows the push to go through
17:22
If the majority of the nodes is unavailable or not able to hack your push It will deny the push and you will have to retry it later on It also means that if you have a cluster of three and two have accepted the push Then the third one is going to catch up later on It's very powerful
17:42
It's complex but it's very powerful and it's quite a nice piece of software So that's where it is today and what you can find around it And the idea is for the future So this used to be roadmap but I fear that using the terminology roadmap here Meant a little bit more, this is going to happen
18:02
While these are more foggy ideas of things we could do I don't know if we will go to there One of the ideas actually to do a tighter integration with RepoSpanner Currently, RepoSpanner is entirely optional Moving to it would actually allow speeding up a number of operations in Pager
18:21
Pager relies on PyGit2 which itself is a pattern binding to the libGit2 libraries Which has a number of issues One of them, for example, is cloning a Git repo leads, leaks file descriptors So if you have a lot of clones running at the same time You end up with too many files open, exceptions
18:42
To the point that I was receiving tens of emails today about this problem And I have actually replaced the libGit2 or PyGit2 repository clone by a simple subprocess Git clone I'm very happy about that, but that actually was a better fix than keeping on what it is today
19:04
So moving to RepoSpanner would actually move more operations to RepoSpanner Making it not optional would actually allow us to farm out some of the Git operations to RepoSpanner Which is what it means to do Improving the content of the webbooks and the notifications So that's something that Neil has reported
19:21
Basically, apparently the payload that we're sending on the webbook and message post notification Is not enough for everyone to act upon So we need to identify what content is missing from these notifications and add it in there We would very much like to be able to figure out a way of having a CI system
19:41
Integrating on Pager and to make it as easy as obtaining into Travis CI It's probably going to be something like you have a checkbox in the settings and a YAML file to do in the source And it would automatically run the CI, triggers it on pull requests, on commits, and let you know how it went One of the ideas which I have on the back of my head is the pull request dependencies
20:05
If you work on different features at the same time, you're probably using different branch for each feature Potentially, a feature is going to depend on another one Just because you want to merge feature A and then B and then C, even if they are independent from each other
20:20
If you keep opening them all against master, it's great Except that your CI system is going to compare what is feature A against master What is feature B against master, what is feature C against master And every time you merge one of them, you need to rebase the other two To be able to see, okay, what is the CI system now saying with A merge and B and C
20:41
So if you're able to say, well, I want to merge A first and then B and then C Then we would be able to show you the pull request of C against B, B against A, A against master And your CI system would be able to say, well, I'm running A against master I'm running B against A and C against B
21:01
And well, you know, if you change the order, you just change the dependency order And I would make reviewing easier because you would not Because of chain pull, you would see the diff only of feature C against feature B And not A, B and C against master And you would also have, when the CI system runs and you can go through the code
21:21
There is nothing to change, you can just, you know, merge A, B and C in one go And you know your CI system has already tested A, B, C merged together One thing which we also have is the ability of creating a pull request from an email So basically sending a diff or a patch to a certain address that would open a pull request to that project
21:45
So again, these are not necessarily things that will be done or will be done in time soon But these are things that are on the back of our mind and we would very much like to do Or you know, if anyone in the assembly would like to work on any of these tasks We would very much like to help you and get this merged in
22:03
And with this, I will let Lee see if we can actually master Murphy for this afternoon
22:36
So this is a virtual machine running OpenSUSE Leap on it
22:41
And I have this running on here So this is a PAGR instance running the surprise theme Which is actually contributed by Stasiak for PAGR a while ago when we did the 5.0 release It's based on the theme that came from software.openSUSE.org So it's the chameleon theme as it's called officially the tree
23:02
And I pulled in a couple of projects in here to kind of show off what it looks like So this one's the RPM config SUSE project Which was, I mirrored this actually from GitHub earlier this morning And pulled that in into here and you can see Like there are the changes that went in from these people
23:20
If I do this one here You can see the diff, the commits, you can even see all the references Hyperlinks are clickable and that will go to the place of the GitHubs Other branches, the original version of RPM config SUSE that I wrote is there Yeah, and the other one I pulled in was something that kind of looks somewhat like what we have in Fedora with DiskIt
23:45
Where I pulled in the salt packaging repo that's on the openSUSE GitHub org And in here like you can see there's the patches in here You can see that the diffs are actually like highlighted correctly And then if we go to a spec file here
24:02
The spec file syntax highlighting, totally correct, has the comments, descriptions and whatnot And then let's see all the crazy branches for all the different versions And all the crazy things that have been going on in here No tags, releases, so a little bit in here
24:24
Let's, oops, that's the wrong terminal Hold this, thank you, that makes that easier Just switch this to mirroring because this is very, very hard
24:41
Don't use a separate mirror And there we go Now, from in here, let's go into salt and I'm going to do Yeah, let's put some bigger fonts in, not the right one
25:01
This one Alright, so in salt here we've got all of these crazy files I'm going to git mv all the things to the top level directory Git rmr, the salt directory Because the salt directory doesn't exist in git anymore because that's how that works Git commit dash m
25:25
Well, move to top level Author, oompa, and oompa, opensuza.org And we'll do a dash s just for the funsies
25:41
As, not name, email, and does not match, oh, because I forgot the funny quote thing at the end There we go And then it's going to make that commit And that is, I am moving a shitload of files That's probably going to not be fun no matter what with git Do it, or you're going to just claim, hold this for a second
26:11
Bloody demos Alright, git config global user email and oompa opensuza.org
26:23
Git config, I can't believe I'm doing this now Shame on me for not trying this part first Now I can do this, there we go And then git push Actually we're just going to do a fun thing
26:41
Gitify, bash, push Push this here V Push that here And that is pushed, I can create a pull request right here And we see here, open PR And I can do this against, normally I could do this against like a fork or whatever
27:02
But since I just did it within this repo There's the thing, create the pull request You can see I changed 21 files here Moved to top level You can see I renamed all these things, there's no diff here So it's got smart diff recognition for renaming And then, delete branch after merging and merge
27:26
Confirm merge Ah yes, the worker should be running Otherwise, very bad things would be happening right now Oh, very bad things might be happening right now
27:45
Journal, hold up Okay A few, bagger worker And because of that, sudo
28:06
Grabbing lock for one It is doing stuff, right? Task is running Yep, there we go, so it's starting to do stuff on the inside
28:26
You can see it's doing get things And is it still like trying to do this merge? No, it's done, there we go Moved to the top level, top commit Branch went away, nope, it's still trying to delete the branch
28:42
But there we go And you see here on the top level, all the files are here Read me about SUSE, did funny syntax highlighting But spec is all here And the pull request is done Yep, so there we go That's kind of the basics of what the packer interface stuff looks like
29:04
Didn't go quite as perfectly as I hoped, but I think it went okay And you'll get the very important question I'm in the very important slide now
29:29
And the very important slide that says thank you for your attention And if you have any questions And I see one on the back there Hi, thanks for the presentation
29:41
So my question is, does packer support PGP key signed commits? So the question is, does packer support GPG signed commits? So as a Git repo, it supports GPG signed commits It does not currently show them in the UI
30:02
Nor validates that the commits belong to the user So you can't associate a user with a... You could via the email address I guess It does not show that in the UI But the backend does support it like any other Git repo Would this be a good feature request? There is already a ticket on that
30:28
Another question coming How do you store the binaries? So you have a spec file and patches But usually you also have tarballs and binary files How do you store them?
30:41
So the question is how do we store the binaries On the Fedora disk Git I guess So is there a Git-integrated solution for that? I mean, I'm from the openSUSE world So I have no clue how we do that So in Fedora we split in two different locations The tarballs from the spec files The spec file on Git repos
31:01
And tarballs on the lookaside cache On the side of it And our build system pulls the spec files Which also contains the file sources Which includes the checksum of the tarballs And using that checksum retrieves the corresponding tarballs From the lookaside cache So if I want to do a code hosting scenario using Pago
31:27
What are the key gaps slash differences Between Pago and let's say GitLab? What are the key differences between Pago and GitLab?
31:43
My take will be It's going to depend on the technology stack that you're currently using If your team is familiar and well versed in Ruby And knows how to maintain GitLab instances Then I would probably rely on GitLab
32:00
If your team is a Python shop Or doesn't have much experience running Ruby instances Bagger is probably an interesting project to look into A little bit of this The other thing is If you're running more constrained environments One of the things that finally pushed me into starting to look at Bagger more
32:22
Was that I could no longer run GitLab comfortably On my tiny cloud VPSs Or on my little crappy ARM servers that I have at home And so with more constrained environments Or more flexible environments Bagger is a lot easier to roll out and manage
32:42
And it's easier to plug into other infrastructure If you really want to because of the way that the architecture is set up Whereas GitLab is a very very large monolithic Ruby on Rails thing With weird hybrid things all over the place So at least if you don't need all of the fanciness that GitLab has
33:00
And if you want to have a somewhat smoother and easier experience Maintaining your Git server And you've already got like maybe And you have some level of Python experience For like maybe if you want to extend things a little bit Bagger is a lot nicer of a choice than a lot of the other alternatives So it's production ready then?
33:21
I mean we're running it all over the place I mean I personally have two private Bagger instances One that runs on Fedora and one that runs on OpenSUSE And mainly because the OpenSUSE one runs on Python 3 But in the Fedora project we've got several of them
33:41
I think we have two production ones Two staging ones And then CentOS has a production and a staging And then we have a thingy that floats around doing stuff There's a few, I know of a few public independent instances that exist
34:02
You can kind of find them if you know how to Google for them There's also a few people that are using it for their internal corporate Bagger instances And they've actually contributed fixes and improvements to us as well So like the low barrier to entry to contributing and making the software better
34:21
Is actually I think a huge plus point for a lot of people Just a side note on the resource constraints I actually managed to get Bagger running on a banana pie I'm not saying it was fast I'm not saying you want to run the Linux kernel tree in that Bagger instance But it did work
34:42
So two more questions First of all when it comes to using it internally Has your Red Hat product team ever thought about integrating it into the OpenShift story or so Or are they on a completely different track with their technology stack And the second one on the CI Do you already have any direction like
35:01
Is there an existing CI project you would want to integrate Or are you going to build this from scratch Are there any ideas about that one So there are two questions here One is from a product perspective Has Red Hat considered Bagger to become something to predict To predict is not actually able to answer that question
35:21
I don't think it has been considered as such It is run internally And I can also say the internal instance is running in OpenShift That's how we know it does run in OpenShift And the second question is about the Bagger CI So we currently support Jenkins And you can point Bagger to any Jenkins instance that Bagger can access
35:46
The Jenkins we mostly use is the one that is hosted by the ci.centos.org forks Just because the centos forks are next door neighbor And we can actually easily poke them and see how it does We would like to integrate with more CI system
36:01
The question has been So far ci.centos has been answering our needs So it puts less pressure on integrating with others The architecture used is extensible So we should be able to integrate with other CI system We haven't managed to actually get this done yet
36:22
So at least with the Bagger CI stuff The way that Bagger CI is set up When you set up a project and turn on the feature You tell it what Jenkins instance you'd like to configure it with So for example if somebody had a project on Bagger IO That was focused mainly on SUSE things
36:41
They could point it at ci.opensuza.org And if they have the authentication set up to be able to do it It can actually run CI jobs there Track the statuses, report back and do those kinds of things We have been looking at a number of other kinds of CI systems To explore for improving to get Travis CI
37:00
Or GitLab CI like quality of ease of use for managing CI It's just difficult because the space is very confusing Is to put it mildly Insofar as like plugging it in with stuff like OpenShift One of the things that I've been doing Because of the stuff that I run
37:21
Is like I'd like to plug with the build release pipeline That's included in OpenShift with Bagger And part of that is where we've been working on beefing up the notifications And the webhook stuff so that stuff works a little bit better There's already a project that was written by One of the packer contributors That actually bridges the gap already in a slightly different way
37:44
But I'd like to have more direct support for being able to integrate with more systems For these kinds of things And that's kind of like where part of my focus has been recently For these kinds of things
38:04
Does it have a Helm chart? Does it run on Kubernetes? We don't have an official Helm chart for it Because I know that one exists Because one of the externally run private instances of packer
38:23
Is run into Kubernetes But nobody has stepped up to contribute a proper Helm chart to us We would love to have one It's just nobody has given one to us Thanks I think that's the end of the question So thank you all for your attention
38:41
And have a good afternoon