[hawkmoth] [PATCH 03/11] build: add simple Dockerfile for testing

  • From: Jani Nikula <jani@xxxxxxxxxx>
  • To: hawkmoth@xxxxxxxxxxxxx
  • Date: Tue, 15 Dec 2020 21:00:00 +0200

Make it easier to have a common environment for running the tests. Start
off with Debian bullseye, which neatly provides Clang 11 with Python 3
bindings.

This could be expanded to test other Clang versions and (with different
requirements.txt files) Sphinx versions, but start simple.
---
 Dockerfile     | 21 +++++++++++++++++++++
 Makefile.local | 15 ++++++++++++++-
 2 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 Dockerfile

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000000..fbd362deacc6
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,21 @@
+FROM debian:bullseye
+
+RUN apt-get update
+RUN apt-get install -y \
+       python3-clang \
+       python3-pip
+RUN apt-get clean
+
+ARG UID=1000
+ARG GID=1000
+
+WORKDIR /src
+
+ENV PYTHONDONTWRITEBYTECODE 1
+ENV PYTHONUNBUFFERED 1
+
+COPY requirements.txt .
+
+RUN pip3 install --no-cache-dir -r requirements.txt
+
+USER ${UID}:${GID}
diff --git a/Makefile.local b/Makefile.local
index 02cf2d7e8a7b..2cc8826283ee 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -27,6 +27,19 @@ test-upload:
 upload:
        python3 -m twine upload dist/*
 
-.PHONY: dist-tools dist test-upload upload
+DOCKER_SRC_MOUNT = --mount type=bind,src=$(PWD),dst=/src,readonly=true
+DOCKER_OUT_MOUNT = --mount type=bind,src=$(PWD)/doc/_build,dst=/out
+
+docker-build:
+       docker build --build-arg UID=$(shell id -u) --build-arg GID=$(shell id 
-g) --tag hawkmoth .
+
+docker-test: docker-build
+       docker run $(DOCKER_SRC_MOUNT) hawkmoth make test
+
+docker-html: docker-build
+       mkdir -p doc/_build
+       docker run $(DOCKER_SRC_MOUNT) $(DOCKER_OUT_MOUNT) hawkmoth make 
BUILDDIR=/out html
+
+.PHONY: dist-tools dist test-upload upload docker-build docker-test docker-html
 
 CLEAN := $(CLEAN) build dist hawkmoth.egg-info
-- 
2.20.1


Other related posts: