Commit dc6e80e2ce7c4d1017ce41a67a0df50b29b36cc4

Edward Thomson 2018-07-26T14:04:19

ci: perform clang builds on Linux

diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index ace22f4..4d3bf50 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -2,8 +2,8 @@ resources:
 - repo: self
 
 phases:
-- phase: linux_trusty_openssl
-  displayName: 'Linux (Trusty; OpenSSL)'
+- phase: linux_trusty_gcc_openssl
+  displayName: 'Linux (Trusty; GCC; OpenSSL)'
   queue:
     name: 'Hosted Linux Preview'
   steps:
@@ -26,13 +26,79 @@ phases:
       volumes: |
        $(Build.SourcesDirectory):/src
        $(Build.BinariesDirectory):/build
+      envVars: |
+       CC=gcc
+       LEAK_CHECK=valgrind
+      workDir: '/build'
+      containerCommand: '/src/ci/test.sh'
+      detached: false
+
+- phase: linux_trusty_gcc_mbedtls
+  displayName: 'Linux (Trusty; GCC; mbedTLS)'
+  queue:
+    name: 'Hosted Linux Preview'
+  steps:
+  - task: Docker@0
+    displayName: Build
+    inputs:
+      action: 'Run an image'
+      imageName: 'ethomson/libgit2-trusty-mbedtls:latest'
+      volumes: |
+       $(Build.SourcesDirectory):/src
+       $(Build.BinariesDirectory):/build
+      envVars: |
+       CC=gcc
+       CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
+       LEAK_CHECK=valgrind
+      workDir: '/build'
+      containerCommand: '/src/ci/build.sh'
+      detached: false
+  - task: Docker@0
+    displayName: Test
+    inputs:
+      action: 'Run an image'
+      imageName: 'ethomson/libgit2-trusty-mbedtls:latest'
+      volumes: |
+       $(Build.SourcesDirectory):/src
+       $(Build.BinariesDirectory):/build
       envVars: 'LEAK_CHECK=valgrind'
       workDir: '/build'
       containerCommand: '/src/ci/test.sh'
       detached: false
 
-- phase: linux_trusty_mbedtls
-  displayName: 'Linux (Trusty; mbedTLS)'
+- phase: linux_trusty_clang_openssl
+  displayName: 'Linux (Trusty; Clang; OpenSSL)'
+  queue:
+    name: 'Hosted Linux Preview'
+  steps:
+  - task: Docker@0
+    displayName: Build
+    inputs:
+      action: 'Run an image'
+      imageName: 'ethomson/libgit2-trusty-openssl:latest'
+      volumes: |
+       $(Build.SourcesDirectory):/src
+       $(Build.BinariesDirectory):/build
+      workDir: '/build'
+      containerCommand: '/src/ci/build.sh'
+      detached: false
+  - task: Docker@0
+    displayName: Test
+    inputs:
+      action: 'Run an image'
+      imageName: 'ethomson/libgit2-trusty-openssl:latest'
+      volumes: |
+       $(Build.SourcesDirectory):/src
+       $(Build.BinariesDirectory):/build
+      envVars: |
+       CC=clang
+       LEAK_CHECK=valgrind
+      workDir: '/build'
+      containerCommand: '/src/ci/test.sh'
+      detached: false
+
+- phase: linux_trusty_clang_mbedtls
+  displayName: 'Linux (Trusty; Clang; mbedTLS)'
   queue:
     name: 'Hosted Linux Preview'
   steps:
@@ -44,7 +110,10 @@ phases:
       volumes: |
        $(Build.SourcesDirectory):/src
        $(Build.BinariesDirectory):/build
-      envVars: 'CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS'
+      envVars: |
+       CC=clang
+       CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
+       LEAK_CHECK=valgrind
       workDir: '/build'
       containerCommand: '/src/ci/build.sh'
       detached: false
diff --git a/ci/build.sh b/ci/build.sh
index 45f0748..a1deab3 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -9,6 +9,7 @@ set -e
 
 SOURCE_DIR=${SOURCE_DIR:-$( cd "$( dirname "${BASH_SOURCE[0]}" )" && dirname $( pwd ) )}
 BUILD_DIR=$(pwd)
+CC=${CC:-cc}
 
 indent() { sed "s/^/    /"; }
 
@@ -20,7 +21,7 @@ uname -a 2>&1 | indent
 echo "CMake version:"
 cmake --version 2>&1 | indent
 echo "Compiler version:"
-gcc --version 2>&1 | indent
+$CC --version 2>&1 | indent
 echo ""
 
 echo "##############################################################################"
diff --git a/ci/setup-linux.sh b/ci/setup-linux.sh
index 5de2866..03e4a1d 100755
--- a/ci/setup-linux.sh
+++ b/ci/setup-linux.sh
@@ -3,6 +3,6 @@
 set -x
 
 apt-get update
-apt-get -y install build-essential pkg-config cmake openssl libssl-dev libssh2-1-dev libcurl4-gnutls-dev openssh-server
+apt-get -y install build-essential pkg-config clang cmake openssl libssl-dev libssh2-1-dev libcurl4-gnutls-dev openssh-server
 
 mkdir -p /var/run/sshd