瀏覽代碼

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 年之前
父節點
當前提交
7b06417ccf
共有 3 個文件被更改,包括 24 次插入10 次删除
  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'
   os: 'Linux'
   fuzzer: 'NoFuzz'
   fuzzer: 'NoFuzz'
   lagom_lints: false
   lagom_lints: false
+  host_cc: 'cc'
+  host_cxx: 'cxx'
 
 
 jobs:
 jobs:
   - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}'
   - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}'
@@ -19,21 +21,15 @@ jobs:
 
 
     - name: toolchain
     - name: toolchain
       ${{ if eq(parameters.fuzzer, 'Fuzz') }}:
       ${{ if eq(parameters.fuzzer, 'Fuzz') }}:
-        value: clang
+        value: '${{ parameters.host_cc }}_Fuzz'
       ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
       ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
-        value: gcc
+        value: '${{ parameters.host_cc }}'
 
 
     - name: 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
     - 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
     - name: ndk_version # only relevant for Android
       value: '25.2.9519653'
       value: '25.2.9519653'
@@ -102,6 +98,8 @@ jobs:
               -DBUILD_LAGOM=OFF \
               -DBUILD_LAGOM=OFF \
               -DENABLE_LAGOM_CCACHE=ON \
               -DENABLE_LAGOM_CCACHE=ON \
               -DCMAKE_INSTALL_PREFIX=tool-install \
               -DCMAKE_INSTALL_PREFIX=tool-install \
+              -DCMAKE_C_COMPILER=$(host-cc) \
+              -DCMAKE_CXX_COMPILER=$(host-cxx) \
               -Dpackage=LagomTools
               -Dpackage=LagomTools
           ninja -C tools-build install
           ninja -C tools-build install
           cmake -GNinja -B Build \
           cmake -GNinja -B Build \

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

@@ -26,3 +26,13 @@ stages:
       - template: Lagom.yml
       - template: Lagom.yml
         parameters:
         parameters:
           os: 'Android'
           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:
         parameters:
           os: 'Linux'
           os: 'Linux'
           lagom_lints: true
           lagom_lints: true
+          host_cc: 'clang-18'
+          host_cxx: 'clang++-18'
 
 
       - template: Meta/Azure/Lagom.yml
       - template: Meta/Azure/Lagom.yml
         parameters:
         parameters:
           os: 'Linux'
           os: 'Linux'
           fuzzer: 'Fuzz'
           fuzzer: 'Fuzz'
+          host_cc: 'gcc-13'
+          host_cxx: 'g++-13'
 
 
       - template: Meta/Azure/Lagom.yml
       - template: Meta/Azure/Lagom.yml
         parameters:
         parameters:
           os: 'macOS'
           os: 'macOS'
+          host_cc: '$(brew --prefix llvm@18)/bin/clang'
+          host_cxx: '$(brew --prefix llvm@18)/bin/clang++'
 
 
   - stage: SerenityOS
   - stage: SerenityOS
     dependsOn: []
     dependsOn: []