Hi. Sag mal, wer hat das mit dem Build Service bei euch eingerichtet?
Kann man diesbezüglich einige Informationen erhalten? Wie ihr das umgesetzt habt bzw.
ob es auch alternativen dazu gibt? City of SA hat das ja auch, fand ich damals schon schick.
Fuer die Plattformen I Love Crime und City of SA habe ich den Build Service entwickelt. I Love Crime wird noch auf die neue Version (die auch COSA einsetzt) umsteigen wenn ich dazu die Zeit finde.
Alte Version (relativ simpel und unspektakulaer):
Ein WebHook bei GitHub ruft eine Seite vom Build Service auf und sagt es liegen neue Aenderungen vor. Das Backend auf dem Server registriert das, zieht sich den neuen Quellcode und compilet das Script, parst den Compiler Output, schreibt dich im TS wenn er fertig ist und installiert gleich das Script aufm Testserver, so dass man nur noch /restart machen muss. Die Version ist entstanden, als es mir auf den Sack ging als mein Script sehr gross wurde und ich einen Timebug nach jedem Upload einer Aenderung bekommen habe. Das System wurde in PHP noch geschrieben.
Neue Version (viel komplexer als 1.0):
Ist mittlerweile in Ruby on Rails geschrieben worden und benoetigt kein Backend, da Rails ein Job-Processing-System hat wo Aufgaben wie das Compilen gleich mit uebernommen werden koennen. Im Endeffekt funktioniert der Anfang genauso wie bei 1.0: Webhooks triggern einen Build Request beim Build Service, der Build Service spawnt einen Docker Container (mit einem vom mir gebauten Image in dem der PAWN Compiler installiert ist) packt dort die Dateien rein und ruft den Compiler auf. Nach dem Ergebnis werden Fehler & Warnings analysiert und du bekommst ne Push auf dein Handy wenn er das Script dann aufm Server installiert hat und ob der Compile Prozess erfolgreich war. Um immer zu wissen, welche Revision/Buildnummer/Commit Du aufm Testserver testest, setzt der Build Service von sich aus ein paar Defines, die Dich eben das alles ueberpruefen lassen. So fragt man sich halt nie "hab ich eben mein Script compilet oder habe ich vergessen das Script hochzuladen?". Was auch noch sehr cool ist, dass Du Dir den Build Prozess live ansehen kannst. Hier ein Beispiel: https://build.city-of-sa.de/projects/city-of-sa/builds/1667
Wenn Du auf "Builds" klickst, laedt das ganz schoen lange aber nur weil ich Pagination vergessen habe einzubauen und seit Mai nichts mehr dran gearbeitet habe 
Was auch noch ganz praktisch ist, dass wenn Du mehrere Entwickler hast, musst Du ihnen keinen Zugriff auf Includes oder andere Dateien geben. Der Build Service ist faehig aus mehreren Repositories die Dateien zusammen zu fuegen, so dass nur mit dem kompletten Set an Dateien das Script compilet werden kann. So kann man den Zugriff beschraenken und Mitentwickler koennen zwar den Teil releasen, auf den sie Zugriff haben, aber nicht alles und somit ist das Script fuer jeden unbrauchbar. So hatte ich das auch bei COSA gemacht. Hatte 2 Entwickler und da ich keinem mein Script einfach so gebe und wir auf einen Vertrag verzichtet haben, hab ich denen halt einfach Zugriff auf das Hauptscript, aber nicht auf das Repository mit all den Includes und anderen Systemen gegeben. Sollten sie den Teil nun releasen ists mir eigtl relativ egal
(mal von dem Fakt abgesehen, dass das Script eh nicht unter Windows compilierbar ist)
Die neue Version kommt auch mit Branches klar und somit koennen mehrere Entwickler an einem Script arbeiten, ohne sich in die Quere zu kommen. Muss das noch machen, dass man fuer jeden Entwickler einen eigenen Testserver angeben kann, wo nur immer wenn sie compilen, ihr Script deployt wird.
Ein paar Bilder:
Der neue Build Service sollte mal ein eigenstaendiges Projekt werden, das von mehreren genutzt werden kann. Da ich aber dann theoretisch Zugriff auf andere Scripte haben wuerde, glaube ich nicht, dass das viele aktiv nutzen wuerden. Im Bereich SA:MP haben wir ja leider keine Open Source Politik.