diff --git a/.travis.yml b/.travis.yml index c493230..50142fb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,15 +2,16 @@ language: bash services: docker env: - - VARIANT=debian - - VARIANT=alpine + - VERSION=3.6 VARIANT=debian + - VERSION=3.6 VARIANT=alpine install: - git clone https://github.com/docker-library/official-images.git ~/official-images before_script: - env | sort - - image="rabbitmq:$VARIANT" + - cd "$VERSION" + - image="rabbitmq:$VERSION-$VARIANT" script: - travis_retry docker build -t "$image" "$VARIANT" diff --git a/alpine/Dockerfile b/3.6/alpine/Dockerfile similarity index 100% rename from alpine/Dockerfile rename to 3.6/alpine/Dockerfile diff --git a/alpine/docker-entrypoint.sh b/3.6/alpine/docker-entrypoint.sh similarity index 100% rename from alpine/docker-entrypoint.sh rename to 3.6/alpine/docker-entrypoint.sh diff --git a/alpine/management/Dockerfile b/3.6/alpine/management/Dockerfile similarity index 100% rename from alpine/management/Dockerfile rename to 3.6/alpine/management/Dockerfile diff --git a/debian/Dockerfile b/3.6/debian/Dockerfile similarity index 100% rename from debian/Dockerfile rename to 3.6/debian/Dockerfile diff --git a/debian/docker-entrypoint.sh b/3.6/debian/docker-entrypoint.sh similarity index 100% rename from debian/docker-entrypoint.sh rename to 3.6/debian/docker-entrypoint.sh diff --git a/debian/management/Dockerfile b/3.6/debian/management/Dockerfile similarity index 100% rename from debian/management/Dockerfile rename to 3.6/debian/management/Dockerfile diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index d9566a4..15b92bd 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,11 +1,20 @@ #!/bin/bash set -eu +declare -A aliases=( + [3.6]='3 latest' +) defaultVariant='debian' self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" +versions=( */ ) +versions=( "${versions[@]%/}" ) + +# sort version numbers with highest first +IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS + # get the most recent commit which modified any of "$@" fileCommit() { git log -1 --format='format:%H' HEAD -- "$@" @@ -43,50 +52,52 @@ join() { echo "${out#$sep}" } -for variant in debian alpine; do - commit="$(dirCommit "$variant")" +for version in "${versions[@]}"; do + for variant in debian alpine; do + commit="$(dirCommit "$version/$variant")" - fullVersion="$(git show "$commit":"$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')" + fullVersion="$(git show "$commit":"$version/$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "RABBITMQ_VERSION" { print $3; exit }')" - versionAliases=() - while [ "${fullVersion%.*}" != "$fullVersion" ]; do - versionAliases+=( $fullVersion ) - fullVersion="${fullVersion%.*}" - done - versionAliases+=( - $fullVersion - latest - ) + versionAliases=() + while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do + versionAliases+=( $fullVersion ) + fullVersion="${fullVersion%[.-]*}" + done + versionAliases+=( + $version + ${aliases[$version]:-} + ) - variantAliases=( "${versionAliases[@]/%/-$variant}" ) - variantAliases=( "${variantAliases[@]//latest-/}" ) - - if [ "$variant" = "$defaultVariant" ]; then - variantAliases=( "${versionAliases[@]}" ) - fi - - echo - cat <<-EOE - Tags: $(join ', ' "${variantAliases[@]}") - GitCommit: $commit - Directory: $variant - EOE - - for subVariant in management; do - commit="$(dirCommit "$variant/$subVariant")" - - subVariantAliases=( "${versionAliases[@]/%/-$subVariant}" ) - subVariantAliases=( "${subVariantAliases[@]//latest-/}" ) - - if [ "$variant" != "$defaultVariant" ]; then - subVariantAliases=( "${subVariantAliases[@]/%/-$variant}" ) + if [ "$variant" = "$defaultVariant" ]; then + variantAliases=( "${versionAliases[@]}" ) + else + variantAliases=( "${versionAliases[@]/%/-$variant}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) fi echo cat <<-EOE - Tags: $(join ', ' "${subVariantAliases[@]}") + Tags: $(join ', ' "${variantAliases[@]}") GitCommit: $commit - Directory: $variant/$subVariant + Directory: $version/$variant EOE + + for subVariant in management; do + commit="$(dirCommit "$version/$variant/$subVariant")" + + subVariantAliases=( "${versionAliases[@]/%/-$subVariant}" ) + subVariantAliases=( "${subVariantAliases[@]//latest-/}" ) + + if [ "$variant" != "$defaultVariant" ]; then + subVariantAliases=( "${subVariantAliases[@]/%/-$variant}" ) + fi + + echo + cat <<-EOE + Tags: $(join ', ' "${subVariantAliases[@]}") + GitCommit: $commit + Directory: $version/$variant/$subVariant + EOE + done done done diff --git a/update.sh b/update.sh index e02a7df..efaa9e5 100755 --- a/update.sh +++ b/update.sh @@ -3,12 +3,37 @@ set -e cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" -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)" +versions=( "$@" ) +if [ ${#versions[@]} -eq 0 ]; then + versions=( */ ) +fi +versions=( "${versions[@]%/}" ) -rabbitmqVersion="${debianVersion%%-*}" +travisEnv= +for version in "${versions[@]}"; do + # TODO figure out what multi-version looks like here? :( + 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)" + # https://github.com/docker-library/rabbitmq/pull/121#issuecomment-271816323 -set -x -sed -ri \ - -e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' \ - -e 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' \ - */Dockerfile + rabbitmqVersion="${debianVersion%%-*}" + + if [[ "$rabbitmqVersion" != "$version".* ]]; then + echo >&2 "warning: $rabbitmqVersion doesn't appear to be $version -- skipping for now" + continue + fi + + for variant in alpine debian; do + ( + set -x + sed -ri \ + -e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' \ + -e 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' \ + "$version/$variant/Dockerfile" + ) + + travisEnv='\n - VERSION='"$version"' VARIANT='"$variant$travisEnv" + done +done + +travis="$(awk -v 'RS=\n\n' '$1 == "env:" { $0 = "env:'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)" +echo "$travis" > .travis.yml