diff --git a/.github/workflows/publish_testing_images.yml b/.github/workflows/publish_testing_images.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ffce4b047d3ed1acdee07ce1dcbf292cb5205ac3
--- /dev/null
+++ b/.github/workflows/publish_testing_images.yml
@@ -0,0 +1,49 @@
+name: Publish testing images
+
+on:
+  pull_request:
+    branches:
+      - master
+
+jobs:
+  build_and_push:
+    name: Build image and push to dockerhub
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out repository
+        uses: actions/checkout@v2
+
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v1
+
+      - name: Log in to Docker Hub
+        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
+        with:
+          username: ${{ secrets.DOCKER_USERNAME }}
+          password: ${{ secrets.DOCKER_PASSWORD }}
+
+      - name: Load cached image
+        uses: actions/cache@v2
+        with:
+          path: /tmp/.buildx-cache/portal-backend
+          key: buildx-backend
+          restore-keys: buildx-backend
+
+      - name: Build and Push image to dockerhub
+        uses: docker/build-push-action@v2
+        with:
+          context: .
+          file: ./Dockerfile
+          push: true
+          tags: hbpmip/portal-backend:testing
+          cache-from: type=local,src=/tmp/.buildx-cache/portal-backend
+          cache-to: type=local,dest=/tmp/.buildx-cache-new/portal-backend
+
+        # Temp fix
+        # https://github.com/docker/build-push-action/issues/252
+        # https://github.com/moby/buildkit/issues/1896
+      - name: Move Docker images cache
+        run: |
+          rm -rf /tmp/.buildx-cache
+          mv /tmp/.buildx-cache-new /tmp/.buildx-cache
+