Skip to content

Commit 253abcc

Browse files
authored
Merge pull request #134 from infosiftr/multi-version
Update repository structure for future multi-version support
2 parents c814069 + 7927704 commit 253abcc

File tree

9 files changed

+86
-49
lines changed

9 files changed

+86
-49
lines changed

.travis.yml

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ language: bash
22
services: docker
33

44
env:
5-
- VARIANT=debian
6-
- VARIANT=alpine
5+
- VERSION=3.6 VARIANT=debian
6+
- VERSION=3.6 VARIANT=alpine
77

88
install:
99
- git clone https://github.com/docker-library/official-images.git ~/official-images
1010

1111
before_script:
1212
- env | sort
13-
- image="rabbitmq:$VARIANT"
13+
- cd "$VERSION"
14+
- image="rabbitmq:$VERSION-$VARIANT"
1415

1516
script:
1617
- travis_retry docker build -t "$image" "$VARIANT"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

generate-stackbrew-library.sh

+50-39
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
#!/bin/bash
22
set -eu
33

4+
declare -A aliases=(
5+
[3.6]='3 latest'
6+
)
47
defaultVariant='debian'
58

69
self="$(basename "$BASH_SOURCE")"
710
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
811

12+
versions=( */ )
13+
versions=( "${versions[@]%/}" )
14+
15+
# sort version numbers with highest first
16+
IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS
17+
918
# get the most recent commit which modified any of "$@"
1019
fileCommit() {
1120
git log -1 --format='format:%H' HEAD -- "$@"
@@ -43,50 +52,52 @@ join() {
4352
echo "${out#$sep}"
4453
}
4554

46-
for variant in debian alpine; do
47-
commit="$(dirCommit "$variant")"
48-
49-
fullVersion="$(git show "$commit":"$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')"
50-
51-
versionAliases=()
52-
while [ "${fullVersion%.*}" != "$fullVersion" ]; do
53-
versionAliases+=( $fullVersion )
54-
fullVersion="${fullVersion%.*}"
55-
done
56-
versionAliases+=(
57-
$fullVersion
58-
latest
59-
)
60-
61-
variantAliases=( "${versionAliases[@]/%/-$variant}" )
62-
variantAliases=( "${variantAliases[@]//latest-/}" )
63-
64-
if [ "$variant" = "$defaultVariant" ]; then
65-
variantAliases=( "${versionAliases[@]}" )
66-
fi
67-
68-
echo
69-
cat <<-EOE
70-
Tags: $(join ', ' "${variantAliases[@]}")
71-
GitCommit: $commit
72-
Directory: $variant
73-
EOE
74-
75-
for subVariant in management; do
76-
commit="$(dirCommit "$variant/$subVariant")"
77-
78-
subVariantAliases=( "${versionAliases[@]/%/-$subVariant}" )
79-
subVariantAliases=( "${subVariantAliases[@]//latest-/}" )
80-
81-
if [ "$variant" != "$defaultVariant" ]; then
82-
subVariantAliases=( "${subVariantAliases[@]/%/-$variant}" )
55+
for version in "${versions[@]}"; do
56+
for variant in debian alpine; do
57+
commit="$(dirCommit "$version/$variant")"
58+
59+
fullVersion="$(git show "$commit":"$version/$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')"
60+
61+
versionAliases=()
62+
while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do
63+
versionAliases+=( $fullVersion )
64+
fullVersion="${fullVersion%[.-]*}"
65+
done
66+
versionAliases+=(
67+
$version
68+
${aliases[$version]:-}
69+
)
70+
71+
if [ "$variant" = "$defaultVariant" ]; then
72+
variantAliases=( "${versionAliases[@]}" )
73+
else
74+
variantAliases=( "${versionAliases[@]/%/-$variant}" )
75+
variantAliases=( "${variantAliases[@]//latest-/}" )
8376
fi
8477

8578
echo
8679
cat <<-EOE
87-
Tags: $(join ', ' "${subVariantAliases[@]}")
80+
Tags: $(join ', ' "${variantAliases[@]}")
8881
GitCommit: $commit
89-
Directory: $variant/$subVariant
82+
Directory: $version/$variant
9083
EOE
84+
85+
for subVariant in management; do
86+
commit="$(dirCommit "$version/$variant/$subVariant")"
87+
88+
subVariantAliases=( "${versionAliases[@]/%/-$subVariant}" )
89+
subVariantAliases=( "${subVariantAliases[@]//latest-/}" )
90+
91+
if [ "$variant" != "$defaultVariant" ]; then
92+
subVariantAliases=( "${subVariantAliases[@]/%/-$variant}" )
93+
fi
94+
95+
echo
96+
cat <<-EOE
97+
Tags: $(join ', ' "${subVariantAliases[@]}")
98+
GitCommit: $commit
99+
Directory: $version/$variant/$subVariant
100+
EOE
101+
done
91102
done
92103
done

update.sh

+32-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,37 @@ set -e
33

44
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
55

6-
debianVersion="$(curl -sSL 'http://www.rabbitmq.com/debian/dists/testing/main/binary-amd64/Packages' | grep -m1 -A10 '^Package: rabbitmq-server$' | grep -m1 '^Version: ' | cut -d' ' -f2)"
6+
versions=( "$@" )
7+
if [ ${#versions[@]} -eq 0 ]; then
8+
versions=( */ )
9+
fi
10+
versions=( "${versions[@]%/}" )
711

8-
rabbitmqVersion="${debianVersion%%-*}"
12+
travisEnv=
13+
for version in "${versions[@]}"; do
14+
# TODO figure out what multi-version looks like here? :(
15+
debianVersion="$(curl -sSL 'http://www.rabbitmq.com/debian/dists/testing/main/binary-amd64/Packages' | grep -m1 -A10 '^Package: rabbitmq-server$' | grep -m1 '^Version: ' | cut -d' ' -f2)"
16+
# https://github.com/docker-library/rabbitmq/pull/121#issuecomment-271816323
917

10-
set -x
11-
sed -ri \
12-
-e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' \
13-
-e 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' \
14-
*/Dockerfile
18+
rabbitmqVersion="${debianVersion%%-*}"
19+
20+
if [[ "$rabbitmqVersion" != "$version".* ]]; then
21+
echo >&2 "warning: $rabbitmqVersion doesn't appear to be $version -- skipping for now"
22+
continue
23+
fi
24+
25+
for variant in alpine debian; do
26+
(
27+
set -x
28+
sed -ri \
29+
-e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' \
30+
-e 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' \
31+
"$version/$variant/Dockerfile"
32+
)
33+
34+
travisEnv='\n - VERSION='"$version"' VARIANT='"$variant$travisEnv"
35+
done
36+
done
37+
38+
travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"
39+
echo "$travis" > .travis.yml

0 commit comments

Comments
 (0)