You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ci_rspamd.yml 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. name: rspamd_test
  2. on:
  3. workflow_call:
  4. inputs:
  5. image:
  6. required: true
  7. type: string
  8. name:
  9. required: true
  10. type: string
  11. env:
  12. CTEST_OUTPUT_ON_FAILURE: 1
  13. RSPAMD_LUA_EXPENSIVE_TESTS: 1
  14. jobs:
  15. test:
  16. runs-on: [ "ubuntu-latest" ]
  17. container:
  18. image: ${{ inputs.image }}
  19. options: --user root
  20. steps:
  21. - name: Create directories
  22. run: |
  23. sudo mkdir -p ${GITHUB_WORKSPACE}
  24. sudo chown -R build:build ${GITHUB_WORKSPACE}
  25. - name: Check out source code
  26. uses: actions/checkout@v4
  27. with:
  28. path: src
  29. - name: Set variables on ARM64
  30. if: runner.arch == 'ARM64'
  31. run: echo "HYPERSCAN_ALTROOT=-DHYPERSCAN_ROOT_DIR=/vectorscan" >> "$GITHUB_ENV"
  32. - name: Run cmake
  33. run: |
  34. mkdir ${GITHUB_WORKSPACE}/build
  35. cd ${GITHUB_WORKSPACE}/build
  36. cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON ${{ env.HYPERSCAN_ALTROOT }} -GNinja ${GITHUB_WORKSPACE}/src
  37. - name: Build rspamd
  38. run: |
  39. cd ${GITHUB_WORKSPACE}/build
  40. ncpu=$(getconf _NPROCESSORS_ONLN)
  41. ninja -j $ncpu install
  42. ninja -j $ncpu rspamd-test
  43. ninja -j $ncpu rspamd-test-cxx
  44. - name: Run unit tests
  45. if: "!(inputs.name == 'ubuntu-ci' && runner.arch == 'ARM64')"
  46. run: |
  47. cd ${GITHUB_WORKSPACE}/build
  48. ninja test
  49. - name: Apply Fedora specifics
  50. if: inputs.name == 'fedora-ci'
  51. run: |
  52. sudo mv /usr/bin/miltertest /usr/bin/miltertest.is.broken.on.fedora || true
  53. - name: Run functional tests
  54. run: |
  55. cd ${GITHUB_WORKSPACE}/build
  56. ulimit -c unlimited
  57. ulimit -s unlimited
  58. set +e
  59. RSPAMD_INSTALLROOT=${GITHUB_WORKSPACE}/install robot -v RSPAMD_USER:root -v RSPAMD_GROUP:root --removekeywords wuks --exclude isbroken ${GITHUB_WORKSPACE}/src/test/functional/cases; EXIT_CODE=$?
  60. set -e
  61. core_files=$(find /var/tmp/ -name '*.core')
  62. for core in $core_files; do exe=$(gdb --batch -ex 'info proc mappings' -c $core | tail -1 | awk '{print $5}'); gdb --batch -ex 'bt' -c $core $exe; echo '---'; done
  63. exit $EXIT_CODE
  64. - name: Save workspace directory
  65. if: (success() || failure())
  66. run: echo "CONTAINER_WORKSPACE=${GITHUB_WORKSPACE}" >> "$GITHUB_ENV"
  67. - name: Upload robot logs
  68. if: (success() || failure())
  69. uses: actions/upload-artifact@v4
  70. with:
  71. name: robotlog-${{ inputs.name }}
  72. path: |
  73. ${{ env.CONTAINER_WORKSPACE }}/build/*.*ml
  74. retention-days: 1
  75. - name: Upload rspamd logs
  76. if: (success() || failure())
  77. uses: actions/upload-artifact@v4
  78. with:
  79. name: rspamdlog-${{ inputs.name }}
  80. path: ${{ env.CONTAINER_WORKSPACE }}/build/robot-save
  81. retention-days: 1