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.

92 lines
2.8 KiB

  1. # Runs fuzzing nightly.
  2. name: fuzz-nightly
  3. on:
  4. workflow_dispatch: # allow running workflow manually
  5. schedule:
  6. - cron: '0 3 * * *'
  7. pull_request:
  8. branches: [master]
  9. paths:
  10. - "test/fuzz/**/*.go"
  11. jobs:
  12. fuzz-nightly-test:
  13. runs-on: ubuntu-latest
  14. steps:
  15. - uses: actions/setup-go@v2
  16. with:
  17. go-version: '1.16'
  18. - uses: actions/checkout@v2.3.4
  19. - name: Install go-fuzz
  20. working-directory: test/fuzz
  21. run: go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build
  22. - name: Fuzz mempool-v1
  23. working-directory: test/fuzz
  24. run: timeout -s SIGINT --preserve-status 10m make fuzz-mempool-v1
  25. continue-on-error: true
  26. - name: Fuzz mempool-v0
  27. working-directory: test/fuzz
  28. run: timeout -s SIGINT --preserve-status 10m make fuzz-mempool-v0
  29. continue-on-error: true
  30. - name: Fuzz p2p-addrbook
  31. working-directory: test/fuzz
  32. run: timeout -s SIGINT --preserve-status 10m make fuzz-p2p-addrbook
  33. continue-on-error: true
  34. - name: Fuzz p2p-pex
  35. working-directory: test/fuzz
  36. run: timeout -s SIGINT --preserve-status 10m make fuzz-p2p-pex
  37. continue-on-error: true
  38. - name: Fuzz p2p-sc
  39. working-directory: test/fuzz
  40. run: timeout -s SIGINT --preserve-status 10m make fuzz-p2p-sc
  41. continue-on-error: true
  42. - name: Fuzz p2p-rpc-server
  43. working-directory: test/fuzz
  44. run: timeout -s SIGINT --preserve-status 10m make fuzz-rpc-server
  45. continue-on-error: true
  46. - name: Archive crashers
  47. uses: actions/upload-artifact@v2
  48. with:
  49. name: crashers
  50. path: test/fuzz/**/crashers
  51. retention-days: 3
  52. - name: Archive suppressions
  53. uses: actions/upload-artifact@v2
  54. with:
  55. name: suppressions
  56. path: test/fuzz/**/suppressions
  57. retention-days: 3
  58. - name: Set crashers count
  59. working-directory: test/fuzz
  60. run: echo "::set-output name=count::$(find . -type d -name 'crashers' | xargs -I % sh -c 'ls % | wc -l' | awk '{total += $1} END {print total}')"
  61. id: set-crashers-count
  62. outputs:
  63. crashers-count: ${{ steps.set-crashers-count.outputs.count }}
  64. fuzz-nightly-fail:
  65. needs: fuzz-nightly-test
  66. if: ${{ needs.fuzz-nightly-test.outputs.crashers-count != 0 }}
  67. runs-on: ubuntu-latest
  68. steps:
  69. - name: Notify Slack if any crashers
  70. uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7
  71. env:
  72. SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
  73. SLACK_CHANNEL: tendermint-internal
  74. SLACK_USERNAME: Nightly Fuzz Tests
  75. SLACK_ICON_EMOJI: ':firecracker:'
  76. SLACK_COLOR: danger
  77. SLACK_MESSAGE: Crashers found in Nightly Fuzz tests
  78. SLACK_FOOTER: ''