Skip to content

Build vollständig in Docker verschoben – reproduzierbarer & unabhängiger Build-Prozess#213

Open
pfichtner wants to merge 1 commit intohaumacher:masterfrom
pfichtner:docker-multistage
Open

Build vollständig in Docker verschoben – reproduzierbarer & unabhängiger Build-Prozess#213
pfichtner wants to merge 1 commit intohaumacher:masterfrom
pfichtner:docker-multistage

Conversation

@pfichtner
Copy link

Das Dockerfile wurde so angepasst, dass der gesamte Build-Prozess innerhalb von Docker abläuft. Das bedeutet, dass auf dem Hostsystem keine Installation von Java, Maven oder anderen Build-Tools erforderlich ist.

Vorteile:

  • Reproduzierbare Builds mit definierter Maven- und JDK-Version
  • Keine Abhängigkeiten vom lokalen System, keine Installation von Java, Maven, etc. nötig, kein unnötiges Installieren von dependencies in das lokale Repository
  • Saubere Trennung zwischen Build- und Runtime-Image

Herausforderungen und Lösungen

  • Für Download der Artefakte bei github sind credentials erforderlich, diese müssen beim Build übergeben werden, aus Sicherheitsgründen am besten via env-var
    docker build -f phoneblock-ab/Dockerfile --build-arg GITHUB_USER="$GITHUB_USER" --build-arg GITHUB_TOKEN="$GITHUB_TOKEN" -t phoneblock-ab .
  • pom erwartet org.simplejavamail:utils-mail-dkim:3.2.1-haumacher, https://github.com/haumacher/java-utils-mail-dkim.git stellt aber org.simplejavamail:utils-mail-dkim:3.2.0 bereit --> patchen der POM während des Builds
  • Build-Fehler durch SpotBugs (Java 17-Kompatibilität) bei org.simplejavamail:utils-mail-dkim:3.2.1-haumacher, SpotBugs-Plugin konnte Class Files mit „major version 61“ (Java 17) nicht lesen --> SpotBugs wird beim DKIM-Build übersprungen (-Dspotbugs.skip=true).
  • Der Aufruf von docker muss im Projekt-Root erfolgen (s.o.) damit der Zugriff auf alle Projekt-Dateien möglich ist (docker verbietet path-traversal)

@pfichtner
Copy link
Author

Das so gebaute Image enthält keine wav Dateien, aber ich habe im bestehenden Dockerfile auch nichts gesehen, was diese in das Image kopiert hätte.

Mir ist nicht klar, wie das Image phoneblock/answerbot zustande kommt, da ich keine github action gefunden habe, die das Image baut und published.

</settings>" > /root/.m2/settings.xml

# Clone and install the missing dependency, see https://github.com/haumacher/phoneblock/issues/202 ---
RUN git clone https://github.com/haumacher/java-utils-mail-dkim.git /tmp/java-utils-mail-dkim && \
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clone/install mit #204 hinfällig

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

Successfully merging this pull request may close these issues.

1 participant