diff --git a/Makefile b/Makefile
index eeba479f5484527b8cb732e3b595b43d51b19d83..9672b1e0510f24d0ebc3711abfe6f81d642a887a 100644
--- a/Makefile
+++ b/Makefile
@@ -9,6 +9,7 @@ PYTHON = PIPENV_VENV_IN_PROJECT=1 $(shell .venv/bin/python-libfaketime  | sed 's
 PYTHON_NEEDED := .venv/.project
 endif
 
+# all except publishing on docker hub
 .PHONY: all
 all: check
 
@@ -19,3 +20,27 @@ check: $(PYTHON_NEEDED)
 .venv/.project: Pipfile Pipfile.lock
 	PIPENV_VENV_IN_PROJECT=1 pipenv install
 	touch $@
+
+.PHONY: publish
+publish: publish-image publish-test-image
+
+.PHONY: publish-image
+publish-image: image
+	docker push durcheinander/export-apkgs:$(file < version.txt)
+	docker push durcheinander/export-apkgs:latest
+
+.PHONY: publish-test-image
+publish-test-image: test-image
+	docker push durcheinander/export-apkgs-test-runner:$(file < version.txt)
+	docker push durcheinander/export-apkgs-test-runner:latest
+
+.PHONY: images
+images: image test-image
+
+.PHONY: image
+image:
+	docker build . -t durcheinander/export-apkgs:$(file < version.txt) -t durcheinander/export-apkgs:latest
+
+.PHONY: test-image
+test-image:
+	docker build export-apkgs-test-runner -t durcheinander/export-apkgs-test-runner:$(file < export-apkgs-test-runner/version.txt) -t durcheinander/export-apkgs-test-runner:latest
diff --git a/export-apkgs-test-runner/version.txt b/export-apkgs-test-runner/version.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3eefcb9dd5b38e2c1dc061052455dd97bcd51e6c
--- /dev/null
+++ b/export-apkgs-test-runner/version.txt
@@ -0,0 +1 @@
+1.0.0
diff --git a/version.txt b/version.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3eefcb9dd5b38e2c1dc061052455dd97bcd51e6c
--- /dev/null
+++ b/version.txt
@@ -0,0 +1 @@
+1.0.0