diff --git a/Makefile b/Makefile index e07834ef..128226da 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,10 @@ -export GIT_SHA1=$(git rev-parse --short HEAD) -export IMAGE_NAME=graylog - default: docker_build docker_build: - cd docker/oss; hooks/build + cd docker/oss && IMAGE_NAME=graylog hooks/build cd docker/enterprise && IMAGE_NAME=graylog-enterprise hooks/build cd docker/forwarder && IMAGE_NAME=graylog-forwarder hooks/build + cd docker/datanode && IMAGE_NAME=graylog-datanode hooks/build linter: @test/linter.sh diff --git a/docker/datanode/Dockerfile b/docker/datanode/Dockerfile index 79d6d6b2..9a45228d 100644 --- a/docker/datanode/Dockerfile +++ b/docker/datanode/Dockerfile @@ -1,10 +1,11 @@ FROM ubuntu:22.04 # Build time variables - not persistent in the container image +ARG GRAYLOG_VERSION +ARG VCS_REF ARG BUILD_DATE -ARG BUILD_VERSION -ARG SNAPSHOT_URL_X64 -ARG SNAPSHOT_URL_AARCH64 +ARG SNAPSHOT_URL_X64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-x64.tgz +ARG SNAPSHOT_URL_AARCH64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-aarch64.tgz ARG DEBIAN_FRONTEND=noninteractive # Will be persistet in the container image @@ -63,20 +64,21 @@ RUN apt-get purge -y curl \ && apt-get autoremove -y --purge \ && rm -rf /var/log/* -COPY entrypoint.sh /entrypoint.sh +COPY docker/datanode/entrypoint.sh /entrypoint.sh ENTRYPOINT ["tini", "--", "/entrypoint.sh"] CMD ["graylog-datanode"] # Put at the very end to avoid rebuilding all layers for ARG changes like -# BUILD_DATE, BUILD_REV, and BUILD_VERSION. +# BUILD_DATE, VCS_REV, and GRAYLOG_VERSION. LABEL org.opencontainers.image.authors="Graylog, Inc. " LABEL org.opencontainers.image.created="$BUILD_DATE" LABEL org.opencontainers.image.description="Container image to run the Graylog Data Node" LABEL org.opencontainers.image.documentation="https://docs.graylog.org/" LABEL org.opencontainers.image.licenses="SSPL-1.0" -LABEL org.opencontainers.image.source="https://github.com/Graylog2/graylog2-server" +LABEL org.opencontainers.image.revision="$VCS_REF" +LABEL org.opencontainers.image.source="https://github.com/Graylog2/graylog-docker" LABEL org.opencontainers.image.title="Graylog Data Node" LABEL org.opencontainers.image.url="https://www.graylog.org/" LABEL org.opencontainers.image.vendor="Graylog, Inc." -LABEL org.opencontainers.image.version="$BUILD_VERSION" +LABEL org.opencontainers.image.version="$GRAYLOG_VERSION" diff --git a/docker/datanode/hooks/build b/docker/datanode/hooks/build new file mode 100755 index 00000000..8e295b9a --- /dev/null +++ b/docker/datanode/hooks/build @@ -0,0 +1,16 @@ +#!/bin/bash + +# Custom build for Docker Hub +# see: https://medium.com/microscaling-systems/labelling-automated-builds-on-docker-hub-f3d073fb8e1 + +cd ../.. + +apt-get install -y python3-pip +pip3 install pyyaml + +# Build Graylog +docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ + --build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \ + --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ + --file docker/datanode/Dockerfile \ + --tag $IMAGE_NAME . diff --git a/docker/enterprise/hooks/build b/docker/enterprise/hooks/build index 87e7e26e..460c298b 100755 --- a/docker/enterprise/hooks/build +++ b/docker/enterprise/hooks/build @@ -11,8 +11,8 @@ apt-get install -y python3-pip pip3 install pyyaml # Build Graylog Enterprise & Integration Included -docker build --build-arg VCS_REF=$GIT_SHA1 \ - --build-arg GRAYLOG_VERSION=`./release.py --get-graylog-version` \ - --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ +docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ + --build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \ + --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ --file docker/enterprise/Dockerfile \ --tag $IMAGE_NAME . diff --git a/docker/forwarder/hooks/build b/docker/forwarder/hooks/build index a660be4f..2ac3ca44 100755 --- a/docker/forwarder/hooks/build +++ b/docker/forwarder/hooks/build @@ -9,9 +9,9 @@ apt-get install -y python3-pip pip3 install pyyaml # Build Graylog Forwarder -docker build --build-arg VCS_REF=$GIT_SHA1 \ - --build-arg GRAYLOG_FORWARDER_VERSION=`./release.py --get-forwarder-version` \ - --build-arg GRAYLOG_FORWARDER_IMAGE_VERSION=`./release.py --get-forwarder-image-version` \ - --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ +docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ + --build-arg GRAYLOG_FORWARDER_VERSION="$(./release.py --get-forwarder-version)" \ + --build-arg GRAYLOG_FORWARDER_IMAGE_VERSION="$(./release.py --get-forwarder-image-version)" \ + --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ --file docker/forwarder/Dockerfile \ --tag $IMAGE_NAME . diff --git a/docker/oss/hooks/build b/docker/oss/hooks/build index fe0fc2f6..944b8687 100755 --- a/docker/oss/hooks/build +++ b/docker/oss/hooks/build @@ -9,8 +9,8 @@ apt-get install -y python3-pip pip3 install pyyaml # Build Graylog -docker build --build-arg VCS_REF=$GIT_SHA1 \ - --build-arg GRAYLOG_VERSION=`./release.py --get-graylog-version` \ - --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \ +docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ + --build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \ + --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ --file docker/oss/Dockerfile \ --tag $IMAGE_NAME . diff --git a/jenkins.groovy b/jenkins.groovy index 2a9b0858..83a21493 100644 --- a/jenkins.groovy +++ b/jenkins.groovy @@ -77,6 +77,10 @@ pipeline --tag graylog/graylog:${MAJOR}.${MINOR}.${PATCH} \ --tag graylog/graylog:${MAJOR}.${MINOR}""" + TAG_ARGS_DATANODE = """--tag graylog/graylog-datanode:${env.TAG_NAME} \ + --tag graylog/graylog-datanode:${MAJOR}.${MINOR}.${PATCH} \ + --tag graylog/graylog-datanode:${MAJOR}.${MINOR}""" + TAG_ARGS_ENTERPRISE = """--tag graylog/graylog-enterprise:${env.TAG_NAME} \ --tag graylog/graylog-enterprise:${MAJOR}.${MINOR}.${PATCH} \ --tag graylog/graylog-enterprise:${MAJOR}.${MINOR}""" @@ -86,6 +90,7 @@ pipeline { //This is an alpha/beta/rc release, so don't update the version tags TAG_ARGS = "--tag graylog/graylog:${env.TAG_NAME}" + TAG_ARGS_DATANODE = "--tag graylog/graylog-datanode:${env.TAG_NAME}" TAG_ARGS_ENTERPRISE = "--tag graylog/graylog-enterprise:${env.TAG_NAME}" } @@ -94,12 +99,14 @@ pipeline sh 'docker run --rm --privileged multiarch/qemu-user-static --reset -p yes' sh 'docker buildx create --name multiarch --driver docker-container --use | true' sh 'docker buildx inspect --bootstrap' + sh """ docker buildx build \ --platform linux/amd64,linux/arm64/v8 \ --no-cache \ --build-arg GRAYLOG_VERSION=\$(./release.py --get-graylog-version) \ --build-arg BUILD_DATE=\$(date -u +\"%Y-%m-%dT%H:%M:%SZ\") \ + --build-arg VCS_REF=\$(git rev-parse HEAD) \ ${TAG_ARGS} \ --file docker/oss/Dockerfile \ --pull \ @@ -113,6 +120,21 @@ pipeline --no-cache \ --build-arg GRAYLOG_VERSION=\$(./release.py --get-graylog-version) \ --build-arg BUILD_DATE=\$(date -u +\"%Y-%m-%dT%H:%M:%SZ\") \ + --build-arg VCS_REF=\$(git rev-parse HEAD) \ + ${TAG_ARGS_DATANODE} \ + --file docker/datanode/Dockerfile \ + --pull \ + --push \ + . + """ + + sh """ + docker buildx build \ + --platform linux/amd64,linux/arm64/v8 \ + --no-cache \ + --build-arg GRAYLOG_VERSION=\$(./release.py --get-graylog-version) \ + --build-arg BUILD_DATE=\$(date -u +\"%Y-%m-%dT%H:%M:%SZ\") \ + --build-arg VCS_REF=\$(git rev-parse HEAD) \ ${TAG_ARGS_ENTERPRISE} \ --file docker/enterprise/Dockerfile \ --pull \ @@ -155,6 +177,7 @@ pipeline --build-arg GRAYLOG_FORWARDER_VERSION=\$(./release.py --get-forwarder-version) \ --build-arg GRAYLOG_FORWARDER_IMAGE_VERSION=\$(./release.py --get-forwarder-image-version) \ --build-arg BUILD_DATE=\$(date -u +\"%Y-%m-%dT%H:%M:%SZ\") \ + --build-arg VCS_REF=\$(git rev-parse HEAD) \ ${TAG_ARGS} \ --file docker/forwarder/Dockerfile \ --pull \