Browse Source

CI: Test using Clang for ASAN+UBSAN on Linux, add nightly GCC job

Clang builds of ASAN+UBSAN on Linux take significantly less time on the
Azure CI runners. Measured times were 82 minutes for Clang 18 and
112 minutes for GCC 13, with no cache.

To keep our coverage of Ladybird builds + testing with GCC, add a
nightly job to run through the full test cycle on GCC 13.
Andrew Kaster 1 year ago
parent
commit
7b06417ccf
3 changed files with 24 additions and 10 deletions
  1. 8 10
      Meta/Azure/Lagom.yml
  2. 10 0
      Meta/Azure/nightly-pipeline.yml
  3. 6 0
      azure-pipelines.yml

+ 8 - 10
Meta/Azure/Lagom.yml

@@ -2,6 +2,8 @@ parameters:
   os: 'Linux'
   fuzzer: 'NoFuzz'
   lagom_lints: false
+  host_cc: 'cc'
+  host_cxx: 'cxx'
 
 jobs:
   - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}'
@@ -19,21 +21,15 @@ jobs:
 
     - name: toolchain
       ${{ if eq(parameters.fuzzer, 'Fuzz') }}:
-        value: clang
+        value: '${{ parameters.host_cc }}_Fuzz'
       ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
-        value: gcc
+        value: '${{ parameters.host_cc }}'
 
     - name: host-cc
-      ${{ if eq(parameters.os, 'macOS') }}:
-        value: $(brew --prefix llvm@18)/bin/clang
-      ${{ if not(eq(parameters.os, 'macOS')) }}:
-        value: gcc-13
+      value: '${{ parameters.host_cc }}'
 
     - name: host-cxx
-      ${{ if eq(parameters.os, 'macOS') }}:
-        value: $(brew --prefix llvm@18)/bin/clang++
-      ${{ if not(eq(parameters.os, 'macOS')) }}:
-        value: g++-13
+      value: '${{ parameters.host_cxx }}'
 
     - name: ndk_version # only relevant for Android
       value: '25.2.9519653'
@@ -102,6 +98,8 @@ jobs:
               -DBUILD_LAGOM=OFF \
               -DENABLE_LAGOM_CCACHE=ON \
               -DCMAKE_INSTALL_PREFIX=tool-install \
+              -DCMAKE_C_COMPILER=$(host-cc) \
+              -DCMAKE_CXX_COMPILER=$(host-cxx) \
               -Dpackage=LagomTools
           ninja -C tools-build install
           cmake -GNinja -B Build \

+ 10 - 0
Meta/Azure/nightly-pipeline.yml

@@ -26,3 +26,13 @@ stages:
       - template: Lagom.yml
         parameters:
           os: 'Android'
+
+  - stage: Lagom_GCC
+    dependsOn: []
+    jobs:
+      - template: Lagom.yml
+        parameters:
+          os: 'Linux'
+          fuzzer: 'NoFuzz'
+          host_cc: 'gcc-13'
+          host_cxx: 'g++-13'

+ 6 - 0
azure-pipelines.yml

@@ -13,15 +13,21 @@ stages:
         parameters:
           os: 'Linux'
           lagom_lints: true
+          host_cc: 'clang-18'
+          host_cxx: 'clang++-18'
 
       - template: Meta/Azure/Lagom.yml
         parameters:
           os: 'Linux'
           fuzzer: 'Fuzz'
+          host_cc: 'gcc-13'
+          host_cxx: 'g++-13'
 
       - template: Meta/Azure/Lagom.yml
         parameters:
           os: 'macOS'
+          host_cc: '$(brew --prefix llvm@18)/bin/clang'
+          host_cxx: '$(brew --prefix llvm@18)/bin/clang++'
 
   - stage: SerenityOS
     dependsOn: []