ci(jenkins): split dockerfile into production and experimental stages

This commit is contained in:
Lorenzo Delgado 2022-12-01 12:45:06 +01:00 committed by GitHub
parent 35c89ed176
commit 0f91f97a9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 9 deletions

View File

@ -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/

View File

@ -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:

View File

@ -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"} ."
)
} }
}