diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
index c1a5578..1f21e35 100644
--- a/.github/workflows/maven-build.yml
+++ b/.github/workflows/maven-build.yml
@@ -1,30 +1,54 @@
-# Default build validation "clean verify" for non-experimental branches
+# Build validation
 
 name: Build
 
 on:
   push:
     branches-ignore:
-      - 'experimental/**'
+      - experimental/**
   pull_request:
+    types: [opened, synchronize, reopened]
     branches-ignore:
-      - 'experimental/**'
+      - experimental/**
+  workflow_dispatch:
 
 jobs:
   build:
 
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        java: [8, 11]
+        os: [ubuntu-latest]
+        distribution: [temurin]
 
     steps:
       - name: Checkout code
         uses: actions/checkout@v2
+        with:
+          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
 
       - name: Setup JDK
         uses: actions/setup-java@v2
         with:
-          distribution: temurin
-          java-version: 8
+          distribution: ${{ matrix.distribution }}
+          java-version: ${{ matrix.java }}
           cache: 'maven'
 
+      - name: Cache SonarCloud packages
+        uses: actions/cache@v1
+        with:
+          path: ~/.sonar/cache
+          key: ${{ runner.os }}-sonar
+          restore-keys: ${{ runner.os }}-sonar
+
       - name: Build and verify
         run: mvn -s ./.maven-settings.xml -B -U clean verify
+
+      - name: Analyze in SonarCloud
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
+          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+        # SONAR_TOKEN is not present when building for external PR
+        run:  ([ -z $SONAR_TOKEN ] || mvn -s ./.maven-settings.xml -Pcontinuous-integration -B sonar:sonar -Dsonar.projectKey=${{github.repository_owner}}_${{github.event.repository.name}} -Dsonar.projectName=${{github.event.repository.name}})
+        if: ${{ matrix.java == '11' && matrix.os == 'ubuntu-latest' }}
diff --git a/README.md b/README.md
index 514b97e..d0ae77d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
 [](https://github.com/wcm-io-devops/jenkins-pipeline-library/actions?query=workflow%3ABuild)
+[](https://sonarcloud.io/summary/new_code?id=wcm-io-devops_jenkins-pipeline-library)
 [](https://maven-badges.herokuapp.com/maven-central/io.wcm.devops.jenkins/io.wcm.devops.jenkins.pipeline-library)
 [](https://oss.sonatype.org/content/repositories/snapshots/io/wcm/devops/jenkins/io.wcm.devops.jenkins.pipeline-library/)
 
diff --git a/pom.xml b/pom.xml
index 83badd9..7c6569f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,10 @@
     true
     8
     2.4.12
+
+    
+    wcm-io-devops
+    https://sonarcloud.io
   
 
   2017