summaryrefslogtreecommitdiffstats
path: root/.drone.yml
diff options
context:
space:
mode:
Diffstat (limited to '.drone.yml')
-rw-r--r--.drone.yml563
1 files changed, 563 insertions, 0 deletions
diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..cad3689
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,563 @@
+---
+{
+ "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",
+ "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",
+ "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",
+ "npm ls",
+ "./node_modules/.bin/eslint ./",
+ "./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": "2351718d9a562ea71ff344fb39fcf4ad5dae5b9694219b933c1b63a8b87d2aa5",
+ "kind": "signature"
+}
+...