summary refs log tree commit diff
diff options
context:
space:
mode:
authorAmber H. Brown <hawkowl@atleastfornow.net>2019-07-17 03:58:34 +1000
committerAmber H. Brown <hawkowl@atleastfornow.net>2019-07-17 03:58:34 +1000
commit646292cfb197d9967a8e2d4355cca267616767e6 (patch)
tree1ac55a24e6587b0a92c59d823da618a73652409d
parentMerge remote-tracking branch 'origin/develop' into shhs (diff)
downloadsynapse-646292cfb197d9967a8e2d4355cca267616767e6.tar.xz
see if we can do a build!
-rw-r--r--.buildkite/pipeline.yml19
-rw-r--r--docker/Dockerfile-optimised66
2 files changed, 84 insertions, 1 deletions
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"]