Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Artefakt des Servers beim Build nach mvncentral pushen #20

Open
FrankR85 opened this issue Jan 28, 2020 · 10 comments
Open

Artefakt des Servers beim Build nach mvncentral pushen #20

FrankR85 opened this issue Jan 28, 2020 · 10 comments

Comments

@FrankR85
Copy link
Contributor

Damit andere Projekte jeweils die neueste Version des Servers nutzen können, ohne sich das Repo zu clonen und den Server selber zu bauen, wäre es schön, wenn der Server bei mvncentral (o.ä.) automatisch im Build veröffentlicht werden könnte.

Ich würde dafür auch selber einen PR einstellen, aber der schwierige Teil sind ja sicherlich die Credentials für mvncentral, welche als Umgebungsvariablen bei Travis hinterlegt werden müssten.

@pfichtner
Copy link
Collaborator

maven central oder dockerhub, also JARs oder docker image? Letzteres ist trivial, ersteres nicht ganz so easy (aber nicht wegen der credentials). D.h. wenn Du für ersteres nen PR stellen kannst: Immer her damit!

@pfichtner
Copy link
Collaborator

pfichtner commented Jan 29, 2020

@FrankR85 Ich habe eine Lösung für das genannte Problem.

Der classpath des docker entrypoints wurde mit commit cd090ab noch um /plugins erweitert. Damit ist es per volume mount möglich, ein Verzeichnis mit weiteren JARs anzugeben (docker run --rm -v$PWD/myplugins/:/plugins/ fiduciagad/fourwins-udp)

Minimales Beispiel

package foo;
import org.ase.fourwins.tournament.listener.TournamentListener;
public class HelloWorld implements TournamentListener {
	public HelloWorld() { System.out.println("Hello World!"); }
}

Datei META-INF/services/org.ase.fourwins.tournament.listener.TournamentListener mit Inhalt foo.HelloWorld

Natürlich müssen eventuell transitive dependecies entweder in dem JAR inkludiert sein oder im plugin Verzeichnis liegen. Klassen sollten nicht mit target >Java 11 kompliert sein, da das derzeit die im Container liegende JRE Version ist.

Somit können eigene Repos erstellt werden, welche völlig unabhängig von diesem repo sind und das Projekt lediglich eine compile dependency zu core aufweist (von daher sollte mindestens core nach maven central).

Aus diesem Text werde ich noch eine README erstellen damit es einfach möglich ist, das Feature zu nutzen.

@mmitch
Copy link

mmitch commented Jan 29, 2020

Ich habe mal etwas recherchiert:

MavenCentral scheint PGP-Schlüssel zum Signieren zu verlangen – das ist sinnvoll, aber bestimmt auch umständlich. Wobei diese Anleitung jetzt ziemlich kurz ist:
https://github.com/stefanbirkner/travis-deploy-to-maven-central

Alternativ könnte man auch in ein anderes Repo hochladen, wo man durch weniger Reifen springen muss:
https://blog.travis-ci.com/2017-03-30-deploy-maven-travis-ci-packagecloud/

@pfichtner
Copy link
Collaborator

Es ist nicht so, dass ich nicht wüsste wie es geht https://search.maven.org/search?q=fichtner ;-)

aber bestimmt auch umständlich

Und das ist der Grund warum ich mich über einen PR freuen würde

@atruvia atruvia deleted a comment from jepezimmer Jan 30, 2020
@atruvia atruvia deleted a comment from jepezimmer Jan 30, 2020
@FrankR85
Copy link
Contributor Author

Die Variante mit dem Dockerfile hilft leider nicht so richtig weiter, da das Starten des Servers via Docker auf Windows und Mac problematisch ist.

Unter Windows wird network=host überhaupt nicht unterstützt und unter Mac geht das zwar, aber da Docker dort in einer VM mit eigener IP-Adresse läuft, ist der Server so erstmal nicht von anderen Maschinen im Netzwerk zu erreichen. Bei grafana etc. ist das kein Problem, da kann ich bei VirtualBox Port-forwarding einrichten, aber bei den zufällig ausgewählten Udp-Ports hilft das nicht.

Auch das könnte man lösen, z.Bsp. einen Reverse-Proxy auf dem Mac installieren, der den Udp-Traffic zu boot2docker weiterleitet.
Hier erscheint es mir aber leichter, wenn ich den Server einfach auf dem Mac per java -jar .... starte.

Wegen dem PR muss ich mal schauen, wie ich das zeitlich hinkriege. Für mich gäbe es ja einen recht einfachen Workaround: Repo clonen und den Server per mvn install ins lokale Repo deployen. Für die CodingChallenge wäre das ausreichend.

@pfichtner
Copy link
Collaborator

@pfichtner
Copy link
Collaborator

@FrankR85 Mit java -jar bzw. java -cp core.jar:foo.jar hatten wir noch nie ein Problem. Dafür war noch nie das Klonen irgendeines repos notwendig.

@FrankR85
Copy link
Contributor Author

Irgendwie reden wir aneinander vorbei... 🙀

Wenn ich den offiziellen 4Gewinnt-Server benutzen will, muss ich ja irgendwie da rankommen. Dafür muss ich mir entweder das Repo clonen oder das Artefakt liegt irgendwo fertig gebaut rum.

@pfichtner
Copy link
Collaborator

@FrankR85 Ok, verstehe das Problem, meine Lösung ist schon der nächste Schritt, siehe
https://github.com/fiduciagad/connected-n/blob/master/README-plugin.md

# path to connect-n core containing the listener
# you can generate it by building connect-n using maven inside the connect-n repo
CORE=~/path/to/core/target/core-0.0.1-SNAPSHOT.jar 

@pfichtner
Copy link
Collaborator

@FrankR85 Mit 895da57 sollte die Docker Seite sauber sein

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants