---
{
   "depends_on": [ ],
   "kind": "pipeline",
   "name": "default-amd64",
   "platform": {
      "arch": "amd64",
      "os": "linux"
   },
   "steps": [
      {
         "commands": [
            "install -d -o nobody -g nogroup /rspamd/build /rspamd/install /rspamd/fedora/build /rspamd/fedora/install"
         ],
         "image": "ubuntu:22.04",
         "name": "prepare",
         "pull": "if-not-exists",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "cd /rspamd/build",
            "cmake -DCMAKE_INSTALL_PREFIX=/rspamd/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON  -GNinja $DRONE_WORKSPACE\n",
            "ncpu=$(getconf _NPROCESSORS_ONLN)",
            "ninja -j $ncpu install",
            "ninja -j $ncpu rspamd-test",
            "ninja -j $ncpu rspamd-test-cxx"
         ],
         "depends_on": [
            "prepare"
         ],
         "image": "rspamd/ci:ubuntu-build",
         "name": "build",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "cd /rspamd/fedora/build",
            "export LDFLAGS='-fuse-ld=lld'",
            "export ASAN_OPTIONS=detect_leaks=0",
            "cmake -DCMAKE_INSTALL_PREFIX=/rspamd/fedora/install -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_CLANG_PLUGIN=ON -DENABLE_FULL_DEBUG=ON -DENABLE_HYPERSCAN=ON  -DSANITIZE=address $DRONE_WORKSPACE\n",
            "ncpu=$(getconf _NPROCESSORS_ONLN)",
            "make -j $ncpu install",
            "make -j $ncpu rspamd-test",
            "make -j $ncpu rspamd-test-cxx"
         ],
         "depends_on": [
            "prepare"
         ],
         "image": "rspamd/ci:fedora-build",
         "name": "build-clang",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "ulimit -c unlimited",
            "cd /rspamd/build/test",
            "set +e",
            "env RSPAMD_LUA_EXPENSIVE_TESTS=1 ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test.core ./rspamd-test; exit $EXIT_CODE; fi; if [ $EXIT_CODE -ne 0 ]; then exit $EXIT_CODE; fi\n",
            "luacov-coveralls -o /rspamd/build/unit_test_lua.json --dryrun",
            "set +e",
            "./rspamd-test-cxx -s; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test-cxx.core ./rspamd-test-cxx; exit $EXIT_CODE; fi\n",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build"
         ],
         "image": "rspamd/ci:ubuntu-test",
         "name": "rspamd-test",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "ulimit -c 2097152",
            "ulimit -s unlimited",
            "export ASAN_OPTIONS=\"detect_leaks=0:print_stacktrace=1:disable_coredump=0\"",
            "export UBSAN_OPTIONS=\"print_stacktrace=1:print_summary=0:log_path=/tmp/ubsan\"",
            "cd /rspamd/fedora/build/test",
            "set +e",
            "env RSPAMD_LUA_EXPENSIVE_TESTS=1 ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'bt' -c /var/tmp/*.rspamd-test.core ./rspamd-test; fi\n",
            "set +e",
            "./rspamd-test-cxx -s; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test-cxx.core ./rspamd-test-cxx; exit $EXIT_CODE; fi\n",
            "cat /tmp/ubsan.* || true",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build-clang"
         ],
         "image": "rspamd/ci:fedora-test",
         "name": "test-fedora-clang",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "cd /rspamd/build",
            "ulimit -c unlimited",
            "ulimit -s unlimited",
            "umask 0000",
            "set +e",
            "RSPAMD_INSTALLROOT=/rspamd/install robot --removekeywords wuks --exclude isbroken $DRONE_WORKSPACE/test/functional/cases; EXIT_CODE=$?",
            "set -e",
            "if [ -n \"$HTTP_PUT_AUTH\" ]; then $DRONE_WORKSPACE/test/tools/http_put.py log.html report.html https://$DRONE_SYSTEM_HOSTNAME/testlogs/$DRONE_REPO/${DRONE_BUILD_NUMBER}-amd64/; fi\n",
            "core_files=$(find /var/tmp/ -name '*.core')",
            "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\n",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build"
         ],
         "environment": {
            "HTTP_PUT_AUTH": {
               "from_secret": "http_put_auth"
            }
         },
         "image": "rspamd/ci:ubuntu-test-func",
         "name": "functional",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "cd /rspamd/build",
            "$DRONE_WORKSPACE/test/tools/gcov_coveralls.py --exclude test --prefix /rspamd/build --prefix $DRONE_WORKSPACE --out coverage.c.json",
            "luacov-coveralls -o coverage.functional.lua.json --dryrun",
            "$DRONE_WORKSPACE/test/tools/merge_coveralls.py --parallel --root $DRONE_WORKSPACE --input coverage.c.json unit_test_lua.json coverage.functional.lua.json --token=$COVERALLS_REPO_TOKEN"
         ],
         "depends_on": [
            "functional",
            "rspamd-test"
         ],
         "environment": {
            "COVERALLS_REPO_TOKEN": {
               "from_secret": "coveralls_repo_token"
            }
         },
         "image": "rspamd/ci:ubuntu-test",
         "name": "send-coverage",
         "pull": "if-not-exists",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ],
         "when": {
            "branch": [
               "master"
            ],
            "event": [
               "push",
               "tag"
            ]
         }
      }
   ],
   "trigger": {
      "event": [
         "push",
         "tag",
         "custom",
         "pull_request"
      ]
   },
   "type": "docker",
   "volumes": [
      {
         "name": "rspamd",
         "temp": { }
      }
   ]
}
---
{
   "depends_on": [ ],
   "kind": "pipeline",
   "name": "default-arm64",
   "platform": {
      "arch": "arm64",
      "os": "linux"
   },
   "steps": [
      {
         "commands": [
            "install -d -o nobody -g nogroup /rspamd/build /rspamd/install /rspamd/fedora/build /rspamd/fedora/install"
         ],
         "image": "ubuntu:22.04",
         "name": "prepare",
         "pull": "if-not-exists",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "cd /rspamd/build",
            "cmake -DCMAKE_INSTALL_PREFIX=/rspamd/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON -DHYPERSCAN_ROOT_DIR=/vectorscan -GNinja $DRONE_WORKSPACE\n",
            "ncpu=$(getconf _NPROCESSORS_ONLN)",
            "ninja -j $ncpu install",
            "ninja -j $ncpu rspamd-test",
            "ninja -j $ncpu rspamd-test-cxx"
         ],
         "depends_on": [
            "prepare"
         ],
         "image": "rspamd/ci:ubuntu-build",
         "name": "build",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "cd /rspamd/fedora/build",
            "export LDFLAGS='-fuse-ld=lld'",
            "export ASAN_OPTIONS=detect_leaks=0",
            "cmake -DCMAKE_INSTALL_PREFIX=/rspamd/fedora/install -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_CLANG_PLUGIN=ON -DENABLE_FULL_DEBUG=ON -DENABLE_HYPERSCAN=ON -DHYPERSCAN_ROOT_DIR=/vectorscan -DSANITIZE=address $DRONE_WORKSPACE\n",
            "ncpu=$(getconf _NPROCESSORS_ONLN)",
            "make -j $ncpu install",
            "make -j $ncpu rspamd-test",
            "make -j $ncpu rspamd-test-cxx"
         ],
         "depends_on": [
            "prepare"
         ],
         "image": "rspamd/ci:fedora-build",
         "name": "build-clang",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "ulimit -c unlimited",
            "cd /rspamd/build/test",
            "set +e",
            "env RSPAMD_LUA_EXPENSIVE_TESTS=1 ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test.core ./rspamd-test; exit $EXIT_CODE; fi; if [ $EXIT_CODE -ne 0 ]; then exit $EXIT_CODE; fi\n",
            "luacov-coveralls -o /rspamd/build/unit_test_lua.json --dryrun",
            "set +e",
            "./rspamd-test-cxx -s; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test-cxx.core ./rspamd-test-cxx; exit $EXIT_CODE; fi\n",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build"
         ],
         "image": "rspamd/ci:ubuntu-test",
         "name": "rspamd-test",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "test \"$(id -un)\" = nobody",
            "ulimit -c 2097152",
            "ulimit -s unlimited",
            "export ASAN_OPTIONS=\"detect_leaks=0:print_stacktrace=1:disable_coredump=0\"",
            "export UBSAN_OPTIONS=\"print_stacktrace=1:print_summary=0:log_path=/tmp/ubsan\"",
            "cd /rspamd/fedora/build/test",
            "set +e",
            "env RSPAMD_LUA_EXPENSIVE_TESTS=1 ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'bt' -c /var/tmp/*.rspamd-test.core ./rspamd-test; fi\n",
            "set +e",
            "./rspamd-test-cxx -s; EXIT_CODE=$?",
            "set -e",
            "if [ $EXIT_CODE -gt 128 ]; then gdb --batch -ex 'thread apply all bt full' -c /var/tmp/*.rspamd-test-cxx.core ./rspamd-test-cxx; exit $EXIT_CODE; fi\n",
            "cat /tmp/ubsan.* || true",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build-clang"
         ],
         "image": "rspamd/ci:fedora-test",
         "name": "test-fedora-clang",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "cd /rspamd/build",
            "ulimit -c unlimited",
            "ulimit -s unlimited",
            "umask 0000",
            "set +e",
            "RSPAMD_INSTALLROOT=/rspamd/install robot --removekeywords wuks --exclude isbroken $DRONE_WORKSPACE/test/functional/cases; EXIT_CODE=$?",
            "set -e",
            "if [ -n \"$HTTP_PUT_AUTH\" ]; then $DRONE_WORKSPACE/test/tools/http_put.py log.html report.html https://$DRONE_SYSTEM_HOSTNAME/testlogs/$DRONE_REPO/${DRONE_BUILD_NUMBER}-arm64/; fi\n",
            "core_files=$(find /var/tmp/ -name '*.core')",
            "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\n",
            "exit $EXIT_CODE"
         ],
         "depends_on": [
            "build"
         ],
         "environment": {
            "HTTP_PUT_AUTH": {
               "from_secret": "http_put_auth"
            }
         },
         "image": "rspamd/ci:ubuntu-test-func",
         "name": "functional",
         "pull": "always",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ]
      },
      {
         "commands": [
            "cd /rspamd/build",
            "$DRONE_WORKSPACE/test/tools/gcov_coveralls.py --exclude test --prefix /rspamd/build --prefix $DRONE_WORKSPACE --out coverage.c.json",
            "luacov-coveralls -o coverage.functional.lua.json --dryrun",
            "$DRONE_WORKSPACE/test/tools/merge_coveralls.py --parallel --root $DRONE_WORKSPACE --input coverage.c.json unit_test_lua.json coverage.functional.lua.json --token=$COVERALLS_REPO_TOKEN"
         ],
         "depends_on": [
            "functional",
            "rspamd-test"
         ],
         "environment": {
            "COVERALLS_REPO_TOKEN": {
               "from_secret": "coveralls_repo_token"
            }
         },
         "image": "rspamd/ci:ubuntu-test",
         "name": "send-coverage",
         "pull": "if-not-exists",
         "volumes": [
            {
               "name": "rspamd",
               "path": "/rspamd"
            }
         ],
         "when": {
            "branch": [
               "master"
            ],
            "event": [
               "push",
               "tag"
            ]
         }
      }
   ],
   "trigger": {
      "event": [
         "push",
         "tag",
         "custom",
         "pull_request"
      ]
   },
   "type": "docker",
   "volumes": [
      {
         "name": "rspamd",
         "temp": { }
      }
   ]
}
---
{
   "depends_on": [
      "default-amd64",
      "default-arm64"
   ],
   "kind": "pipeline",
   "name": "close_coveralls",
   "steps": [
      {
         "commands": [
            "$DRONE_WORKSPACE/test/tools/merge_coveralls.py --parallel-close --token=$COVERALLS_REPO_TOKEN"
         ],
         "environment": {
            "COVERALLS_REPO_TOKEN": {
               "from_secret": "coveralls_repo_token"
            }
         },
         "image": "rspamd/ci:ubuntu-test-func",
         "name": "close_coveralls",
         "pull": "always"
      }
   ],
   "trigger": {
      "branch": [
         "master"
      ],
      "event": [
         "push",
         "tag"
      ],
      "status": [
         "success",
         "failure"
      ]
   },
   "type": "docker"
}
---
{
   "kind": "pipeline",
   "name": "default-noarch",
   "steps": [
      {
         "commands": [
            "tidyall --version",
            "perltidy --version | head -1",
            "tidyall --all --check-only --no-cache --data-dir /tmp/tidyall"
         ],
         "failure": "ignore",
         "image": "rspamd/ci:perl-tidyall",
         "name": "perl-tidyall",
         "pull": "if-not-exists"
      },
      {
         "commands": [
            "npm install",
            "./node_modules/.bin/eslint -v",
            "./node_modules/.bin/eslint ./",
            "./node_modules/.bin/stylelint -v",
            "npm show stylelint-config-standard version",
            "./node_modules/.bin/stylelint ./**/*.css ./**/*.html ./**/*.js"
         ],
         "failure": "ignore",
         "image": "node:18-alpine",
         "name": "eslint",
         "pull": "if-not-exists"
      },
      {
         "commands": [
            "luacheck -q --no-color ."
         ],
         "image": "pipelinecomponents/luacheck",
         "name": "luacheck",
         "pull": "if-not-exists"
      }
   ],
   "trigger": {
      "event": [
         "push",
         "tag",
         "custom",
         "pull_request"
      ]
   },
   "type": "docker"
}
---
{
   "depends_on": [
      "default-amd64",
      "default-arm64",
      "default-noarch"
   ],
   "kind": "pipeline",
   "name": "notify",
   "steps": [
      {
         "image": "drillster/drone-email",
         "name": "notify",
         "pull": "if-not-exists",
         "settings": {
            "from": "noreply@rspamd.com",
            "host": {
               "from_secret": "email_host"
            },
            "password": {
               "from_secret": "email_password"
            },
            "username": {
               "from_secret": "email_username"
            }
         }
      }
   ],
   "trigger": {
      "event": [
         "push",
         "tag",
         "custom"
      ],
      "status": [
         "failure"
      ]
   },
   "type": "docker"
}
---
{
   "hmac": "6c89d1423ccbddbfac9e2b67f24192018670209a293cfee308880a16a2f2b372",
   "kind": "signature"
}
...