Skip to content
This repository was archived by the owner on Aug 5, 2025. It is now read-only.

Commit f7d134e

Browse files
committed
Add arm64v8 to 7.13.1
1 parent 497c199 commit f7d134e

File tree

5 files changed

+59
-42
lines changed

5 files changed

+59
-42
lines changed

6/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
# This image re-bundles the Docker image from the upstream provider, Elastic.
44
FROM docker.elastic.co/logstash/logstash:6.8.16@sha256:51a37b460f7f50810a4f83874564b02f536aa477a09b4aba2bf4add7ab95d3a6
5+
# Supported Bashbrew Architectures: amd64
56

67
# The upstream image was built by:
78
# https://github.com/elastic/dockerfiles/tree/v6.8.16/logstash

7/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Logstash 7.13.1
22

33
# This image re-bundles the Docker image from the upstream provider, Elastic.
4-
FROM docker.elastic.co/logstash/logstash:7.13.1@sha256:d5c5b27a698168d18266c013f5e1e1e957f1416e9f7af585b4203c726f678869
4+
FROM docker.elastic.co/logstash/logstash:7.13.1@sha256:f26530bab544ba481d6353ae5601fe7fa5e14f3fadf06524d99b8da801acc78f
5+
# Supported Bashbrew Architectures: amd64 arm64v8
56

67
# The upstream image was built by:
78
# https://github.com/elastic/dockerfiles/tree/v7.13.1/logstash

Dockerfile.template

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
# This image re-bundles the Docker image from the upstream provider, Elastic.
44
FROM %%UPSTREAM_IMAGE_DIGEST%%
5+
# Supported Bashbrew Architectures: %%UPSTREAM_IMAGE_ARCHITECTURES%%
56

67
# The upstream image was built by:
78
# %%UPSTREAM_DOCKERFILE_LINK%%

generate-stackbrew-library.sh

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
#!/bin/bash
2-
set -eu
3-
4-
declare -A aliases=(
5-
#[5]='latest'
6-
)
1+
#!/usr/bin/env bash
2+
set -Eeuo pipefail
73

84
self="$(basename "$BASH_SOURCE")"
95
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
@@ -54,47 +50,18 @@ join() {
5450
for version in "${versions[@]}"; do
5551
commit="$(dirCommit "$version")"
5652

57-
# Strip suffix qualifiers from versions like "6.4.3-alpha1"
58-
plainVersion="${version%-*}"
53+
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "FROM" && $2 ~ /^docker.elastic.co/ { gsub(/^[^:]+:|@.+$/, "", $2); print $2; exit }')"
5954

60-
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "ENV" && $2 == "LOGSTASH_VERSION" { print $3; exit }')"
55+
versionAliases=( $fullVersion )
56+
# TODO decide whether to support X.Y aliases as well
6157

62-
versionAliases=()
63-
if [ "${plainVersion%%.*}" -ge 6 ]; then
64-
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "FROM" && $2 ~ /^docker.elastic.co/ { gsub(/^[^:]+:|@.+$/, "", $2); print $2; exit }')"
65-
versionAliases+=( $fullVersion )
66-
# TODO decide whether to support X.Y aliases as well
67-
else
68-
while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do
69-
versionAliases+=( $fullVersion )
70-
fullVersion="${fullVersion%[.-]*}"
71-
done
72-
versionAliases+=(
73-
$version
74-
${aliases[$version]:-}
75-
)
76-
fi
58+
versionArches="$(git show "$commit":"$version/Dockerfile" | awk -F ': ' '$1 == "# Supported Bashbrew Architectures" { print $2; exit }')"
7759

7860
echo
7961
cat <<-EOE
8062
Tags: $(join ', ' "${versionAliases[@]}")
63+
Architectures: $(join ', ' $versionArches)
8164
GitCommit: $commit
8265
Directory: $version
8366
EOE
84-
85-
for variant in alpine; do
86-
[ -f "$version/$variant/Dockerfile" ] || continue
87-
88-
commit="$(dirCommit "$version/$variant")"
89-
90-
variantAliases=( "${versionAliases[@]/%/-$variant}" )
91-
variantAliases=( "${variantAliases[@]//latest-/}" )
92-
93-
echo
94-
cat <<-EOE
95-
Tags: $(join ', ' "${variantAliases[@]}")
96-
GitCommit: $commit
97-
Directory: $version/$variant
98-
EOE
99-
done
10067
done

update.sh

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,57 @@ for version in "${versions[@]}"; do
4646

4747
# Parse image manifest for sha
4848
authToken="$(curl -fsSL "https://docker-auth.elastic.co/auth?service=token-service&scope=repository:$upstreamImageRepo:pull" | jq -r .token)"
49-
digest="$(curl --head -fsSL -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' -H "Authorization: Bearer $authToken" "https://docker.elastic.co/v2/$upstreamImageRepo/manifests/$fullVersion" | tr -d '\r' | gawk -F ':[[:space:]]+' 'tolower($1) == "docker-content-digest" { print $2 }')"
49+
manifestList="$(
50+
curl -D- -fsSL \
51+
-H 'Accept: application/vnd.docker.distribution.manifest.list.v2+json' \
52+
-H 'Accept: application/vnd.docker.distribution.manifest.v2+json' \
53+
-H "Authorization: Bearer $authToken" \
54+
"https://docker.elastic.co/v2/$upstreamImageRepo/manifests/$fullVersion" \
55+
| tr -d '\r'
56+
)"
57+
digest="$(gawk -F ':[[:space:]]+' 'tolower($1) == "docker-content-digest" { print $2; exit }' <<<"$manifestList")"
58+
manifestList="$(gawk '/^$/ { pre = 1; next } pre { print }' <<<"$manifestList")"
5059

5160
# Format image reference (image@sha)
5261
upstreamImageDigest="$upstreamImage@$digest"
5362

63+
schemaVersion="$(jq -r '.schemaVersion' <<<"$manifestList")"
64+
[ "$schemaVersion" = 2 ] # sanity check
65+
mediaType="$(jq -r '.mediaType' <<<"$manifestList")"
66+
case "$mediaType" in
67+
'application/vnd.docker.distribution.manifest.v2+json')
68+
upstreamImageArchitectures='amd64'
69+
;;
70+
71+
'application/vnd.docker.distribution.manifest.list.v2+json')
72+
upstreamImageArchitectures="$(
73+
jq -r '
74+
.manifests[].platform
75+
| if .os != "linux" then
76+
.os + "-"
77+
else "" end
78+
+ if .architecture == "arm" then
79+
"arm32"
80+
elif .architecture == "386" then
81+
"i386"
82+
else .architecture end
83+
+ if .variant then
84+
.variant
85+
elif .architecture == "arm64" then
86+
"v8"
87+
else "" end
88+
' <<<"$manifestList" \
89+
| sort -u \
90+
| xargs
91+
)"
92+
;;
93+
94+
*)
95+
echo >&2 "error: unknown media type on '$upstreamImageDigest': '$mediaType'"
96+
exit 1
97+
;;
98+
esac
99+
54100
upstreamDockerfileTag="v$fullVersion"
55101
upstreamDockerfileLink="https://github.com/elastic/dockerfiles/tree/$upstreamDockerfileTag/$upstreamProduct"
56102
upstreamDockerfile="${upstreamDockerfileLink//tree/raw}/Dockerfile"
@@ -65,6 +111,7 @@ for version in "${versions[@]}"; do
65111

66112
sed -e 's!%%VERSION%%!'"$fullVersion"'!g' \
67113
-e 's!%%UPSTREAM_IMAGE_DIGEST%%!'"$upstreamImageDigest"'!g' \
114+
-e 's!%%UPSTREAM_IMAGE_ARCHITECTURES%%!'"$upstreamImageArchitectures"'!g' \
68115
-e 's!%%UPSTREAM_DOCKERFILE_LINK%%!'"$upstreamDockerfileLink"'!g' \
69116
-e 's!%%UPSTREAM_DOCKER_BUILD%%!'"$upstreamDockerBuild"'!g' \
70117
Dockerfile.template > "$version/Dockerfile"

0 commit comments

Comments
 (0)