diff options
Diffstat (limited to '.drone.yml')
-rw-r--r-- | .drone.yml | 563 |
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" +} +... |