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

Simplify Hogajama Build Prozess #413

Open
ErhardSiegl opened this issue Apr 24, 2022 · 5 comments
Open

Simplify Hogajama Build Prozess #413

ErhardSiegl opened this issue Apr 24, 2022 · 5 comments
Assignees

Comments

@ErhardSiegl
Copy link
Contributor

Verbesserung des Hogajama Build-Prozesses.

Rahmenbedingung: Soll in kleinen Schritten möglich sein. Teile können in Sub-Issues implementiert werden.
Abgrenzung: Nur Hogajama, nicht andere Komponenten wie Kafka oder Couchbase.

Status

Derzeit haben wir folgende Build-Configs:

  1. s2i-builder-maven: Baut das s2i Builder Image von https://github.com/Gepardec/openshift-builder-maven
  2. hogajama-binary: Kompiliert Hogajama mit dem s2i Builder Image. Generiert Deployment Artefakte in einem Build-Image
  3. hogajama-run: Erzeugt eine WildFly Instanz mit einem WildFly Base Image und dem Build-Image

Das erzeugte WildFy Image wird von einem EAP-Operator verwendet.

Probleme

Der aktuelle Prozess hat folgende Probleme:

  1. Die Build-Schritte müssen manuell getriggert werden.
  2. Die Maven Artefakte werden immer neu von Maven-Central geladen. Das Gepardec openshift-builder-maven Image unterstützt keine inkrementellen Builds.
  3. Der EAP-Operator bietet keinen erkennbaren Mehrwert.
  4. CLI-Skripts für die lokale EAP-Konfiguration können nicht einfach wiederverwendet werden.
  5. Werden weitere Services installiert wie z.B. Mock-GUI, dann werden die Sourcen neu kompiliert. Das widerspricht dem "Build-Once" Grundsatz von Build-Pipelines
  6. Ändert sich die Kafka-Installation, muss das Zertifikat im Git-Repo eingecheckt und neu gebaut werden.
@ErhardSiegl
Copy link
Contributor Author

Ein Vorschlag ist, den openshift-builder-maven rauszuwerfen und stattdessen das quay.io/wildfly/wildfly-s2i-jdk11 Image zu verwenden. Unterstützt Incremental Builds. Siehe Hogajama/.s2i/bin/assemble in Branch 413-simplify-hogajama-build-prozess
Damit: Erster Build:

$ cd Hogajama
$ s2i build . quay.io/wildfly/wildfly-s2i-jdk11 hogarama-build-artefacts --incremental
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  04:36 min
[INFO] Finished at: 2022-04-24T15:24:36Z
[INFO] ------------------------------------------------------------------------

Zweiter Build:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:08 min
[INFO] Finished at: 2022-04-24T15:29:53Z
[INFO] ------------------------------------------------------------------------

Damit sparen wir uns den ganzen Build s2i-builder-maven, die Wartung von https://github.com/Gepardec/openshift-builder-maven und sparen Zeit und Ressourcen durch den inkrementellen Build.

@ErhardSiegl
Copy link
Contributor Author

Erster Build am Server:

[INFO] Building war: /tmp/src/target/hogajama-rs-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for hogajama 0.0.1-SNAPSHOT:
[INFO] 
[INFO] hogajama ........................................... SUCCESS [  5.593 s]
[INFO] hogajama-domain .................................... SUCCESS [ 48.205 s]
[INFO] hogajama-frontend .................................. SUCCESS [  4.803 s]
[INFO] hogajama-interfaces ................................ SUCCESS [  0.080 s]
[INFO] hogajama-interfaces-frontend ....................... SUCCESS [ 13.407 s]
[INFO] hogajama-interfaces-rs ............................. SUCCESS [  3.791 s]
[INFO] raspberry-pi-mocks ................................. SUCCESS [  0.012 s]
[INFO] raspberry-pi-mocks-cli ............................. SUCCESS [ 25.693 s]
[INFO] hogajama-services .................................. SUCCESS [  8.109 s]
[INFO] raspberry-pi-mocks-gui ............................. SUCCESS [02:05 min]
[INFO] hogajama-angular-frontend .......................... SUCCESS [06:45 min]
[INFO] hogajama-rs ........................................ SUCCESS [ 27.757 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11:11 min
[INFO] Finished at: 2022-04-26T15:42:52Z
[INFO] ------------------------------------------------------------------------

Zweiter Build:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for hogajama 0.0.1-SNAPSHOT:
[INFO] 
[INFO] hogajama ........................................... SUCCESS [  2.402 s]
[INFO] hogajama-domain .................................... SUCCESS [ 42.394 s]
[INFO] hogajama-frontend .................................. SUCCESS [  5.431 s]
[INFO] hogajama-interfaces ................................ SUCCESS [  0.078 s]
[INFO] hogajama-interfaces-frontend ....................... SUCCESS [  7.796 s]
[INFO] hogajama-interfaces-rs ............................. SUCCESS [  3.007 s]
[INFO] raspberry-pi-mocks ................................. SUCCESS [  0.008 s]
[INFO] raspberry-pi-mocks-cli ............................. SUCCESS [ 29.123 s]
[INFO] hogajama-services .................................. SUCCESS [  5.307 s]
[INFO] raspberry-pi-mocks-gui ............................. SUCCESS [ 50.541 s]
[INFO] hogajama-angular-frontend .......................... SUCCESS [07:06 min]
[INFO] hogajama-rs ........................................ SUCCESS [ 31.304 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10:05 min
[INFO] Finished at: 2022-04-26T15:58:54Z
[INFO] ------------------------------------------------------------------------

Nachdem der Angular-Build so lange dauert, bringt der Incremental Build nicht so viel :-(

@ErhardSiegl ErhardSiegl self-assigned this May 2, 2022
@ErhardSiegl
Copy link
Contributor Author

Habe den Vorschlag in https://github.com/Gepardec/Hogarama/tree/413-simplify-hogajama-build-prozess mal ausgearbeitet

@MauriceNino
Copy link
Contributor

Für den Angular Teil wäre eventuell https://yarnpkg.com/features/zero-installs interessant.

@ErhardSiegl
Copy link
Contributor Author

Für den Angular Teil wäre eventuell https://yarnpkg.com/features/zero-installs interessant.

Einen Versuch ist es sicher wert.

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

No branches or pull requests

2 participants