Parcourir la source

[Minor] Recreate drone pipeline with jsonnet

tags/3.7.1
Andrew Lewis il y a 7 mois
Parent
révision
10cd630345
2 fichiers modifiés avec 526 ajouts et 285 suppressions
  1. 252
    0
      .drone.jsonnet
  2. 274
    285
      .drone.yml

+ 252
- 0
.drone.jsonnet Voir le fichier

@@ -0,0 +1,252 @@
local docker_pipeline = {
kind: 'pipeline',
type: 'docker',
};

local trigger = {
trigger: {
event: [
'push',
'tag',
'pull_request',
'custom',
],
},
};

local pipeline(arch) = {
local rspamd_volumes = {
volumes: [
{
name: 'rspamd',
path: '/rspamd',
},
],
},
name: 'default',
platform: {
os: 'linux',
arch: arch,
},
steps: [
{
name: 'prepare',
image: 'ubuntu:22.04',
pull: 'if-not-exists',
commands: [
'install -d -o nobody -g nogroup /rspamd/build /rspamd/install /rspamd/fedora/build /rspamd/fedora/install',
],
} + rspamd_volumes,
{
name: 'build',
image: 'rspamd/ci:ubuntu-build',
pull: 'always',
depends_on: [
'prepare',
],
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',
],
} + rspamd_volumes,
{
name: 'build-clang',
image: 'rspamd/ci:fedora-build',
pull: 'always',
depends_on: [
'prepare',
],
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',
],
} + rspamd_volumes,
{
name: 'rspamd-test',
image: 'rspamd/ci:ubuntu-test',
pull: 'always',
depends_on: [
'build',
],
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',
],
} + rspamd_volumes,
{
name: 'test-fedora-clang',
image: 'rspamd/ci:fedora-test',
pull: 'always',
depends_on: [
'build-clang',
],
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',
],
} + rspamd_volumes,
{
name: 'functional',
image: 'rspamd/ci:ubuntu-test-func',
pull: 'always',
depends_on: [
'build',
],
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/; 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',
],
environment: {
HTTP_PUT_AUTH: {
from_secret: 'http_put_auth',
},
},
} + rspamd_volumes,
{
name: 'send-coverage',
image: 'rspamd/ci:ubuntu-test',
pull: 'if-not-exists',
depends_on: [
'functional',
'rspamd-test',
],
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 --root $DRONE_WORKSPACE --input coverage.c.json unit_test_lua.json coverage.functional.lua.json --token=$COVERALLS_REPO_TOKEN',
],
environment: {
COVERALLS_REPO_TOKEN: {
from_secret: 'coveralls_repo_token',
},
},
when: {
branch: [
'master',
],
event: [
'push',
'tag',
],
},
} + rspamd_volumes,
{
name: 'eslint',
image: 'node:18-alpine',
pull: 'if-not-exists',
failure: 'ignore',
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',
],
},
{
name: 'perl-tidyall',
image: 'rspamd/ci:perl-tidyall',
pull: 'if-not-exists',
failure: 'ignore',
commands: [
'tidyall --version',
'perltidy --version | head -1',
'tidyall --all --check-only --no-cache --data-dir /tmp/tidyall',
],
},
{
name: 'notify',
image: 'drillster/drone-email',
pull: 'if-not-exists',
depends_on: [
'rspamd-test',
'test-fedora-clang',
'functional',
'send-coverage',
'eslint',
'perl-tidyall',
],
settings: {
from: 'noreply@rspamd.com',
host: {
from_secret: 'email_host',
},
username: {
from_secret: 'email_username',
},
password: {
from_secret: 'email_password',
},
},
when: {
status: [
'failure',
],
},
},
],
volumes: [
{
name: 'rspamd',
temp: {},
},
],
} + trigger + docker_pipeline;

local signature = {
kind: 'signature',
hmac: '0000000000000000000000000000000000000000000000000000000000000000',
};

[
pipeline('amd64'),
signature,
]

+ 274
- 285
.drone.yml Voir le fichier

@@ -1,288 +1,277 @@
---
kind: pipeline
type: docker
name: default

platform:
os: linux

steps:
- name: prepare

# any image with a root shell can be used here, but Ubuntu used as base
# image for build and test images and we need to download it anyway
image: ubuntu:22.04
pull: if-not-exists
volumes:
- name: rspamd
path: /rspamd
commands:
- install -d -o nobody -g nogroup /rspamd/build /rspamd/install /rspamd/fedora/build /rspamd/fedora/install

- name: build
# https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-build/Dockerfile
image: rspamd/ci:ubuntu-build
pull: always
volumes:
- name: rspamd
path: /rspamd
depends_on: [ prepare ]
commands:
# build directories should be writable by nobody, for rspamd in functional tests
# works as nobody and writes coverage files there
- 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
- ncpu=$(getconf _NPROCESSORS_ONLN)
- ninja -j $ncpu install
- ninja -j $ncpu rspamd-test
- ninja -j $ncpu rspamd-test-cxx

- name: build-clang
# https://github.com/rspamd/rspamd-build-docker/blob/master/fedora-build/Dockerfile
image: rspamd/ci:fedora-build
pull: always
volumes:
- name: rspamd
path: /rspamd
depends_on: [ prepare ]
commands:
- test "$(id -un)" = nobody
- cd /rspamd/fedora/build
- export LDFLAGS='-fuse-ld=lld'
#- export CFLAGS='-fsanitize=address,undefined,implicit-integer-truncation'
#- export CXXFLAGS='-fsanitize=address,undefined,implicit-integer-truncation'
- 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
- ncpu=$(getconf _NPROCESSORS_ONLN)
- make -j $ncpu install
- make -j $ncpu rspamd-test
- make -j $ncpu rspamd-test-cxx

# We run rspamd-test (unit test) and functional test (runned by robot) in
# parallel to save time. To avoid conflict in saving lua coverage we run them
# from different directories. For C code coverage counters is saved to .gcda
# files and binary contain absolute path to them, so rspamd-test and
# processes started by functional test are writing to the same files. On
# process exit new coverage data merged with existing content of .gcda file.
# Race is possible if rspamd-test and some rspamd process in functional test
# will try to write .gcda file simultaneous. But it is very unlikely and
# performance is more important then correct coverage data.

- name: rspamd-test
# https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-test/Dockerfile
image: rspamd/ci:ubuntu-test
pull: always
volumes:
- name: rspamd
path: /rspamd
depends_on: [ build ]
commands:
- test "$(id -un)" = nobody
- ulimit -c unlimited
# rspamd-test and functional test both use luacov.stats.out file and should be started from
# different directories (if started in parallel)
- cd /rspamd/build/test
- set +e
- env RSPAMD_LUA_EXPENSIVE_TESTS=1 ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?
- set -e
# shell sets exit status of a process terminated by a signal to '128 + signal-number'
# if rspamd-test was terminated by a signal it should be SIGSEGV or SIGABRT, try to examine core
- >
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
# luacov-coveralls reads luacov.stats.out written by rspamd-test using luacov module
# and writes json report for coveralls.io service
- luacov-coveralls -o /rspamd/build/unit_test_lua.json --dryrun
- set +e
- ./rspamd-test-cxx -s; EXIT_CODE=$?
- set -e
# shell sets exit status of a process terminated by a signal to '128 + signal-number'
# if rspamd-test was terminated by a signal it should be SIGSEGV or SIGABRT, try to examine core
- >
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
- exit $EXIT_CODE

- name: test-fedora-clang
# https://github.com/rspamd/rspamd-build-docker/blob/master/fedora-test/Dockerfile
image: rspamd/ci:fedora-test
pull: always
volumes:
- name: rspamd
path: /rspamd
depends_on: [ build-clang ]
commands:
- test "$(id -un)" = nobody
# Asan reserves 20Tb of virtual memory, limit core size to 2 Gb to avoid writing huge core
- ulimit -c 2097152
- ulimit -s unlimited
# disable leak sanitizer: too many leaks detected, most of them probably FP
- 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
# shell sets exit status of a process terminated by a signal to '128 + signal-number'
# if rspamd-test was terminated by a signal it should be SIGSEGV or SIGABRT, try to examine core
- >
if [ $EXIT_CODE -gt 128 ]; then
gdb --batch -ex 'bt' -c /var/tmp/*.rspamd-test.core ./rspamd-test;
fi
- set +e
- ./rspamd-test-cxx -s; EXIT_CODE=$?
- set -e
# shell sets exit status of a process terminated by a signal to '128 + signal-number'
# if rspamd-test was terminated by a signal it should be SIGSEGV or SIGABRT, try to examine core
- >
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
- cat /tmp/ubsan.* || true
- exit $EXIT_CODE

- name: functional
# https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-test-func/Dockerfile
image: rspamd/ci:ubuntu-test-func
pull: always
volumes:
- name: rspamd
path: /rspamd
depends_on: [ build ]
commands:
- cd /rspamd/build
- ulimit -c unlimited
- ulimit -s unlimited
# some rspamd processes during this test work as root and some as nobody
# use umask to create world-writable files so nobody can write to *.gcda files created by root
- umask 0000
- set +e
- RSPAMD_INSTALLROOT=/rspamd/install robot --removekeywords wuks --exclude isbroken $DRONE_WORKSPACE/test/functional/cases; EXIT_CODE=$?
- set -e
# upload test results to nginx frontent using WebDAV PUT
- >
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/;
fi
# core_pattern=/var/tmp/%u.%e.core so one or two cores can be saved for each binary
- core_files=$(find /var/tmp/ -name '*.core')
# use 'info proc mappings' to find path to executable file for given core
# first mapping is usually program executable
- >
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
- exit $EXIT_CODE
environment:
HTTP_PUT_AUTH: { from_secret: http_put_auth }

- name: send-coverage
image: rspamd/ci:ubuntu-test
pull: if-not-exists
volumes:
- name: rspamd
path: /rspamd
depends_on: [ functional, rspamd-test ]
commands:
- cd /rspamd/build
# extract coverage data for C code from .gcda files and save it in a format suitable for coveralls.io
- $DRONE_WORKSPACE/test/tools/gcov_coveralls.py --exclude test --prefix /rspamd/build --prefix $DRONE_WORKSPACE --out coverage.c.json
# luacov-coveralls reads luacov.stats.out generated by functional tests
# (see collect_lua_coverage() in test/functional/lib/rspamd.py)
# and writes json report for coveralls.io
- luacov-coveralls -o coverage.functional.lua.json --dryrun
# * merge coverage for C and Lua code
# * remove prefixes from absolute paths (in luacov-coveralls files), filter test, contrib, e. t.c
# * upload report to coveralls.io
- $DRONE_WORKSPACE/test/tools/merge_coveralls.py --root $DRONE_WORKSPACE --input coverage.c.json unit_test_lua.json coverage.functional.lua.json --token=$COVERALLS_REPO_TOKEN
environment:
COVERALLS_REPO_TOKEN: { from_secret: coveralls_repo_token }
when:
branch: [ master ]
# don't send coverage report for pull request
event: [push, tag]

- name: eslint
image: node:18-alpine
pull: if-not-exists
failure: ignore
commands:
- npm install
- ./node_modules/.bin/eslint -v
- ./node_modules/.bin/eslint ./
# Run stylelint checks
- ./node_modules/.bin/stylelint -v
- npm show stylelint-config-standard version
- ./node_modules/.bin/stylelint ./**/*.css ./**/*.html ./**/*.js

- name: perl-tidyall
# https://github.com/rspamd/rspamd-build-docker/blob/master/perl-tidyall/Dockerfile
image: rspamd/ci:perl-tidyall
pull: if-not-exists
failure: ignore
commands:
- tidyall --version
- perltidy --version | head -1
# checks are configured in .tidyallrc at the top of rspamd repo
- tidyall --all --check-only --no-cache --data-dir /tmp/tidyall

- name: notify
image: drillster/drone-email
pull: if-not-exists
depends_on:
- rspamd-test
- test-fedora-clang
- functional
- send-coverage
- eslint
- perl-tidyall
settings:
from: noreply@rspamd.com
host: { from_secret: email_host }
username: { from_secret: email_username }
password: { from_secret: email_password }
when:
status: [ failure ]

volumes:
- name: rspamd
temp: {}

trigger:
event: [push, tag, pull_request, custom]

{
"kind": "pipeline",
"name": "default",
"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/; 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 --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"
]
}
},
{
"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": [
"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"
},
{
"depends_on": [
"rspamd-test",
"test-fedora-clang",
"functional",
"send-coverage",
"eslint",
"perl-tidyall"
],
"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"
}
},
"when": {
"status": [
"failure"
]
}
}
],
"trigger": {
"event": [
"push",
"tag",
"pull_request",
"custom"
]
},
"type": "docker",
"volumes": [
{
"name": "rspamd",
"temp": { }
}
]
}
---
kind: signature
hmac: 13670c504d29a1249b3a06c171016f14377e3c74101935bc23f6c542036562df

{
"hmac": "0000000000000000000000000000000000000000000000000000000000000000",
"kind": "signature"
}
...

Chargement…
Annuler
Enregistrer