From 646292cfb197d9967a8e2d4355cca267616767e6 Mon Sep 17 00:00:00 2001 From: "Amber H. Brown" Date: Wed, 17 Jul 2019 03:58:34 +1000 Subject: [PATCH] see if we can do a build! --- .buildkite/pipeline.yml | 19 ++++++++++- docker/Dockerfile-optimised | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile-optimised diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index dd0f98cba0..06880303ee 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -47,11 +47,11 @@ steps: - wait - - command: - "python -m pip install tox" - "tox -e py35-old,codecov" label: ":python: 3.5 / SQLite / Old Deps" + branches: "!shhs !shhs-*" env: TRIAL_FLAGS: "-j 2" plugins: @@ -69,6 +69,7 @@ steps: - "python -m pip install tox" - "tox -e py35,codecov" label: ":python: 3.5 / SQLite" + branches: "!shhs !shhs-*" env: TRIAL_FLAGS: "-j 2" plugins: @@ -86,6 +87,7 @@ steps: - "python -m pip install tox" - "tox -e py36,codecov" label: ":python: 3.6 / SQLite" + branches: "!shhs !shhs-*" env: TRIAL_FLAGS: "-j 2" plugins: @@ -117,6 +119,7 @@ steps: limit: 2 - label: ":python: 3.5 / :postgres: 9.5" + branches: "!shhs !shhs-*" env: TRIAL_FLAGS: "-j 4" command: @@ -169,6 +172,7 @@ steps: - label: "SyTest - :python: 3.5 / SQLite / Monolith" + branches: "!shhs !shhs-*" agents: queue: "medium" command: @@ -207,6 +211,7 @@ steps: limit: 2 - label: "SyTest - :python: 3.5 / :postgres: 9.6 / Workers" + branches: "!shhs !shhs-*" agents: queue: "medium" env: @@ -227,3 +232,15 @@ steps: limit: 2 - exit_status: 2 limit: 2 + + - wait + + - label: "Docker Build -- Optimised Skylake-AVX512" + agents: + queue: "release" + branches: "shhs shhs-*" + command: + - "docker build -f docker/Dockerfile-optimised --build-arg PYTHON_VERSION=3.6 --build-arg MARCH=skylake-avx512 . -t matrixdotorg/synapse:${BUILDKITE_TAG}-skylake-avx512" + - "docker docker save matrixdotorg/synapse:${BUILDKITE_TAG}-skylake-avx512 | gzip -9 > docker.tar.gz" + artifact_paths: + - "docker.tar.gz" \ No newline at end of file diff --git a/docker/Dockerfile-optimised b/docker/Dockerfile-optimised new file mode 100644 index 0000000000..cc6f37a9e1 --- /dev/null +++ b/docker/Dockerfile-optimised @@ -0,0 +1,66 @@ +# Dockerfile to build the matrixdotorg/synapse docker images. +# +# To build the image, run `docker build` command from the root of the +# synapse repository: +# +# docker build -f docker/Dockerfile . +# +# There is an optional PYTHON_VERSION build argument which sets the +# version of python to build against: for example: +# +# docker build -f docker/Dockerfile --build-arg PYTHON_VERSION=3.6 . +# + +ARG PYTHON_VERSION=3.7.4 +ARG MARCH=skylake-avx512 + +### +### Stage 0: builder +### +FROM matrixdotorg/optimised-python:${PYTHON_VERSION}-optimized-lto-${MARCH} as builder + +# install the OS build deps + +RUN apt-get install -y build-essential libpq5-dev libffi-dev libexpat1-dev libxml2-dev libxslt-dev + +# build things which have slow build steps, before we copy synapse, so that +# the layer can be cached. +# +# (we really just care about caching a wheel here, as the "pip install" below +# will install them again.) + +RUN pip install --prefix="/install" --no-warn-script-location \ + cryptography \ + msgpack-python \ + pillow \ + pynacl + +# now install synapse and all of the python deps to /install. + +COPY synapse /synapse/synapse/ +COPY scripts /synapse/scripts/ +COPY MANIFEST.in README.rst setup.py synctl /synapse/ + +RUN pip install --prefix="/install" --no-warn-script-location \ + /synapse[all] + +RUN chown -R root:root /usr/local /install + +### +### Stage 1: runtime +### + +FROM matrixdotorg/optimised-python:${PYTHON_VERSION}-optimized-lto-${MARCH} + +# xmlsec is required for saml support +RUN apt install libpq5 xmlsec libxslt1 + +COPY --from=builder /install /usr/local +COPY ./docker/start.py /start.py +COPY ./docker/conf /conf + +VOLUME ["/data"] + +EXPOSE 8008/tcp 8009/tcp 8448/tcp + +ENTRYPOINT ["/start.py"]