diff options
author | Philip Kuryloski <kuryloskip@vmware.com> | 2020-11-23 17:49:07 +0100 |
---|---|---|
committer | Philip Kuryloski <kuryloskip@vmware.com> | 2020-11-23 17:49:07 +0100 |
commit | e81e90b0834bcd0c3a38e91215e53fbebff32628 (patch) | |
tree | 5cc9700c6bf60ec73a2772b41df8fe500e474013 | |
parent | 1ac054877b2d4fa615ec5010c492457d76ab614a (diff) | |
download | rabbitmq-server-git-test-rabbitmq-amqp1-0-in-actions.tar.gz |
Add additional testing dependencies to the temporary docker imagestest-rabbitmq-amqp1-0-in-actions
these images are used by the github actions workflows, and though
while not sensitive, are not intended to be published
-rw-r--r-- | ci/dockerfiles/22.3/erlang_elixir | 185 | ||||
-rw-r--r-- | ci/dockerfiles/23.1/erlang_elixir | 185 | ||||
-rw-r--r-- | ci/dockerfiles/ci-base | 2 | ||||
-rw-r--r-- | ci/dockerfiles/git/erlang_elixir | 28 | ||||
-rw-r--r-- | mk/github-actions.mk | 18 |
5 files changed, 357 insertions, 61 deletions
diff --git a/ci/dockerfiles/22.3/erlang_elixir b/ci/dockerfiles/22.3/erlang_elixir index 524d9af685..5d86b34724 100644 --- a/ci/dockerfiles/22.3/erlang_elixir +++ b/ci/dockerfiles/22.3/erlang_elixir @@ -1,18 +1,175 @@ -FROM erlang:22.3 +## The contents of this file are subject to the Mozilla Public License +## Version 1.1 (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License +## at http://www.mozilla.org/MPL/ +# +## Software distributed under the License is distributed on an "AS IS" +## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +## the License for the specific language governing rights and +## limitations under the License. +# +## The Original Code is RabbitMQ. +# +## The Initial Developer of the Original Code is GoPivotal, Inc. +## Copyright (c) 2018-2019 Pivotal Software, Inc. All rights reserved. -ENV ERLANG_VERSION 22.3 +FROM buildpack-deps:stretch -# elixir expects utf8. -ENV ELIXIR_VERSION="v1.10.4" \ - LANG=C.UTF-8 +ENV LANG='C.UTF-8' + +# Enable backports. +RUN echo 'deb http://httpredir.debian.org/debian stretch-backports main' \ + >> /etc/apt/sources.list.d/backports.list + +# Prerequisites to mess with packages. +RUN apt-get clean && \ + apt-get update && \ + apt-get install -y -V --no-install-recommends \ + apt-transport-https \ + ca-certificates \ + wget \ + debconf-utils \ + gnupg + +# Our own rabbitmq-erlang repository on Bintray to take Erlang and Elixir. +RUN echo 'deb https://dl.bintray.com/rabbitmq-erlang/debian stretch erlang' > /etc/apt/sources.list.d/rabbitmq-erlang.list && \ + wget -O- https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | apt-key add - + +# We need to set an APT preference to make sure $ERLANG_VERSION is +# used for all erlang* packages. Without this, apt-get(1) would try to +# install dependencies using the latest version. This would conflict +# with the strict pinning in all packages, and thus fail. +RUN ERLANG_VERSION=1:22.3.4.2-1 && \ + echo 'Package: erlang*' > /etc/apt/preferences.d/erlang && \ + echo "Pin: version $ERLANG_VERSION" >> /etc/apt/preferences.d/erlang && \ + echo 'Pin-Priority: 1000' >> /etc/apt/preferences.d/erlang + +# -------------------------------------------------------------------- +# Packages to build RabbitMQ. +# -------------------------------------------------------------------- + +RUN apt-get clean && \ + apt-get update && \ + apt-get install -y -V --fix-missing --no-install-recommends \ + build-essential \ + curl \ + erlang-base-hipe \ + erlang-nox \ + erlang-dev \ + erlang-src \ + erlang-common-test \ + erlang-dialyzer \ + libcurl3-gnutls \ + man \ + mandoc \ + openssh-client \ + rsync \ + xmlto \ + xsltproc \ + zip \ + unzip + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + -t stretch-backports \ + git + +# Verify the version of the installed Erlang packages. +# The version was pinned above, but if that specific version is unavailable, +# the latest version will be installed, which we don't want. +RUN set -xe \ + && installed_version=$(dpkg -s erlang-nox | grep -E '^Version:' | awk '{ print $2; }') \ + && wanted_version=$(awk '/^Pin:/ { print $3; }' < /etc/apt/preferences.d/erlang) \ + && test "$installed_version" = "$wanted_version" RUN set -xe \ - && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/archive/${ELIXIR_VERSION}.tar.gz" \ - && ELIXIR_DOWNLOAD_SHA256="8518c78f43fe36315dbe0d623823c2c1b7a025c114f3f4adbb48e04ef63f1d9f" \ - && curl -fSL -o elixir-src.tar.gz $ELIXIR_DOWNLOAD_URL \ - && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-src.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/local/src/elixir \ - && tar -xzC /usr/local/src/elixir --strip-components=1 -f elixir-src.tar.gz \ - && rm elixir-src.tar.gz \ - && cd /usr/local/src/elixir \ - && make install clean + && REBAR3_VERSION="3.14.1" \ + && REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \ + && REBAR3_DOWNLOAD_SHA256="b01275b6cbdb354dcf9ed686fce2b5f9dfdd58972ded9e970e31b9215a8521f2" \ + && mkdir -p /usr/src/rebar3-src \ + && curl -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \ + && echo "$REBAR3_DOWNLOAD_SHA256 rebar3-src.tar.gz" | sha256sum -c - \ + && tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \ + && rm rebar3-src.tar.gz \ + && cd /usr/src/rebar3-src \ + && HOME=$PWD ./bootstrap \ + && install -v ./rebar3 /usr/local/bin/ \ + && rm -rf /usr/src/rebar3-src + +RUN set -xe \ + && ELIXIR_VERSION="v1.10.4" \ + && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/releases/download/${ELIXIR_VERSION}/Precompiled.zip" \ + && ELIXIR_DOWNLOAD_SHA256="2ec9891ec75a7cbd22396c6e7874b912b526d5a4bfd3c27206eee2a198b250a5" \ + && curl -fSL -o elixir-precompiled.zip $ELIXIR_DOWNLOAD_URL \ + && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-precompiled.zip" | sha256sum -c - \ + && unzip -d /usr/local elixir-precompiled.zip \ + && rm elixir-precompiled.zip + +# Put erl_call(1) in the $PATH. +RUN ln -fs /usr/lib/erlang/lib/erl_interface-*/bin/erl_call /usr/bin/erl_call + +# -------------------------------------------------------------------- +# Packages used to test RabbitMQ. +# -------------------------------------------------------------------- + +RUN echo 'slapd slapd/internal/generated_adminpw password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/internal/adminpw password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/password2 password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/password1 password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/backend select HDB' | debconf-set-selections + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + ldap-utils \ + netcat \ + python-dev \ + python-simplejson \ + python3 \ + slapd \ + daemonize + +RUN git clone --depth 1 https://github.com/bats-core/bats-core.git && \ + cd bats-core && \ + ./install.sh /usr && \ + cd .. && \ + rm -rf bats-core + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + ca-certificates-java \ + openjdk-8-jre-headless \ + openjdk-8-jdk-headless + +# Install Java tools separately to be sure it picks the version of +# OpenJDK installed above. +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + maven + +# .NET Core 2.0 requirements (https://www.microsoft.com/net/core#linuxdebian). +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + apt-transport-https + +# .NET Core 2.0 (https://www.microsoft.com/net/core#linuxdebian). +RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg && \ + mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg && \ + sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' + +# .NET Core 2.0 (https://www.microsoft.com/net/core#linuxdebian). +RUN apt-get update && \ + apt-get install -y -V --fix-missing --no-install-recommends \ + gettext \ + libunwind8 \ + dotnet-sdk-2.0.0 + +# .NET Core 2.0 warmup +RUN mkdir warmup \ + && cd warmup \ + && dotnet new console \ + && cd .. \ + && rm -rf warmup \ + && rm -rf /tmp/NuGetScratch + +# Terraform, used to run some testsuites on AWS. +RUN TERRAFORM_VERSION=0.12.24 && \ + wget -O terraform.zip "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \ + unzip terraform.zip && \ + mv terraform /usr/bin && \ + rm -f terraform.zip && \ + terraform --version diff --git a/ci/dockerfiles/23.1/erlang_elixir b/ci/dockerfiles/23.1/erlang_elixir index 8fbefe953b..68030c76f4 100644 --- a/ci/dockerfiles/23.1/erlang_elixir +++ b/ci/dockerfiles/23.1/erlang_elixir @@ -1,18 +1,175 @@ -FROM erlang:23.1 +## The contents of this file are subject to the Mozilla Public License +## Version 1.1 (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License +## at http://www.mozilla.org/MPL/ +# +## Software distributed under the License is distributed on an "AS IS" +## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +## the License for the specific language governing rights and +## limitations under the License. +# +## The Original Code is RabbitMQ. +# +## The Initial Developer of the Original Code is GoPivotal, Inc. +## Copyright (c) 2018-2019 Pivotal Software, Inc. All rights reserved. -ENV ERLANG_VERSION 23.1 +FROM buildpack-deps:stretch -# elixir expects utf8. -ENV ELIXIR_VERSION="v1.10.4" \ - LANG=C.UTF-8 +ENV LANG='C.UTF-8' + +# Enable backports. +RUN echo 'deb http://httpredir.debian.org/debian stretch-backports main' \ + >> /etc/apt/sources.list.d/backports.list + +# Prerequisites to mess with packages. +RUN apt-get clean && \ + apt-get update && \ + apt-get install -y -V --no-install-recommends \ + apt-transport-https \ + ca-certificates \ + wget \ + debconf-utils \ + gnupg + +# Our own rabbitmq-erlang repository on Bintray to take Erlang and Elixir. +RUN echo 'deb https://dl.bintray.com/rabbitmq-erlang/debian stretch erlang' > /etc/apt/sources.list.d/rabbitmq-erlang.list && \ + wget -O- https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | apt-key add - + +# We need to set an APT preference to make sure $ERLANG_VERSION is +# used for all erlang* packages. Without this, apt-get(1) would try to +# install dependencies using the latest version. This would conflict +# with the strict pinning in all packages, and thus fail. +RUN ERLANG_VERSION=1:23.1-1 && \ + echo 'Package: erlang*' > /etc/apt/preferences.d/erlang && \ + echo "Pin: version $ERLANG_VERSION" >> /etc/apt/preferences.d/erlang && \ + echo 'Pin-Priority: 1000' >> /etc/apt/preferences.d/erlang + +# -------------------------------------------------------------------- +# Packages to build RabbitMQ. +# -------------------------------------------------------------------- + +RUN apt-get clean && \ + apt-get update && \ + apt-get install -y -V --fix-missing --no-install-recommends \ + build-essential \ + curl \ + erlang-base-hipe \ + erlang-nox \ + erlang-dev \ + erlang-src \ + erlang-common-test \ + erlang-dialyzer \ + libcurl3-gnutls \ + man \ + mandoc \ + openssh-client \ + rsync \ + xmlto \ + xsltproc \ + zip \ + unzip + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + -t stretch-backports \ + git + +# Verify the version of the installed Erlang packages. +# The version was pinned above, but if that specific version is unavailable, +# the latest version will be installed, which we don't want. +RUN set -xe \ + && installed_version=$(dpkg -s erlang-nox | grep -E '^Version:' | awk '{ print $2; }') \ + && wanted_version=$(awk '/^Pin:/ { print $3; }' < /etc/apt/preferences.d/erlang) \ + && test "$installed_version" = "$wanted_version" RUN set -xe \ - && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/archive/${ELIXIR_VERSION}.tar.gz" \ - && ELIXIR_DOWNLOAD_SHA256="8518c78f43fe36315dbe0d623823c2c1b7a025c114f3f4adbb48e04ef63f1d9f" \ - && curl -fSL -o elixir-src.tar.gz $ELIXIR_DOWNLOAD_URL \ - && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-src.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/local/src/elixir \ - && tar -xzC /usr/local/src/elixir --strip-components=1 -f elixir-src.tar.gz \ - && rm elixir-src.tar.gz \ - && cd /usr/local/src/elixir \ - && make install clean + && REBAR3_VERSION="3.14.1" \ + && REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \ + && REBAR3_DOWNLOAD_SHA256="b01275b6cbdb354dcf9ed686fce2b5f9dfdd58972ded9e970e31b9215a8521f2" \ + && mkdir -p /usr/src/rebar3-src \ + && curl -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \ + && echo "$REBAR3_DOWNLOAD_SHA256 rebar3-src.tar.gz" | sha256sum -c - \ + && tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \ + && rm rebar3-src.tar.gz \ + && cd /usr/src/rebar3-src \ + && HOME=$PWD ./bootstrap \ + && install -v ./rebar3 /usr/local/bin/ \ + && rm -rf /usr/src/rebar3-src + +RUN set -xe \ + && ELIXIR_VERSION="v1.10.4" \ + && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/releases/download/${ELIXIR_VERSION}/Precompiled.zip" \ + && ELIXIR_DOWNLOAD_SHA256="2ec9891ec75a7cbd22396c6e7874b912b526d5a4bfd3c27206eee2a198b250a5" \ + && curl -fSL -o elixir-precompiled.zip $ELIXIR_DOWNLOAD_URL \ + && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-precompiled.zip" | sha256sum -c - \ + && unzip -d /usr/local elixir-precompiled.zip \ + && rm elixir-precompiled.zip + +# Put erl_call(1) in the $PATH. +RUN ln -fs /usr/lib/erlang/lib/erl_interface-*/bin/erl_call /usr/bin/erl_call + +# -------------------------------------------------------------------- +# Packages used to test RabbitMQ. +# -------------------------------------------------------------------- + +RUN echo 'slapd slapd/internal/generated_adminpw password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/internal/adminpw password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/password2 password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/password1 password rabbitmq' | debconf-set-selections && \ + echo 'slapd slapd/backend select HDB' | debconf-set-selections + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + ldap-utils \ + netcat \ + python-dev \ + python-simplejson \ + python3 \ + slapd \ + daemonize + +RUN git clone --depth 1 https://github.com/bats-core/bats-core.git && \ + cd bats-core && \ + ./install.sh /usr && \ + cd .. && \ + rm -rf bats-core + +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + ca-certificates-java \ + openjdk-8-jre-headless \ + openjdk-8-jdk-headless + +# Install Java tools separately to be sure it picks the version of +# OpenJDK installed above. +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + maven + +# .NET Core 2.0 requirements (https://www.microsoft.com/net/core#linuxdebian). +RUN apt-get install -y -V --fix-missing --no-install-recommends \ + apt-transport-https + +# .NET Core 2.0 (https://www.microsoft.com/net/core#linuxdebian). +RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg && \ + mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg && \ + sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list' + +# .NET Core 2.0 (https://www.microsoft.com/net/core#linuxdebian). +RUN apt-get update && \ + apt-get install -y -V --fix-missing --no-install-recommends \ + gettext \ + libunwind8 \ + dotnet-sdk-2.0.0 + +# .NET Core 2.0 warmup +RUN mkdir warmup \ + && cd warmup \ + && dotnet new console \ + && cd .. \ + && rm -rf warmup \ + && rm -rf /tmp/NuGetScratch + +# Terraform, used to run some testsuites on AWS. +RUN TERRAFORM_VERSION=0.12.24 && \ + wget -O terraform.zip "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \ + unzip terraform.zip && \ + mv terraform /usr/bin && \ + rm -f terraform.zip && \ + terraform --version diff --git a/ci/dockerfiles/ci-base b/ci/dockerfiles/ci-base index 0eb4624030..4569885097 100644 --- a/ci/dockerfiles/ci-base +++ b/ci/dockerfiles/ci-base @@ -2,6 +2,8 @@ ARG ERLANG_VERSION FROM eu.gcr.io/cf-rabbitmq-core/erlang_elixir:${ERLANG_VERSION} +ENV ERLANG_VERSION ${ERLANG_VERSION} + RUN apt-get update && apt-get install -y rsync zip RUN curl -L -o buildevents https://github.com/honeycombio/buildevents/releases/latest/download/buildevents-linux-amd64 diff --git a/ci/dockerfiles/git/erlang_elixir b/ci/dockerfiles/git/erlang_elixir index 3514033b9e..c88b40f1f3 100644 --- a/ci/dockerfiles/git/erlang_elixir +++ b/ci/dockerfiles/git/erlang_elixir @@ -69,7 +69,7 @@ RUN set -xe \ && tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \ && rm rebar3-src.tar.gz \ && cd /usr/src/rebar3-src \ - && HOME=$PWD DIAGNOSTIC=1 ./bootstrap \ + && HOME=$PWD ./bootstrap \ && install -v ./rebar3 /usr/local/bin/ \ && rm -rf /usr/src/rebar3-src @@ -196,29 +196,3 @@ RUN TERRAFORM_VERSION=0.12.24 && \ mv terraform /usr/bin && \ rm -f terraform.zip && \ terraform --version - -# -------------------------------------------------------------------- -# Packages to help debugging from the container directly. -# -------------------------------------------------------------------- - -RUN apt-get install -y -V --fix-missing --no-install-recommends \ - elinks \ - vim - -ARG ERLANG_VERSION -ENV ERLANG_VERSION ${ERLANG_VERSION} - -# elixir expects utf8. -ENV ELIXIR_VERSION="v1.10.4" \ - LANG=C.UTF-8 - -RUN set -xe \ - && ELIXIR_DOWNLOAD_URL="https://github.com/elixir-lang/elixir/archive/${ELIXIR_VERSION}.tar.gz" \ - && ELIXIR_DOWNLOAD_SHA256="8518c78f43fe36315dbe0d623823c2c1b7a025c114f3f4adbb48e04ef63f1d9f" \ - && curl -fSL -o elixir-src.tar.gz $ELIXIR_DOWNLOAD_URL \ - && echo "$ELIXIR_DOWNLOAD_SHA256 elixir-src.tar.gz" | sha256sum -c - \ - && mkdir -p /usr/local/src/elixir \ - && tar -xzC /usr/local/src/elixir --strip-components=1 -f elixir-src.tar.gz \ - && rm elixir-src.tar.gz \ - && cd /usr/local/src/elixir \ - && make install clean diff --git a/mk/github-actions.mk b/mk/github-actions.mk index edd6efdb2d..7b5d53194b 100644 --- a/mk/github-actions.mk +++ b/mk/github-actions.mk @@ -82,15 +82,21 @@ monorepo-actions: \ DOCKER_REPO ?= eu.gcr.io/cf-rabbitmq-core -CI_BASE_IMAGES = $(foreach v,$(ERLANG_VERSIONS),ci-base-image-$(v)) -.PHONY: $(CI_BASE_IMAGES) -$(CI_BASE_IMAGES): +.PHONY: erlang-elixir-image-% +erlang-elixir-image-%: docker build . \ - -f ci/dockerfiles/$(subst ci-base-image-,,$@)/base \ - -t $(DOCKER_REPO)/ci-base:$(subst ci-base-image-,,$@) + -f ci/dockerfiles/$*/erlang_elixir \ + -t $(DOCKER_REPO)/erlang_elixir:$* + +.PHONY: ci-base-image-% +ci-base-image-%: + docker build . \ + -f ci/dockerfiles/ci-base \ + -t $(DOCKER_REPO)/ci-base:$* \ + --build-arg ERLANG_VERSION=$* .PHONY: ci-base-images -ci-base-images: $(CI_BASE_IMAGES) +ci-base-images: ci-base-image-22.3 ci-base-image-23.1 PUSHES = $(foreach v,$(ERLANG_VERSIONS),push-base-image-$(v)) .PHONY: $(PUSHES) |