diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
new file mode 100644
index 000000000..cf367c6f9
--- /dev/null
+++ b/.github/workflows/coverity.yml
@@ -0,0 +1,53 @@
+name: Coverity Scan
+
+on:
+  push:
+    branches:
+      - coverity_scan
+
+  workflow_dispatch:
+
+jobs:
+  build:
+    runs-on: ubuntu-20.04
+
+    env:
+      COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
+      COVERITY_SCAN_PROG_URL: https://scan.coverity.com/download/cxx/linux64
+      COVERITY_SCAN_PROJECT_NAME: sipwise/rtpengine
+      COVERITY_SCAN_NOTIFICATION_EMAIL: development@sipwise.com
+    steps:
+      - name: Checkout source
+        uses: actions/checkout@v2
+
+      - name: Get build dependencies
+        run: |
+          sudo apt-get install -qq -y --no-install-recommends git ca-certificates curl
+          sudo apt-get build-dep -qq -y -Ppkg.ngcp-rtpengine.nobcg729 .
+
+      - name: Get coverity scan
+        run: |
+          curl -o cov-analysis.tgz \
+            $COVERITY_SCAN_PROG_URL \
+            --form project=$COVERITY_SCAN_PROJECT_NAME \
+            --form token=$COVERITY_SCAN_TOKEN
+          tar xfz cov-analysis.tgz
+
+      # We need to disable glib deprecation warnings, as coverity-scan does
+      # not support __attributes__ in enums.
+      - name: Analyze
+        run: |
+          DEB_BUILD_PROFILES="pkg.ngcp-rtpengine.nobcg729" \
+          CPPFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS" \
+          cov-analysis-*/bin/cov-build --dir cov-int make -j4 coverity
+
+      - name: Submit result
+        run: |
+          tar cfz cov-int.tar.gz cov-int
+          curl \
+            https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME \
+            --form token=$COVERITY_SCAN_TOKEN \
+            --form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
+            --form file=@cov-int.tar.gz \
+            --form version="`git describe --tags`" \
+            --form description="`git describe --tags` / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID"
diff --git a/Makefile b/Makefile
index 0d1030290..a5f05c1b1 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,12 @@ ifeq ($(with_transcoding),yes)
 endif
 	$(MAKE) -C iptables-extension
 
+coverity:
+	$(MAKE) -C daemon
+ifeq ($(with_transcoding),yes)
+	$(MAKE) -C recording-daemon
+endif
+
 .PHONY: with-kernel
 
 with-kernel: all
@@ -35,13 +41,3 @@ distclean clean:
 
 check: all
 	$(MAKE) -C t
-
-coverity:
-	cov-build --dir cov-int $(MAKE) check
-	tar -czf project.tgz cov-int
-	curl --form token=$(COVERITY_RTPENGINE_TOKEN) \
-	  --form email=$(DEBEMAIL) \
-	  --form file=@project.tgz \
-	  --form version="$(RTPENGINE_VERSION)" \
-	  --form description="automatic upload" \
-	  https://scan.coverity.com/builds?project=$(COVERITY_RTPENGINE_PROJECT)
diff --git a/README.md b/README.md
index 47bb03e6e..8de6658fc 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
 ![Code Testing](https://github.com/sipwise/rtpengine/workflows/Code%20Testing/badge.svg)
 ![Debian Package CI](https://github.com/sipwise/rtpengine/workflows/Debian%20Packaging/badge.svg)
+![Coverity](https://img.shields.io/coverity/scan/sipwise-rtpengine.svg)
 
 What is rtpengine?
 =======================