ci: eliminate duplicate Maven build in Docker job
Some checks failed
CI / build (push) Successful in 5m13s
CI / docker (push) Failing after 5s
CI / deploy (push) Has been skipped

Convert all 7 Dockerfiles from multi-stage (Maven build + JRE runtime) to
single-stage JRE-only images that COPY pre-built JARs from artifacts/.
The docker job now downloads build artifacts from the build job instead of
rebuilding everything from source. Removes QEMU setup (not needed for
single-stage amd64 images) and registry build cache (no Maven stage to cache).

Saves ~5 minutes per CI run by eliminating the redundant full Maven build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-14 14:40:07 +02:00
parent 29af7b26a4
commit 6cdda21533
8 changed files with 36 additions and 188 deletions

View File

@@ -128,20 +128,34 @@ jobs:
git clone --depth=1 --branch=${GITHUB_REF_NAME} https://cameleer:${REGISTRY_TOKEN}@gitea.siegeln.net/${GITHUB_REPOSITORY}.git .
env:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
- name: Download build artifacts
uses: actions/download-artifact@v3
with:
path: dl/
- name: Arrange artifacts
run: |
mkdir -p artifacts
cp dl/cameleer3-agent-shaded/cameleer3-agent-*-shaded.jar artifacts/agent.jar
cp dl/cameleer3-log-appender/cameleer3-log-appender-*.jar artifacts/log-appender.jar
cp dl/cameleer3-sample-app/cameleer3-sample-app-*.jar artifacts/sample-app.jar
cp dl/cameleer3-backend-app/cameleer3-backend-app-*.jar artifacts/backend-app.jar
cp dl/cameleer3-caller-app/cameleer3-caller-app-*.jar artifacts/caller-app.jar
cp -r dl/cameleer3-quarkus-app/ artifacts/quarkus-app/
cp -r dl/cameleer3-quarkus-native-app/ artifacts/quarkus-native-app/
cp dl/cameleer3-perf-app/cameleer3-perf-app-*.jar artifacts/perf-app.jar
cp dl/cameleer3-plain-app/cameleer3-plain-app-*.jar artifacts/plain-app.jar
cp -r dl/cameleer3-plain-app/lib/ artifacts/plain-lib/
ls -lR artifacts/
- name: Login to registry
run: echo "$REGISTRY_TOKEN" | docker login gitea.siegeln.net -u cameleer --password-stdin
env:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
- name: Set up QEMU for cross-platform builds
run: docker run --rm --privileged tonistiigi/binfmt --install all
- name: Build and push sample app
run: |
docker buildx create --use --name cibuilder
docker buildx build --platform linux/amd64 \
-t gitea.siegeln.net/cameleer/cameleer3-sample:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-sample:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-sample:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-sample:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push backend app
@@ -150,8 +164,6 @@ jobs:
-f Dockerfile.backend \
-t gitea.siegeln.net/cameleer/cameleer3-backend:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-backend:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-backend:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-backend:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push caller app
@@ -160,8 +172,6 @@ jobs:
-f Dockerfile.caller \
-t gitea.siegeln.net/cameleer/cameleer3-caller:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-caller:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-caller:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-caller:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push quarkus app
@@ -170,8 +180,6 @@ jobs:
-f Dockerfile.quarkus \
-t gitea.siegeln.net/cameleer/cameleer3-quarkus:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-quarkus:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-quarkus:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-quarkus:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push quarkus native app
@@ -180,8 +188,6 @@ jobs:
-f Dockerfile.quarkus-native \
-t gitea.siegeln.net/cameleer/cameleer3-quarkus-native:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-quarkus-native:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-quarkus-native:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-quarkus-native:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push perf app
@@ -190,8 +196,6 @@ jobs:
-f Dockerfile.perf \
-t gitea.siegeln.net/cameleer/cameleer3-perf:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-perf:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-perf:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-perf:buildcache,mode=max \
--provenance=false \
--push .
- name: Build and push plain app
@@ -200,8 +204,6 @@ jobs:
-f Dockerfile.plain \
-t gitea.siegeln.net/cameleer/cameleer3-plain:${{ github.sha }} \
-t gitea.siegeln.net/cameleer/cameleer3-plain:latest \
--cache-from type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-plain:buildcache \
--cache-to type=registry,ref=gitea.siegeln.net/cameleer/cameleer3-plain:buildcache,mode=max \
--provenance=false \
--push .
- name: Cleanup local Docker

View File

@@ -1,30 +1,8 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-log-appender/target/cameleer3-log-appender-*.jar /app/log-appender.jar
COPY --from=build /build/cameleer3-sample-app/target/cameleer3-sample-app-*.jar /app/app.jar
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/log-appender.jar /app/log-appender.jar
COPY artifacts/sample-app.jar /app/app.jar
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,30 +1,8 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-log-appender/target/cameleer3-log-appender-*.jar /app/log-appender.jar
COPY --from=build /build/cameleer3-backend-app/target/cameleer3-backend-app-*.jar /app/app.jar
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/log-appender.jar /app/log-appender.jar
COPY artifacts/backend-app.jar /app/app.jar
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,30 +1,8 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-log-appender/target/cameleer3-log-appender-*.jar /app/log-appender.jar
COPY --from=build /build/cameleer3-caller-app/target/cameleer3-caller-app-*.jar /app/app.jar
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/log-appender.jar /app/log-appender.jar
COPY artifacts/caller-app.jar /app/app.jar
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,30 +1,8 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-log-appender/target/cameleer3-log-appender-*.jar /app/log-appender.jar
COPY --from=build /build/cameleer3-perf-app/target/cameleer3-perf-app-*.jar /app/app.jar
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/log-appender.jar /app/log-appender.jar
COPY artifacts/perf-app.jar /app/app.jar
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,30 +1,8 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-plain-app/target/cameleer3-plain-app-*.jar /app/app.jar
COPY --from=build /build/cameleer3-plain-app/target/lib/ /app/lib/
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/plain-app.jar /app/app.jar
COPY artifacts/plain-lib/ /app/lib/
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,29 +1,7 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-agent/target/cameleer3-agent-*-shaded.jar /app/agent.jar
COPY --from=build /build/cameleer3-quarkus-app/target/quarkus-app/ /app/quarkus-app/
COPY artifacts/agent.jar /app/agent.jar
COPY artifacts/quarkus-app/ /app/quarkus-app/
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081

View File

@@ -1,28 +1,6 @@
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /build
COPY pom.xml .
COPY cameleer3-common/pom.xml cameleer3-common/
COPY cameleer3-core/pom.xml cameleer3-core/
COPY cameleer3-log-appender/pom.xml cameleer3-log-appender/
COPY cameleer3-agent/pom.xml cameleer3-agent/
COPY cameleer3-extension/pom.xml cameleer3-extension/
COPY cameleer3-extension/runtime/pom.xml cameleer3-extension/runtime/
COPY cameleer3-extension/deployment/pom.xml cameleer3-extension/deployment/
COPY cameleer3-sample-app/pom.xml cameleer3-sample-app/
COPY cameleer3-backend-app/pom.xml cameleer3-backend-app/
COPY cameleer3-caller-app/pom.xml cameleer3-caller-app/
COPY cameleer3-quarkus-app/pom.xml cameleer3-quarkus-app/
COPY cameleer3-quarkus-native-app/pom.xml cameleer3-quarkus-native-app/
COPY cameleer3-perf-app/pom.xml cameleer3-perf-app/
COPY cameleer3-plain-app/pom.xml cameleer3-plain-app/
# Cache deps — only re-downloaded when POMs change
RUN mvn dependency:go-offline -B || true
COPY . .
RUN mvn clean install -DskipTests -B
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY --from=build /build/cameleer3-quarkus-native-app/target/quarkus-app/ /app/quarkus-app/
COPY artifacts/quarkus-native-app/ /app/quarkus-app/
ENV CAMELEER_AGENT_EXPORT_TYPE=HTTP
ENV CAMELEER_AGENT_EXPORT_ENDPOINT=http://cameleer3-server:8081