From 239ce4ffb6b86bd511b03acdc736276d827a6009 Mon Sep 17 00:00:00 2001 From: Lorenzo Delgado Date: Thu, 1 Dec 2022 12:45:06 +0100 Subject: [PATCH] ci(jenkins): split dockerfile into production and experimental stages --- Dockerfile | 19 ++++++++++++------- Makefile | 6 ++++++ ci/Jenkinsfile.release | 5 +++-- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index e46322451..6bb1c17df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# BUILD IMAGE -------------------------------------------------------- +# BUILD IMAGE ------------------------------------------------------------------ FROM alpine:edge AS nim-build @@ -22,9 +22,9 @@ RUN make -j$(nproc) deps RUN make -j$(nproc) $MAKE_TARGET NIMFLAGS="${NIMFLAGS}" EXPERIMENTAL="${EXPERIMENTAL}" -# ACTUAL IMAGE ------------------------------------------------------- +# PRODUCTION IMAGE ------------------------------------------------------------- -FROM alpine:3.16 +FROM alpine:3.16 as prod ARG MAKE_TARGET=wakunode2 @@ -45,10 +45,6 @@ RUN ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3 # Copy to separate location to accomodate different MAKE_TARGET values COPY --from=nim-build /app/build/$MAKE_TARGET /usr/local/bin/ -# If rln enabled: fix for 'Error loading shared library vendor/rln/target/debug/librln.so: No such file or directory' -COPY --from=nim-build /app/vendor/zerokit/target/release/librln.so vendor/zerokit/target/release/librln.so -COPY --from=nim-build /app/vendor/zerokit/rln/resources/ vendor/zerokit/rln/resources/ - # Copy migration scripts for DB upgrades COPY --from=nim-build /app/migrations/ /app/migrations/ @@ -58,3 +54,12 @@ RUN ln -sv /usr/local/bin/$MAKE_TARGET /usr/bin/wakunode ENTRYPOINT ["/usr/bin/wakunode"] # By default just show help if called without arguments CMD ["--help"] + + +# EXPERIMENTAL IMAGE ----------------------------------------------------------- + +FROM prod AS experimental + +# If RLN enabled, copy the librln artifacts +COPY --from=nim-build /app/vendor/zerokit/target/release/librln.so vendor/zerokit/target/release/librln.so +COPY --from=nim-build /app/vendor/zerokit/rln/resources/ vendor/zerokit/rln/resources/ diff --git a/Makefile b/Makefile index 6893fd8a5..fc1741681 100644 --- a/Makefile +++ b/Makefile @@ -230,6 +230,11 @@ docs: | build deps # -d:insecure - Necessary to enable Prometheus HTTP endpoint for metrics # -d:chronicles_colors:none - Necessary to disable colors in logs for Docker DOCKER_IMAGE_NIMFLAGS ?= -d:chronicles_colors:none -d:insecure +DOCKER_IMAGE_STAGE ?= prod + +ifeq ($(EXPERIMENTAL), true) +DOCKER_IMAGE_STAGE := experimental +endif # build a docker image for the fleet docker-image: MAKE_TARGET ?= wakunode2 @@ -241,6 +246,7 @@ docker-image: --build-arg="NIMFLAGS=$(DOCKER_IMAGE_NIMFLAGS)" \ --build-arg="EXPERIMENTAL=$(EXPERIMENTAL)" \ --label="commit=$(GIT_VERSION)" \ + --target $(DOCKER_IMAGE_STAGE) \ --tag $(DOCKER_IMAGE_NAME) . docker-push: diff --git a/ci/Jenkinsfile.release b/ci/Jenkinsfile.release index e24ce1c8c..4f26c9dee 100644 --- a/ci/Jenkinsfile.release +++ b/ci/Jenkinsfile.release @@ -47,11 +47,12 @@ pipeline { stage('Build') { steps { script { image = docker.build( - "${params.IMAGE_NAME}:${env.GIT_COMMIT.take(8)}", + "${params.IMAGE_NAME}:${env.GIT_COMMIT.take(8)}" + (params.EXPERIMENTAL ? "-experimental": ""), "--label=commit='${env.GIT_COMMIT.take(8)}' " + "--build-arg=MAKE_TARGET='${params.MAKE_TARGET}' " + "--build-arg=NIMFLAGS='${params.NIMFLAGS}' " + - "--build-arg=EXPERIMENTAL='${params.EXPERIMENTAL}' ." + "--build-arg=EXPERIMENTAL='${params.EXPERIMENTAL}' " + + "--target=${params.EXPERIMENTAL ? "experiemental" : "prod"} ." ) } } }