Skip to content

Switch to consuming upstream release artifacts from GitHub #195

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions 3.6/alpine/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,28 @@ ENV RABBITMQ_LOGS=- RABBITMQ_SASL_LOGS=-
ENV RABBITMQ_HOME /opt/rabbitmq
ENV PATH $RABBITMQ_HOME/sbin:$PATH

# https://www.rabbitmq.com/install-generic-unix.html
ENV GPG_KEY 0A9AF2115F4687BD29803A206B73A36E6026DFCA
# gpg: key 6026DFCA: public key "RabbitMQ Release Signing Key <info@rabbitmq.com>" imported
ENV RABBITMQ_GPG_KEY 0A9AF2115F4687BD29803A206B73A36E6026DFCA

ENV RABBITMQ_VERSION 3.6.12
ENV RABBITMQ_GITHUB_TAG rabbitmq_v3_6_12

RUN set -ex; \
\
apk add --no-cache --virtual .build-deps \
ca-certificates \
gnupg \
libressl \
tar \
xz \
; \
\
wget -O rabbitmq-server.tar.xz "https://www.rabbitmq.com/releases/rabbitmq-server/v${RABBITMQ_VERSION}/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz"; \
wget -O rabbitmq-server.tar.xz.asc "https://www.rabbitmq.com/releases/rabbitmq-server/v${RABBITMQ_VERSION}/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz.asc"; \
wget -O rabbitmq-server.tar.xz.asc "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz.asc"; \
wget -O rabbitmq-server.tar.xz "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server-generic-unix-${RABBITMQ_VERSION}.tar.xz"; \
\
export GNUPGHOME="$(mktemp -d)"; \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY"; \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$RABBITMQ_GPG_KEY"; \
gpg --batch --verify rabbitmq-server.tar.xz.asc rabbitmq-server.tar.xz; \
rm -rf "$GNUPGHOME" rabbitmq-server.tar.xz.asc; \
rm -rf "$GNUPGHOME"; \
\
mkdir -p "$RABBITMQ_HOME"; \
tar \
Expand All @@ -64,7 +64,7 @@ RUN set -ex; \
--directory "$RABBITMQ_HOME" \
--strip-components 1 \
; \
rm rabbitmq-server.tar.xz; \
rm -f rabbitmq-server.tar.xz*; \
\
# update SYS_PREFIX (first making sure it's set to what we expect it to be)
grep -qE '^SYS_PREFIX=\$\{RABBITMQ_HOME\}$' "$RABBITMQ_HOME/sbin/rabbitmq-defaults"; \
Expand Down
44 changes: 27 additions & 17 deletions 3.6/debian/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -54,26 +54,36 @@ RUN set -ex; \
ENV RABBITMQ_LOGS=- RABBITMQ_SASL_LOGS=-
# https://github.com/rabbitmq/rabbitmq-server/commit/53af45bf9a162dec849407d114041aad3d84feaf

# http://www.rabbitmq.com/install-debian.html
# "Please note that the word testing in this line refers to the state of our release of RabbitMQ, not any particular Debian distribution."
RUN set -ex; \
key='0A9AF2115F4687BD29803A206B73A36E6026DFCA'; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
gpg --export "$key" > /etc/apt/trusted.gpg.d/rabbitmq.gpg; \
rm -rf "$GNUPGHOME"; \
apt-key list
RUN echo 'deb http://www.rabbitmq.com/debian testing main' > /etc/apt/sources.list.d/rabbitmq.list
# /usr/sbin/rabbitmq-server has some irritating behavior, and only exists to "su - rabbitmq /usr/lib/rabbitmq/bin/rabbitmq-server ..."
ENV PATH /usr/lib/rabbitmq/bin:$PATH

# gpg: key 6026DFCA: public key "RabbitMQ Release Signing Key <[email protected]>" imported
ENV RABBITMQ_GPG_KEY 0A9AF2115F4687BD29803A206B73A36E6026DFCA

ENV RABBITMQ_VERSION 3.6.12
ENV RABBITMQ_GITHUB_TAG rabbitmq_v3_6_12
ENV RABBITMQ_DEBIAN_VERSION 3.6.12-1

RUN apt-get update && apt-get install -y --no-install-recommends \
rabbitmq-server=$RABBITMQ_DEBIAN_VERSION \
&& rm -rf /var/lib/apt/lists/*

# /usr/sbin/rabbitmq-server has some irritating behavior, and only exists to "su - rabbitmq /usr/lib/rabbitmq/bin/rabbitmq-server ..."
ENV PATH /usr/lib/rabbitmq/bin:$PATH
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends ca-certificates wget; \
\
wget -O rabbitmq-server.deb.asc "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server_${RABBITMQ_DEBIAN_VERSION}_all.deb.asc"; \
wget -O rabbitmq-server.deb "https://github.com/rabbitmq/rabbitmq-server/releases/download/$RABBITMQ_GITHUB_TAG/rabbitmq-server_${RABBITMQ_DEBIAN_VERSION}_all.deb"; \
\
apt-get purge -y --auto-remove ca-certificates wget; \
\
export GNUPGHOME="$(mktemp -d)"; \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$RABBITMQ_GPG_KEY"; \
gpg --batch --verify rabbitmq-server.deb.asc rabbitmq-server.deb; \
rm -rf "$GNUPGHOME"; \
\
apt install -y --no-install-recommends ./rabbitmq-server.deb; \
dpkg -l | grep rabbitmq-server; \
rm -f rabbitmq-server.deb*; \
\
rm -rf /var/lib/apt/lists/*

# set home so that any `--user` knows where to put the erlang cookie
ENV HOME /var/lib/rabbitmq
Expand All @@ -86,7 +96,7 @@ VOLUME /var/lib/rabbitmq
# add a symlink to the .erlang.cookie in /root so we can "docker exec rabbitmqctl ..." without gosu
RUN ln -sf /var/lib/rabbitmq/.erlang.cookie /root/

RUN ln -sf /usr/lib/rabbitmq/lib/rabbitmq_server-$RABBITMQ_VERSION/plugins /plugins
RUN ln -sf "/usr/lib/rabbitmq/lib/rabbitmq_server-$RABBITMQ_VERSION/plugins" /plugins

COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
Expand Down
43 changes: 36 additions & 7 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,51 @@ versions=( "${versions[@]%/}" )

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
rcVersion="${version%-rc}"
rcGrepV='-v'
if [ "$rcVersion" != "$version" ]; then
rcGrepV=
fi
rcGrepV+=' -E'
rcGrepExpr='beta|milestone|rc'

githubTag="$(
git ls-remote --tags https://github.com/rabbitmq/rabbitmq-server.git \
"refs/tags/rabbitmq_v${rcVersion//./_}_*" \
"refs/tags/v${rcVersion}.*" \
| cut -d'/' -f3- \
| grep $rcGrepV -- "$rcGrepExpr" \
| sort -V \
| tail -1
)"

rabbitmqVersion="${debianVersion%%-*}"
githubReleaseUrl="https://github.com/rabbitmq/rabbitmq-server/releases/tag/$githubTag"
fullVersion="$(
curl -fsSL "$githubReleaseUrl" \
| grep -o "/rabbitmq-server-generic-unix-${rcVersion}[.].*[.]tar[.]xz" \
| head -1 \
| sed -r "s/^.*(${rcVersion}.*)[.]tar[.]xz/\1/"
)"
debianVersion="$(
curl -fsSL "$githubReleaseUrl" \
| grep -o "/rabbitmq-server_${rcVersion}[.].*_all[.]deb" \
| head -1 \
| sed -r "s/^.*(${rcVersion}.*)_all[.]deb/\1/"
)"

if [[ "$rabbitmqVersion" != "$version".* ]]; then
echo >&2 "warning: $rabbitmqVersion doesn't appear to be $version -- skipping for now"
if [ -z "$fullVersion" ] || [ -z "$debianVersion" ]; then
echo >&2 "warning: failed to get full ('$fullVersion') or Debian ('$debianVersion') version for '$version'; skipping"
continue
fi

for variant in alpine debian; do
[ -f "$version/$variant/Dockerfile" ] || continue

(
set -x
sed -ri \
-e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$rabbitmqVersion"'/' \
-e 's/^(ENV RABBITMQ_VERSION) .*/\1 '"$fullVersion"'/' \
-e 's/^(ENV RABBITMQ_GITHUB_TAG) .*/\1 '"$githubTag"'/' \
-e 's/^(ENV RABBITMQ_DEBIAN_VERSION) .*/\1 '"$debianVersion"'/' \
"$version/$variant/Dockerfile"
)
Expand Down