Browse Source

ci: add release-msan preset, add sanitizer builds in the nightly build

nkozlovskiy 1 year ago
parent
commit
2289a054c7

+ 5 - 0
.github/actions/build_ya/action.yml

@@ -71,6 +71,11 @@ runs:
             extra_params+=(--sanitize="thread")
             extra_params+=(--sanitize="thread")
             extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
             extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
             ;;
             ;;
+          release-msan)
+            build_type=release
+            extra_params+=(--sanitize="memory")
+            extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
+            ;;
           *)
           *)
             echo "Invalid preset: ${{ inputs.build_preset }}"
             echo "Invalid preset: ${{ inputs.build_preset }}"
             exit 1
             exit 1

+ 5 - 6
.github/actions/s3cmd/action.yml

@@ -38,17 +38,16 @@ runs:
         
         
         folder="${{ runner.arch == 'X64' && 'x86-64' || runner.arch == 'ARM64' && 'arm64' || 'unknown' }}"
         folder="${{ runner.arch == 'X64' && 'x86-64' || runner.arch == 'ARM64' && 'arm64' || 'unknown' }}"
         
         
-        case "${{ inputs.build_preset }}" in
+        BUILD_PRESET="${{ inputs.build_preset }}"
+        
+        case "$BUILD_PRESET" in
           relwithdebinfo)
           relwithdebinfo)
             ;;
             ;;
           debug)
           debug)
             folder+="-debug"
             folder+="-debug"
             ;;
             ;;
-          release-asan)
-            folder+="-asan"
-            ;;
-          release-tsan)
-            folder+="-tsan"
+          release-*)
+            folder+="-${BUILD_PRESET/release-/}"
             ;;
             ;;
           *)
           *)
             echo "Invalid preset: ${{ inputs.build_preset }}"
             echo "Invalid preset: ${{ inputs.build_preset }}"

+ 11 - 6
.github/actions/test_ya/action.yml

@@ -87,16 +87,16 @@ runs:
         BRANCH_TAG="$GITHUB_REF_NAME"
         BRANCH_TAG="$GITHUB_REF_NAME"
         ARCH="${{ runner.arch == 'X64' && 'x86-64' || runner.arch == 'ARM64' && 'arm64' || 'unknown' }}"
         ARCH="${{ runner.arch == 'X64' && 'x86-64' || runner.arch == 'ARM64' && 'arm64' || 'unknown' }}"
         
         
-        
-        case "${{ inputs.build_preset }}" in
+        BUILD_PRESET="${{ inputs.build_preset }}"
+        case "$BUILD_PRESET" in
           relwithdebinfo)
           relwithdebinfo)
             TESTMO_SOURCE="ya-${ARCH}"
             TESTMO_SOURCE="ya-${ARCH}"
             ;;
             ;;
-          release-asan)
-            TESTMO_SOURCE="ya-${ARCH}-asan"
+          debug)
+            TESTMO_SOURCE="ya-${ARCH}-debug"
             ;;
             ;;
-          release-tsan)
-            TESTMO_SOURCE="ya-${ARCH}-tsan"
+          release-*)
+            TESTMO_SOURCE="ya-${ARCH}-${BUILD_PRESET/release-/}"
             ;;
             ;;
           *)
           *)
             echo "Invalid preset: ${{ inputs.build_preset }}"
             echo "Invalid preset: ${{ inputs.build_preset }}"
@@ -167,6 +167,11 @@ runs:
             extra_params+=(--sanitize="thread")
             extra_params+=(--sanitize="thread")
             extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
             extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
             ;;
             ;;
+          release-msan)
+            build_type=release
+            extra_params+=(--sanitize="memory")
+            extra_params+=(-DSKIP_JUNK -DUSE_EAT_MY_DATA -DDEBUGINFO_LINES_ONLY)
+            ;;
           *)
           *)
             echo "Invalid preset: ${{ inputs.build_preset }}"
             echo "Invalid preset: ${{ inputs.build_preset }}"
             exit 1
             exit 1

+ 5 - 1
.github/workflows/build_and_test_ya.yml

@@ -13,6 +13,10 @@ on:
         type: string
         type: string
         default: "linux"
         default: "linux"
         description: "runner label"
         description: "runner label"
+      runner_additional_label:
+        type: string
+        default: "linux"
+        description: "additional runner label, can be empty"
       run_build:
       run_build:
         type: boolean
         type: boolean
         default: true
         default: true
@@ -49,7 +53,7 @@ on:
 jobs:
 jobs:
   main:
   main:
     name: Build and test ${{ inputs.build_preset }}
     name: Build and test ${{ inputs.build_preset }}
-    runs-on: [ self-hosted, "${{ inputs.runner_label }}" ]
+    runs-on: [ self-hosted, "${{ inputs.runner_label }}", "${{ inputs.runner_additional_label || inputs.runner_label }}"]
     steps:
     steps:
     - name: Checkout PR
     - name: Checkout PR
       uses: actions/checkout@v3
       uses: actions/checkout@v3

+ 2 - 1
.github/workflows/build_and_test_ya_ondemand.yml

@@ -20,6 +20,7 @@ on:
           - relwithdebinfo
           - relwithdebinfo
           - release-asan
           - release-asan
           - release-tsan
           - release-tsan
+          - release-msan
       test_size:
       test_size:
         type: choice
         type: choice
         default: "small,medium,large"
         default: "small,medium,large"
@@ -144,7 +145,7 @@ jobs:
       test_type: ${{ inputs.test_type }}
       test_type: ${{ inputs.test_type }}
       link_threads: ${{ inputs.link_threads }}
       link_threads: ${{ inputs.link_threads }}
       test_threads: ${{ inputs.test_threads }}
       test_threads: ${{ inputs.test_threads }}
-      put_build_results_to_cache: ${{ inputs.put_build_results_to_cache }}
+      put_build_results_to_cache: ${{ inputs.put_build_results_to_cache || true }}
     secrets: inherit
     secrets: inherit
 
 
   release-runner:
   release-runner:

+ 5 - 10
.github/workflows/build_and_test_ya_provisioned.yml

@@ -16,6 +16,7 @@ on:
           - relwithdebinfo
           - relwithdebinfo
           - release-asan
           - release-asan
           - release-tsan
           - release-tsan
+          - release-msan
       test_size:
       test_size:
         type: choice
         type: choice
         default: "small,medium,large"
         default: "small,medium,large"
@@ -52,10 +53,6 @@ on:
         type: string
         type: string
         default: "auto-provisioned"
         default: "auto-provisioned"
         description: "runner label"
         description: "runner label"
-      cache_tests:
-        type: boolean
-        default: false
-        description: "Use cache for tests"
   workflow_call:
   workflow_call:
     inputs:
     inputs:
       build_target:
       build_target:
@@ -87,10 +84,6 @@ on:
       runner_label:
       runner_label:
         type: string
         type: string
         default: "auto-provisioned"
         default: "auto-provisioned"
-      cache_tests:
-        type: boolean
-        default: false
-        description: "Use cache for tests"
       put_build_results_to_cache:
       put_build_results_to_cache:
         type: boolean
         type: boolean
         default: true
         default: true
@@ -98,7 +91,10 @@ jobs:
   main:
   main:
     uses: ./.github/workflows/build_and_test_ya.yml
     uses: ./.github/workflows/build_and_test_ya.yml
     with:
     with:
+      # FIXME: always use auto-provisioned here?
       runner_label: ${{ inputs.runner_label }}
       runner_label: ${{ inputs.runner_label }}
+      # naive check for -asan, -tsan, -msan
+      runner_additional_label: ${{ contains(inputs.build_preset, '-') && format('build-preset-{0}', inputs.build_preset) || '' }}
       build_target: ${{ inputs.build_target }}
       build_target: ${{ inputs.build_target }}
       build_preset: ${{ inputs.build_preset }}
       build_preset: ${{ inputs.build_preset }}
       run_build: ${{ inputs.run_build }}
       run_build: ${{ inputs.run_build }}
@@ -107,6 +103,5 @@ jobs:
       test_type: ${{ inputs.test_type }}
       test_type: ${{ inputs.test_type }}
       link_threads: ${{ inputs.link_threads }}
       link_threads: ${{ inputs.link_threads }}
       test_threads: ${{ inputs.test_threads }}
       test_threads: ${{ inputs.test_threads }}
-      cache_tests: ${{ inputs.cache_tests }}
-      put_build_results_to_cache: ${{ inputs.put_build_results_to_cache }}
+      put_build_results_to_cache: ${{ inputs.put_build_results_to_cache || true }}
     secrets: inherit
     secrets: inherit

+ 4 - 0
.github/workflows/nightly_run.yaml

@@ -39,8 +39,12 @@ jobs:
     name: Build/test x86_64 using YA
     name: Build/test x86_64 using YA
     uses: ./.github/workflows/build_and_test_ya_provisioned.yml
     uses: ./.github/workflows/build_and_test_ya_provisioned.yml
     secrets: inherit
     secrets: inherit
+    strategy:
+      matrix: ${{ fromJSON(vars.NIGHTLY_YA_X64_MATRIX) }}
+      fail-fast: false
     with:
     with:
       runner_label: auto-provisioned
       runner_label: auto-provisioned
+      build_preset: ${{ matrix.build_preset }}
       build_target: ydb/
       build_target: ydb/
       run_build: true
       run_build: true
       run_tests: true
       run_tests: true