Skip to content

Commit 186d896

Browse files
authored
Fix snapshot builds for 6.1 (#286)
* Fix snapshot builds for 6.1 * Set DOWNLOAD_URL to none if version is not a snapshot
1 parent b8a7bd3 commit 186d896

File tree

8 files changed

+115
-20
lines changed

8 files changed

+115
-20
lines changed

docker/datanode/Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ FROM ubuntu:22.04
44
ARG GRAYLOG_VERSION
55
ARG VCS_REF
66
ARG BUILD_DATE
7-
ARG SNAPSHOT_URL_X64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-x64.tgz
8-
ARG SNAPSHOT_URL_AARCH64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-aarch64.tgz
7+
ARG DOWNLOAD_URL_X64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-x64.tgz
8+
ARG DOWNLOAD_URL_AARCH64=https://downloads.graylog.org/releases/graylog-datanode/graylog-datanode-${GRAYLOG_VERSION}-linux-aarch64.tgz
99
ARG DEBIAN_FRONTEND=noninteractive
1010
ARG TARGETPLATFORM
1111

@@ -67,11 +67,11 @@ RUN if [ -f /tmp/datanode-local.tar.gz ] && [ -s /tmp/datanode-local.tar.gz ]; t
6767
fi; \
6868
if [ "${LOCAL_BUILD_TGZ}" = ".empty" ]; then \
6969
if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
70-
export SNAPSHOT_URL="$SNAPSHOT_URL_AARCH64"; \
70+
export DOWNLOAD_URL="$DOWNLOAD_URL_AARCH64"; \
7171
else \
72-
export SNAPSHOT_URL="$SNAPSHOT_URL_X64"; \
72+
export DOWNLOAD_URL="$DOWNLOAD_URL_X64"; \
7373
fi; \
74-
curl -fsSL --retry 3 "$SNAPSHOT_URL" -o /tmp/datanode.tar.gz; \
74+
curl -fsSL --retry 3 "$DOWNLOAD_URL" -o /tmp/datanode.tar.gz; \
7575
fi; \
7676
tar -C "$GDN_APP_ROOT" --strip-components=1 -xzf /tmp/datanode.tar.gz \
7777
&& rm -rf /tmp/datanode-local.tar.gz /tmp/datanode.tar.gz \

docker/datanode/hooks/build

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,23 @@ cd ../..
88
apt-get install -y python3-pip
99
pip3 install pyyaml
1010

11+
graylog_version="$(./release.py --get-graylog-version)"
12+
build_args=()
13+
14+
if [[ "$graylog_version" =~ SNAPSHOT ]]; then
15+
download_url_x64="$(curl -fsSL -G -d artifact=graylog-datanode-linux-x64 -d limit=1 https://downloads.graylog.org/nightly-builds | jq -r '.artifacts[0].url')"
16+
download_url_aarch64="$(sed -e 's,linux-x64,linux-aarch64,' <<< "$download_url_x64")"
17+
download_url="$(sed -e 's,-linux-x64,,' <<< "$download_url_x64")"
18+
19+
build_args+=(--build-arg DOWNLOAD_URL="$download_url")
20+
build_args+=(--build-arg DOWNLOAD_URL_X64="$download_url_x64")
21+
build_args+=(--build-arg DOWNLOAD_URL_AARCH64="$download_url_aarch64")
22+
fi
23+
1124
# Build Graylog
1225
docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \
13-
--build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \
26+
--build-arg GRAYLOG_VERSION="$graylog_version" \
1427
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
28+
${build_args[*]} \
1529
--file docker/datanode/Dockerfile \
1630
--tag $IMAGE_NAME .

docker/enterprise/Dockerfile

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ FROM ubuntu:jammy as graylog-downloader
44
ARG VCS_REF
55
ARG BUILD_DATE
66
ARG GRAYLOG_VERSION
7+
ARG GRAYLOG_PRODUCT=graylog-enterprise
78
ARG GRAYLOG_HOME=/usr/share/graylog
89
ARG GRAYLOG_UID=1100
910
ARG GRAYLOG_GID=1100
@@ -17,6 +18,9 @@ ARG TARGETPLATFORM
1718
# all files from the build context.
1819
ARG LOCAL_BUILD_TGZ=.empty
1920

21+
# Allows building a custom artifact. (e.g., snapshot builds)
22+
ARG DOWNLOAD_URL=none
23+
2024
WORKDIR /tmp
2125

2226
# hadolint ignore=DL3008,DL3015
@@ -28,13 +32,17 @@ RUN \
2832
curl > /dev/null
2933

3034
COPY build/fetch-and-extract.sh /bin/fetch-and-extract
31-
RUN if [ "${LOCAL_BUILD_TGZ}" = ".empty" ]; then \
35+
36+
RUN if [ "${LOCAL_BUILD_TGZ}" = ".empty" ] && [ "${DOWNLOAD_URL}" = "none" ]; then \
3237
chmod +x /bin/fetch-and-extract \
3338
&& fetch-and-extract \
34-
"https://packages.graylog2.org/releases/graylog-enterprise/graylog-enterprise-${GRAYLOG_VERSION}.tgz" \
35-
"https://packages.graylog2.org/releases/graylog-enterprise/graylog-enterprise-${GRAYLOG_VERSION}.tgz.sha256.txt"; \
39+
"https://downloads.graylog.org/releases/${GRAYLOG_PRODUCT}/${GRAYLOG_PRODUCT}-${GRAYLOG_VERSION}.tgz" \
40+
"https://downloads.graylog.org/releases/${GRAYLOG_PRODUCT}/${GRAYLOG_PRODUCT}-${GRAYLOG_VERSION}.tgz.sha256.txt"; \
3641
fi
3742

43+
RUN if [ "${DOWNLOAD_URL}" != "none" ]; then \
44+
chmod +x /bin/fetch-and-extract && fetch-and-extract "${DOWNLOAD_URL}"; \
45+
fi
3846

3947
COPY "${LOCAL_BUILD_TGZ}" "/tmp/graylog.tgz"
4048

@@ -150,7 +158,6 @@ RUN \
150158
/usr/share/X11 \
151159
/usr/share/doc/* 2> /dev/null
152160

153-
154161
COPY docker-entrypoint.sh /
155162
COPY health_check.sh /
156163

@@ -170,8 +177,8 @@ HEALTHCHECK \
170177
# -------------------------------------------------------------------------------------------------
171178

172179
LABEL maintainer="Graylog, Inc. <hello@graylog.com>" \
173-
org.label-schema.name="Graylog Docker Image" \
174-
org.label-schema.description="Official Graylog Docker image - with Enterprise Plugins" \
180+
org.label-schema.name="Graylog Enterprise Docker Image" \
181+
org.label-schema.description="Official Graylog Enterprise Docker Image" \
175182
org.label-schema.url="https://www.graylog.org/" \
176183
org.label-schema.vcs-ref=${VCS_REF} \
177184
org.label-schema.vcs-url="https://github.com/Graylog2/graylog-docker" \

docker/enterprise/hooks/build

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,23 @@ patch config/graylog.conf patches/graylog-server.conf.patch
1010
apt-get install -y python3-pip
1111
pip3 install pyyaml
1212

13+
graylog_version="$(./release.py --get-graylog-version)"
14+
build_args=()
15+
16+
if [[ "$graylog_version" =~ SNAPSHOT ]]; then
17+
download_url_x64="$(curl -fsSL -G -d artifact=graylog-enterprise-linux-x64 -d limit=1 https://downloads.graylog.org/nightly-builds | jq -r '.artifacts[0].url')"
18+
download_url_aarch64="$(sed -e 's,linux-x64,linux-aarch64,' <<< "$download_url_x64")"
19+
download_url="$(sed -e 's,-linux-x64,,' <<< "$download_url_x64")"
20+
21+
build_args+=(--build-arg DOWNLOAD_URL="$download_url")
22+
build_args+=(--build-arg DOWNLOAD_URL_X64="$download_url_x64")
23+
build_args+=(--build-arg DOWNLOAD_URL_AARCH64="$download_url_aarch64")
24+
fi
25+
1326
# Build Graylog Enterprise & Integration Included
1427
docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \
15-
--build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \
28+
--build-arg GRAYLOG_VERSION="$graylog_version" \
1629
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
30+
${build_args[*]} \
1731
--file docker/enterprise/Dockerfile \
1832
--tag $IMAGE_NAME .

docker/oss/Dockerfile

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,28 @@
22
FROM ubuntu:jammy as graylog-downloader
33

44
ARG VCS_REF
5+
ARG BUILD_DATE
56
ARG GRAYLOG_VERSION
7+
ARG GRAYLOG_PRODUCT=graylog
68
ARG GRAYLOG_HOME=/usr/share/graylog
79
ARG GRAYLOG_UID=1100
810
ARG GRAYLOG_GID=1100
11+
ARG TARGETPLATFORM
12+
13+
# We default to an empty file instead of leaving LOCAL_BUILD_TGZ blank
14+
# because Docker would execute the following COPY command with a blank
15+
# value:
16+
# COPY "" "/tmp/graylog.tgz"
17+
# That creates a /tmp/graylog.tgz *directory* in the container with
18+
# all files from the build context.
19+
ARG LOCAL_BUILD_TGZ=.empty
20+
21+
# Allows building a custom artifact. (e.g., snapshot builds)
22+
ARG DOWNLOAD_URL=none
923

1024
WORKDIR /tmp
1125

12-
# hadolint ignore=DL3008,DL3015,DL3059
26+
# hadolint ignore=DL3008,DL3015
1327
RUN \
1428
apt-get update > /dev/null && \
1529
apt-get upgrade -y > /dev/null && \
@@ -18,10 +32,27 @@ RUN \
1832
curl > /dev/null
1933

2034
COPY build/fetch-and-extract.sh /bin/fetch-and-extract
21-
RUN chmod +x /bin/fetch-and-extract && fetch-and-extract \
22-
"https://packages.graylog2.org/releases/graylog/graylog-${GRAYLOG_VERSION}.tgz" \
23-
"https://packages.graylog2.org/releases/graylog/graylog-${GRAYLOG_VERSION}.tgz.sha256.txt"
2435

36+
RUN if [ "${LOCAL_BUILD_TGZ}" = ".empty" ] && [ "${DOWNLOAD_URL}" = "none" ]; then \
37+
chmod +x /bin/fetch-and-extract \
38+
&& fetch-and-extract \
39+
"https://downloads.graylog.org/releases/${GRAYLOG_PRODUCT}/${GRAYLOG_PRODUCT}-${GRAYLOG_VERSION}.tgz" \
40+
"https://downloads.graylog.org/releases/${GRAYLOG_PRODUCT}/${GRAYLOG_PRODUCT}-${GRAYLOG_VERSION}.tgz.sha256.txt"; \
41+
fi
42+
43+
RUN if [ "${DOWNLOAD_URL}" != "none" ]; then \
44+
chmod +x /bin/fetch-and-extract && fetch-and-extract "${DOWNLOAD_URL}"; \
45+
fi
46+
47+
COPY "${LOCAL_BUILD_TGZ}" "/tmp/graylog.tgz"
48+
49+
# An empty /tmp/graylog.tgz file indicates that we don't use a
50+
# custom LOCAL_BUILD_TGZ file.
51+
RUN if [ -f "/tmp/graylog.tgz" ] && [ -s "/tmp/graylog.tgz" ]; then \
52+
mkdir /opt/graylog && \
53+
tar --extract --gzip --file "/tmp/graylog.tgz" --strip-components=1 --directory /opt/graylog; \
54+
rm -rf /tmp/graylog.tgz; \
55+
fi
2556

2657
RUN \
2758
install \
@@ -134,7 +165,7 @@ HEALTHCHECK \
134165

135166
LABEL maintainer="Graylog, Inc. <hello@graylog.com>" \
136167
org.label-schema.name="Graylog Docker Image" \
137-
org.label-schema.description="Official Graylog Docker image" \
168+
org.label-schema.description="Official Graylog Docker Image" \
138169
org.label-schema.url="https://www.graylog.org/" \
139170
org.label-schema.vcs-ref=${VCS_REF} \
140171
org.label-schema.vcs-url="https://github.com/Graylog2/graylog-docker" \

docker/oss/hooks/build

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,23 @@ cd ../..
88
apt-get install -y python3-pip
99
pip3 install pyyaml
1010

11+
graylog_version="$(./release.py --get-graylog-version)"
12+
build_args=()
13+
14+
if [[ "$graylog_version" =~ SNAPSHOT ]]; then
15+
download_url_x64="$(curl -fsSL -G -d artifact=graylog-linux-x64 -d limit=1 https://downloads.graylog.org/nightly-builds | jq -r '.artifacts[0].url')"
16+
download_url_aarch64="$(sed -e 's,linux-x64,linux-aarch64,' <<< "$download_url_x64")"
17+
download_url="$(sed -e 's,-linux-x64,,' <<< "$download_url_x64")"
18+
19+
build_args+=(--build-arg DOWNLOAD_URL="$download_url")
20+
build_args+=(--build-arg DOWNLOAD_URL_X64="$download_url_x64")
21+
build_args+=(--build-arg DOWNLOAD_URL_AARCH64="$download_url_aarch64")
22+
fi
23+
1124
# Build Graylog
1225
docker build --build-arg VCS_REF="$(git rev-parse --short HEAD)" \
13-
--build-arg GRAYLOG_VERSION="$(./release.py --get-graylog-version)" \
26+
--build-arg GRAYLOG_VERSION="$graylog_version" \
1427
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
28+
${build_args[*]} \
1529
--file docker/oss/Dockerfile \
1630
--tag $IMAGE_NAME .

test/docker-compose.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ services:
2828
args:
2929
- VCS_REF
3030
- GRAYLOG_VERSION
31+
- DOWNLOAD_URL
3132
entrypoint: /usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh
3233
environment:
3334
# CHANGE ME!

test/integration_test.sh

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,28 @@ then
5353
NC_OPTS=
5454
fi
5555

56+
get_snapshot_url() {
57+
curl -fsSL -G -d artifact=graylog -d limit=1 https://downloads.graylog.org/nightly-builds | \
58+
jq -r '.artifacts[0].url'
59+
}
5660

5761
compose_up() {
62+
local graylog_version="$(cd .. && ./release.py --get-graylog-version)"
5863

64+
echo "Using Graylog version: $graylog_version"
5965
cat << EOF > .env
6066
VCS_REF=$(git rev-parse --short HEAD)
61-
GRAYLOG_VERSION=$(cd .. && ./release.py --get-graylog-version)
67+
GRAYLOG_VERSION=$graylog_version
6268
EOF
6369

70+
if [[ "$graylog_version" =~ SNAPSHOT ]]; then
71+
local snapshot_url="$(get_snapshot_url)"
72+
echo "Using snapshot: $snapshot_url"
73+
echo "DOWNLOAD_URL=$snapshot_url" >> .env
74+
else
75+
echo "DOWNLOAD_URL=none" >> .env
76+
fi
77+
6478
docker-compose --file docker-compose.tpl config > ./docker-compose.yml
6579
docker-compose down -v
6680
docker-compose build --pull

0 commit comments

Comments
 (0)