ソースを参照

CI: Build Lagom with fuzzing on Azure

Timothy Flynn 4 年 前
コミット
e3d4778a63
2 ファイル変更62 行追加34 行削除
  1. 57 34
      Meta/Azure/Lagom.yml
  2. 5 0
      azure-pipelines.yml

+ 57 - 34
Meta/Azure/Lagom.yml

@@ -1,20 +1,27 @@
 parameters:
 parameters:
   os: 'Linux'
   os: 'Linux'
-  allow_test_failures: false
+  fuzzer: 'NoFuzz'
+  allow_test_failures: 'NoFuzz'
 
 
 jobs:
 jobs:
-  - job: 'Lagom_${{ parameters.os }}'
+  - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}'
 
 
     variables:
     variables:
     - name: CCACHE_DIR
     - name: CCACHE_DIR
       value: $(Build.SourcesDirectory)/.ccache
       value: $(Build.SourcesDirectory)/.ccache
-    - ${{ if eq(parameters.os, 'Linux') }}:
-      - name: job_pool
+
+    - name: job_pool
+      ${{ if eq(parameters.os, 'Linux') }}:
         value: ubuntu-20.04
         value: ubuntu-20.04
-    - ${{ if eq(parameters.os, 'macOS') }}:
-      - name: job_pool
+      ${{ if eq(parameters.os, 'macOS') }}:
         value: macos-10.15
         value: macos-10.15
 
 
+    - name: toolchain
+      ${{ if eq(parameters.fuzzer, 'Fuzz') }}:
+        value: clang
+      ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
+        value: gcc
+
     pool:
     pool:
       vmImage: $(job_pool)
       vmImage: $(job_pool)
 
 
@@ -27,46 +34,62 @@ jobs:
       parameters:
       parameters:
         os: '${{ parameters.os }}'
         os: '${{ parameters.os }}'
         arch: 'Lagom'
         arch: 'Lagom'
-        toolchain: 'gcc'
+        toolchain: '$(toolchain)'
         build_directory: 'Meta/Lagom/Build'
         build_directory: 'Meta/Lagom/Build'
 
 
     - script: |
     - script: |
         mkdir -p Meta/Lagom/Build
         mkdir -p Meta/Lagom/Build
       displayName: 'Create Build Directory'
       displayName: 'Create Build Directory'
 
 
-    - script: |
-        cmake -GNinja \
-          -DBUILD_LAGOM=ON \
-          -DENABLE_LAGOM_CCACHE=ON \
-          -DINCLUDE_WASM_SPEC_TESTS=ON \
-          -DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
-          -DENABLE_UNDEFINED_SANITIZER=ON \
-          -DENABLE_ADDRESS_SANITIZER=ON \
-          -DENABLE_PCI_IDS_DOWNLOAD=OFF \
-          -DENABLE_USB_IDS_DOWNLOAD=OFF \
-          -DCMAKE_C_COMPILER=gcc-10 \
-          -DCMAKE_CXX_COMPILER=g++-10 \
-          ..
-      displayName: 'Create Build Environment'
-      workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
-      env:
-        PATH: '$(PATH):$(Build.SourcesDirectory)/wabt-1.0.23/bin'
+    - ${{ if eq(parameters.fuzzer, 'Fuzz') }}:
+      - script: |
+          cmake -GNinja \
+            -DBUILD_LAGOM=ON \
+            -DENABLE_LAGOM_CCACHE=ON \
+            -DENABLE_FUZZER_SANITIZER=ON \
+            -DENABLE_ADDRESS_SANITIZER=ON \
+            -DENABLE_PCI_IDS_DOWNLOAD=OFF \
+            -DENABLE_USB_IDS_DOWNLOAD=OFF \
+            -DCMAKE_C_COMPILER=clang \
+            -DCMAKE_CXX_COMPILER=clang++ \
+            ..
+        displayName: 'Create Build Environment'
+        workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
+    - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
+      - script: |
+          cmake -GNinja \
+            -DBUILD_LAGOM=ON \
+            -DENABLE_LAGOM_CCACHE=ON \
+            -DINCLUDE_WASM_SPEC_TESTS=ON \
+            -DWASM_SPEC_TEST_SKIP_FORMATTING=ON \
+            -DENABLE_UNDEFINED_SANITIZER=ON \
+            -DENABLE_ADDRESS_SANITIZER=ON \
+            -DENABLE_PCI_IDS_DOWNLOAD=OFF \
+            -DENABLE_USB_IDS_DOWNLOAD=OFF \
+            -DCMAKE_C_COMPILER=gcc-10 \
+            -DCMAKE_CXX_COMPILER=g++-10 \
+            ..
+        displayName: 'Create Build Environment'
+        workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
+        env:
+          PATH: '$(PATH):$(Build.SourcesDirectory)/wabt-1.0.23/bin'
 
 
     - script: |
     - script: |
         cmake --build .
         cmake --build .
       displayName: 'Build'
       displayName: 'Build'
       workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
       workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
 
 
-    - script: |
-        ninja test || ${{ parameters.allow_test_failures }}
-      displayName: 'Test'
-      workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
-      env:
-        SERENITY_SOURCE_DIR: '$(Build.SourcesDirectory)'
-        CTEST_OUTPUT_ON_FAILURE: 1
-        # FIXME: enable detect_stack_use_after_return=1 #7420
-        ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1'
-        UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1'
+    - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}:
+      - script: |
+          ninja test || ${{ parameters.allow_test_failures }}
+        displayName: 'Test'
+        workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build
+        env:
+          SERENITY_SOURCE_DIR: '$(Build.SourcesDirectory)'
+          CTEST_OUTPUT_ON_FAILURE: 1
+          # FIXME: enable detect_stack_use_after_return=1 #7420
+          ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1'
+          UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1'
 
 
     - script: |
     - script: |
         ccache -s
         ccache -s

+ 5 - 0
azure-pipelines.yml

@@ -6,6 +6,11 @@ jobs:
     parameters:
     parameters:
       os: 'Linux'
       os: 'Linux'
 
 
+  - template: Meta/Azure/Lagom.yml
+    parameters:
+      os: 'Linux'
+      fuzzer: 'Fuzz'
+
   - template: Meta/Azure/Lagom.yml
   - template: Meta/Azure/Lagom.yml
     parameters:
     parameters:
       os: 'macOS'
       os: 'macOS'