ci: eliminate duplicate Maven build in Docker job
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:
@@ -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
|
||||
|
||||
28
Dockerfile
28
Dockerfile
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user