Debian Buildserver

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
reox
Beiträge: 1423
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Debian Buildserver

Beitrag von reox » 24.11.2017 21:53:46

Irgendwie finde ich bei meiner suche immer nur die selben Seiten die mir aber nicht weiterhelfen, wie zB buildd...

Ich suche eine Möglichkeit um Debian Pakete auf meinem Server zu bauen und dann zB in ein reprepo einzuchecken. Sehr schön wäre es, wenn nur in VMs gebaut wird und die für jeden Build neu aufgesetzt werden um zB Probleme mit lokalen Setups zu vermeiden. Mir reicht mal fürs erste nur amd64 als Arch - wenn man ganz einfach andere auch integrieren kann ist das aber kein Fehler.
Auch ideal wäre wenn für verschiedene releases gebaut wird (also jessie, stretch, buster, sid, ...)
Die Pakete die ich bauen will sind eigentlich fast immer in git repos vorhanden. Also ein git clone && dpkg-buildpackage sollte meistens ausreichen (+abhängigkeiten installieren...).
Gebaut werden soll dann zB in periodischen abständen, falls neue commits da sind - also ein daily build system. Wenn man manuell die Builds anwerfen kann ist das auch nicht schlecht.
Sehr gut wäre auch noch wenn stabile versionen (anhand von tags im git) ebenfalls gebaut werden und im repo bleiben, so dass man gleich zwei varianten hat: testing und stable.

Gibt es da irgendwas?
Vermutlich kann man sich so eine Lösung mit jenkins o.Ä. auch selber bauen... Auch gibt es dieses Ding: https://build.opensuse.org/ wie ich erfahren habe, nur scheinbar kann man das nur komplett auf einem server installieren und nicht als dienst laufen lassen.
Und dann gibts ja zB Lauchpad, haben die ihr system vllt auch irgendwo?

Benutzeravatar
maltris
Beiträge: 291
Registriert: 27.08.2011 12:54:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: STA
Kontaktdaten:

Re: Debian Buildserver

Beitrag von maltris » 25.11.2017 07:31:00

Bezüglich deiner Idee, beim Buildprozess immer wieder neue VMs aufzubauen (wenn auch automatisiert), empfehle ich dir hierfür einfach Docker-Container für die unterschiedlichen Debian-Versionen. Dies ist in Benutzung einfacher sowie sauberer und im Hinblick auf verwendete Ressourcen meist effizienter. Laut Docker-Hub kommst du mit dem offiziellen Image zurück bis auf Wheezy [1], unter Zuhilfenahme des EOL-Repositories bis Potato [2].

Die Methode solltest du mehr oder weniger unabhängig von deiner Build-Pipeline (ob nun Jenkins, ein eigenes Konstrukt oder noch was anderes) einsetzen können. Ich hatte seinerzeit ein solches Konstrukt im Einsatz, um die in vielen Unternehmen, welche die eigene Paketierung von Software verfolgen, vorherrschenden, nie aktualisierten und verbastelten "Build-Maschinen" abzulösen. Durch die Containerisierung kann theoretisch der Build-Prozess sogar auf dem eigenen Desktop-PC stattfinden.

Eine Übersicht zu den Build-Services habe ich gefunden, dort ist auch launchpad und OBS aufgelistet und oberflächlich die Funktionsweise von OBS beschrieben [3].

[1] https://hub.docker.com/_/debian/
[2] https://hub.docker.com/r/debian/eol/
[3] https://en.opensuse.org/openSUSE:Build_ ... comparison

Benutzeravatar
TRex
Moderator
Beiträge: 6019
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Debian Buildserver

Beitrag von TRex » 25.11.2017 09:24:48

Ich schieb sowas auch noch vor mir her. Mir wurde nahegelegt, mal in #debian im IRC zu fragen (was ich vermutlich auch tun werde, sobald ich mit prokrastinieren fertig bin), ansonsten ziehe ich meine Erfahrung aus der Arbeit: Es gibt Plugins für Jenkins, mit denen dann Builds auf docker-Containern ausgeführt werden. Fallstricke sind wohl maßgeblich die immerwährenden Kompatibilitätsprobleme zwischen jenkins<->plugin<->docker. Hat man das im Griff, ist der Rest mit ein wenig Experimentierfreudigkeit relativ einfach zu meistern.

Ach ja: man will sich irgendwie die docker-Images bauen. Für mich selbst hätte ich gerne etwas kompaktes, und daran bin ich zuletzt gescheitert (Wunschvorstellung: ein jenkins-Job, der die Images baut und in die lokale registry committet). Wenn man das nicht nachvollziehbar aufzieht, hat man dasselbe Problem wie mit den
maltris hat geschrieben: ↑ zum Beitrag ↑
25.11.2017 07:31:00
vorherrschenden, nie aktualisierten und verbastelten "Build-Maschinen"
(mir nicht unbekannt).

Jenkins hat da mittlererweile selbst ein "Portal" zu dem Thema docker:
https://jenkins.io/solutions/docker/
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!

Benutzeravatar
novalix
Beiträge: 1523
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Debian Buildserver

Beitrag von novalix » 25.11.2017 11:26:55

Hi,
möglicherweise reicht Dir ja schon Debianpbuilder für Deine Anforderungen. OK, ist nur ein einfaches chroot. Das lässt sich nicht so eindrucksvoll stapeln wie die ganzen Docker-Container.

https://pbuilder.alioth.debian.org/
I have seen the face of death. It is a 1000+ line XML file of regexes.
j_houg

reox
Beiträge: 1423
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Debian Buildserver

Beitrag von reox » 25.11.2017 12:38:32

Ich dachte mir das schon, dass es wohl eine halbe selbstbaulösung werden wird :D

vom pbuilder hatte ich schonmal gehört, den sollte ich mir vllt nochmal genauer ansehen.
Der Vorteil von einem Jenkis wäre aber, dass man jederzeit vermutlich noch andere Distributionen dazupacken kann... Ich hatte schonmal die Aufgabe rpms zu bauen, dann kann man sich schnell ne CentOS VM holen und das recht schnell integrieren.
Oder wenn man python pakete auch als wheel bauen will...
Docker Container klingt jetzt auch nicht falsch. kvm hab ich halt schon am laufen und mir auch ein script gebaut, welches neue VMs recht schnell erstellen kann. Damit hab ich derzeit manche pakete so semiautomatisch gebaut.

tijuca
Beiträge: 36
Registriert: 22.06.2017 22:12:20

Re: Debian Buildserver

Beitrag von tijuca » 25.11.2017 20:25:07

KVM, Docker oder was man sonst noch so an Vorstellungen hat ist alles nicht nötig um eigene Pakete zu bauen. Die "offiziellen" Paketbauer und Maintainer benutzen entweder Debianpbuilder oder Debiansbuild dafür. Beide Systeme setzen über eine unterschiedliche Art ein chroot auf in dem jeweils unabhängig vom benutzen System ein komplettes Debian System installiert wird und beim Verlassen bzw. beim Beenden des Builds wieder komplett gelöscht wird.

SBuild wird auf den Debian Buildaemons benutzt um alle benötigten Architekturen automatisch zu bauen nachdem jemand eine Version ins Archiv geladen hat. Allerdings hat sbuild eine etwas längere und steilere Lernkurve. Wie man das benutzt findet man im Debian Wiki. https://wiki.debian.org/sbuild

Deutlich einfacher lässt sich da pbuilder benutzen, dafür ist es nicht so hochflexibel wie sbuild. Dies benötigt man aber meistens auch nicht wenn sich "nur" eine eigene Version bauen will. Sehe beleibt ist ebenfalls das Paket Debiangit-buildpackage was ein komplettes Tooling mitbringt um wirklich mit wenigen Kommandos eigene Paket erstellen zu können. So bringt es zum Beispiel den Befehl git-pbuilder mit womit man sehr einfach seine Basis Chroots verwalten kann.

Mit dem Anpassen bzw. Erweitern der Datei /etc/sudors gemäß dem Wiki auf Tanglu ist es nun sehr einfach zu benutzen wenn man in einem Git Tree steht. Bitte benutzt von dort nur das Anpassen der Datei /etc/sudoers wenn Ihr was bauen wollt! Tanglu ist zwar Debian basierend aber eben nicht gleich.

Code: Alles auswählen

$ gbp buildpackage --git-pbuilder -j4
gbp:info: Building with (cowbuilder) for sid
gbp:info: Creating /home/tijuca/tmp/build/kopano-webapp_3.4.0+dfsg1.orig.tar.xz
Building with cowbuilder for distribution sid
I: using cowbuilder as pbuilder
...
Übrigens ist Docker keine gute Idee, es gibt keine offiziellen Docker Images von Debian so das Docker Images die so findet immer unterschiedlich zu dem sind was eben pbuilder oder sbuild benutzen. Da wird man irgendwann auf die Nase fallen wegen der Abhängigkeiten. Wenn man schon Pakete bauen will dann bitte genau so wie es DDs oder DMs machen. Und das ist per pbuilder oder sbuild

Benutzeravatar
maltris
Beiträge: 291
Registriert: 27.08.2011 12:54:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: STA
Kontaktdaten:

Re: Debian Buildserver

Beitrag von maltris » 26.11.2017 08:09:49

Übrigens ist Docker keine gute Idee, es gibt keine offiziellen Docker Images von Debian so das Docker Images die so findet immer unterschiedlich zu dem sind was eben pbuilder oder sbuild benutzen. Da wird man irgendwann auf die Nase fallen wegen der Abhängigkeiten.
Du magst mit vielem Recht haben, jedoch bitte ich Dich, vor dem Absenden Deine Quellen zu prüfen.
OFFICIAL REPOSITORY
Maintained by:
Debian Developers tianon and paultag
https://hub.docker.com/_/debian/
Zuletzt geändert von maltris am 26.11.2017 10:30:11, insgesamt 1-mal geändert.

tijuca
Beiträge: 36
Registriert: 22.06.2017 22:12:20

Re: Debian Buildserver

Beitrag von tijuca » 26.11.2017 09:10:56

Ich bitte vielmals um Entschuldigung, ich habe hier versäumt täglich die möglichen Quellen zu verifizieren und Du hier vermutlich einen Informationsvorteil hast. :hail:
Vor rund einem Jahr, als ich mich mit Docker und möglichen Containern beschäftigt hatte, gab es keine "offiziellen" Debian Docker Container. Wobei das Debian Projekt hier eine eigene Meinung hat was offizielles Debian bedeutet. Meiner Erfahrung nach wird dies vom Großteil der DDs nicht als Offiziell betrachtet da dies ein Projekt einzelner DDs ist und nicht irgendwo auf debian.org angesiedelt ist. Mir ist keine Announcing E-Mail über offizielle Liste debian-devel-announce bekannt. Insofern könnte man sicherlich vorzüglich darüber streiten. Da diese Images wohl im Umfeld des Reproducible Buiulds Projekts entstandenen sind, PaulTag auch kein ganz unbekannter DD ist kann man wohl davon ausgehen, dass die Images offiziell genug sind.

Ist aber alles etwas Offtopic, da es hier um Paketbau selber geht und Docker dafür im Grunde eigentlich nebensächlich ist da auch in einem Docker Container dafür die gleichen Programme und Tools benötigt werden. Da bin ich mit deutlich weniger Overhead am gleichem Ziel.

reox
Beiträge: 1423
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Debian Buildserver

Beitrag von reox » 26.11.2017 18:31:58

Also ich denke immer noch, dass eine VM Umgebung schon sinnvoll ist. Wenn ich irgendwann mal für irgendein anderes Betriebsystem bauen will kanns ja nicht schaden die Infrastruktur schon zu haben.

reox
Beiträge: 1423
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Debian Buildserver

Beitrag von reox » 04.04.2018 10:29:22

mal ein update zu dem thema hier:
Ich hab zwischenzeitlich mal jenkins und docker aufgesetzt aber dieses debian build system hab ich nicht in polynomieller zeit aufgesetzt bekommen. Nachdem der jenkins dann mein /var/log innerhalb von wenigen Minuten komplett vollgeschrieben hat weil er wohl irgendeine endlosschleife erzeugt hat, hab ich die pakete wieder gekübelt.
Ich hab mir jetzt mal einen pbuilder aufgesetzt und das rennt eigentlich sehr gut. Hab gleich mal einige dependency probleme in meinen paketen festgestellt.
Ich überlege jetzt wie man das ganze geschickt automatisieren kann. Die pakete sind alle in git repos - dH regelmäßig pullen, schauen ob neue änderungen, wenn ja neue version erzeugen und bauen. Das sollte sich ja alles mit hausmitteln erledigen lassen.

Antworten