Skip to content

Commit 741def1

Browse files
committed
Update repository structure for future multi-version support
1 parent 9916114 commit 741def1

File tree

6 files changed

+75
-30
lines changed

6 files changed

+75
-30
lines changed

.travis.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
language: bash
22
services: docker
33

4+
env:
5+
- VERSION=3.6
6+
47
install:
58
- git clone https://github.com/docker-library/official-images.git ~/official-images
69

710
before_script:
811
- env | sort
9-
- image='rabbitmq'
12+
- cd "$VERSION"
13+
- image="rabbitmq:$VERSION"
1014

1115
script:
1216
- docker build -t "$image" .
1317
- ~/official-images/test/run.sh "$image"
14-
- docker build -t "$image:management" management
15-
- ~/official-images/test/run.sh "$image:management"
18+
- docker build -t "${image}-management" management
19+
- ~/official-images/test/run.sh "${image}-management"
1620

1721
after_script:
1822
- docker images
File renamed without changes.
File renamed without changes.
File renamed without changes.

generate-stackbrew-library.sh

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
#!/bin/bash
22
set -eu
33

4+
declare -A aliases=(
5+
[3.6]='3 latest'
6+
)
7+
48
self="$(basename "$BASH_SOURCE")"
59
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
610

11+
versions=( */ )
12+
versions=( "${versions[@]%/}" )
13+
14+
# sort version numbers with highest first
15+
IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS
16+
717
# get the most recent commit which modified any of "$@"
818
fileCommit() {
919
git log -1 --format='format:%H' HEAD -- "$@"
@@ -41,33 +51,41 @@ join() {
4151
echo "${out#$sep}"
4252
}
4353

44-
commit="$(dirCommit .)"
45-
46-
fullVersion="$(git show "$commit":Dockerfile | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')"
47-
48-
versionAliases=()
49-
while [ "${fullVersion%.*}" != "$fullVersion" ]; do
50-
versionAliases+=( $fullVersion )
51-
fullVersion="${fullVersion%.*}"
52-
done
53-
versionAliases+=( $fullVersion latest )
54-
55-
echo
56-
cat <<-EOE
57-
Tags: $(join ', ' "${versionAliases[@]}")
58-
GitCommit: $commit
59-
EOE
54+
for version in "${versions[@]}"; do
55+
commit="$(dirCommit "$version")"
6056

61-
for variant in management; do
62-
commit="$(dirCommit "$variant")"
57+
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')"
6358

64-
variantAliases=( "${versionAliases[@]/%/-$variant}" )
65-
variantAliases=( "${variantAliases[@]//latest-/}" )
59+
versionAliases=()
60+
while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do
61+
versionAliases+=( $fullVersion )
62+
fullVersion="${fullVersion%[.-]*}"
63+
done
64+
versionAliases+=(
65+
$version
66+
${aliases[$version]:-}
67+
)
6668

6769
echo
6870
cat <<-EOE
69-
Tags: $(join ', ' "${variantAliases[@]}")
71+
Tags: $(join ', ' "${versionAliases[@]}")
7072
GitCommit: $commit
71-
Directory: $variant
73+
Directory: $version
7274
EOE
75+
76+
for variant in management; do
77+
[ -f "$version/$variant/Dockerfile" ] || continue
78+
79+
commit="$(dirCommit "$version/$variant")"
80+
81+
variantAliases=( "${versionAliases[@]/%/-$variant}" )
82+
variantAliases=( "${variantAliases[@]//latest-/}" )
83+
84+
echo
85+
cat <<-EOE
86+
Tags: $(join ', ' "${variantAliases[@]}")
87+
GitCommit: $commit
88+
Directory: $version/$variant
89+
EOE
90+
done
7391
done

update.sh

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,33 @@ 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 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' Dockerfile
12-
sed -ri 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' 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+
(
26+
set -x
27+
sed -ri 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' "$version/Dockerfile"
28+
sed -ri 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' "$version/Dockerfile"
29+
)
30+
31+
travisEnv='\n - VERSION='"$version$travisEnv"
32+
done
33+
34+
travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)"
35+
echo "$travis" > .travis.yml

0 commit comments

Comments
 (0)