+---
workspace:
base: /rspamd
pipeline:
build:
- image: gcc:5
+ # https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-build/Dockerfile
+ image: rspamd/ci-ubuntu-build
group: build
commands:
- - pwd
- - set -e
- - apt-get update -qq
- - apt-get install -qq cmake libevent-dev libglib2.0-dev libicu-dev libluajit-5.1-dev libmagic-dev libsqlite3-dev libssl-dev ragel libunwind-dev libunwind8
- - umask 0000
- - mkdir /rspamd/build ; mkdir /rspamd/install ; cd /rspamd/build
- - cmake /rspamd/src/github.com/rspamd/rspamd/ -DDBDIR=/nana -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DCMAKE_INSTALL_PREFIX=/rspamd/install
- - make install -j`nproc`
- - make rspamd-test -j`nproc`
+ - mkdir /rspamd/build /rspamd/install
+ - cd /rspamd/build
+ - cmake $CI_WORKSPACE -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DCMAKE_INSTALL_PREFIX=/rspamd/install -DCMAKE_RULE_MESSAGES=OFF
+ - ncpu=$(getconf _NPROCESSORS_ONLN)
+ - make -j $ncpu install
+ - make -j $ncpu rspamd-test
eslint:
- image: node:latest
+ image: node:10-alpine
group: build
commands:
- npm install
- - ./node_modules/.bin/eslint -v && ./node_modules/.bin/eslint ./
+ - ./node_modules/.bin/eslint -v
+ - ./node_modules/.bin/eslint ./
rspamd-test:
- image: gcc:5
+ # https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-test/Dockerfile
+ image: rspamd/ci-ubuntu-test
group: tests
commands:
+ # 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
+ - ./rspamd-test -p /rspamd/lua; EXIT_CODE=$?
- set -e
- - apt-get update -qq
- - apt-get install -qq cmake libevent-dev libglib2.0-dev libicu-dev libluajit-5.1-dev libmagic-dev libsqlite3-dev libssl-dev ragel libunwind-dev libunwind8 luarocks
- - apt-get install -qq python-pip python-dev
- - pip install --upgrade setuptools
- - pip install --upgrade pyOpenSSL
- - pip install --upgrade certifi
- - pip install --upgrade ipaddress
- - pip install --upgrade urllib3
- - pip install --upgrade enum34
- - pip install --upgrade cpp-coveralls requests cryptography
- - luarocks install luacov
- - luarocks install luacov-coveralls
-
- - cd /rspamd/build
- - set +e; test/rspamd-test -p /rspamd/lua
- - luacov-coveralls -o unit_test_lua.json --dryrun
- - coveralls --dump coverage.rspamd-test.dump
+ - luacov-coveralls -o /rspamd/build/unit_test_lua.json --dryrun
+ # coveralls dosn't support layout when object files are located outside git repo root
+ # add hack to disable searching for git
+ - ln -s /bin/true /usr/local/bin/git
+ - coveralls --dump /rspamd/build/coverage.rspamd-test.dump
+ - exit $EXIT_CODE
functional:
- image: gcc:5
+ # https://github.com/rspamd/rspamd-build-docker/blob/master/ubuntu-test-func/Dockerfile
+ image: rspamd/ci-ubuntu-test-func
group: tests
commands:
- - echo 'deb http://repo.yandex.ru/clickhouse/deb/stable/ main/' | tee /etc/apt/sources.list.d/clickhouse.list
- - apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional, clickhouse key
- - apt-get update -qq || true
- - apt-get install -qq libluajit-5.1-dev libpcre3-dev luarocks opendkim-tools python-pip redis-server libunwind8 libglib2.0-dev libicu-dev libevent-dev python-dev
- - apt-get install -qq clickhouse-server
- - apt-get install -qq python-pip python-dev
- - pip install demjson psutil robotframework http
- - pip install --upgrade setuptools
- - pip install --upgrade pyOpenSSL
- - pip install --upgrade certifi
- - pip install --upgrade ipaddress
- - pip install --upgrade urllib3
- - pip install --upgrade enum34
- - pip install --upgrade cpp-coveralls requests cryptography
-
- - luarocks install luacheck
- - luarocks install luacov
- - luarocks install luacov-coveralls
-
- cd /rspamd/build
- - umask 0000
- - set +e; RSPAMD_INSTALLROOT=/rspamd/install robot -x xunit.xml --exclude isbroken /rspamd/src/github.com/rspamd/rspamd/test/functional/cases; export RETURN_CODE=$?
- - cat log.html
+ - set +e
+ - RSPAMD_INSTALLROOT=/rspamd/install robot --xunit xunit.xml --exclude isbroken $CI_WORKSPACE/test/functional/cases; EXIT_CODE=$?
+ - set -e
+ # coveralls will not find git repo anyway, see above
+ - ln -s /bin/true /usr/local/bin/git
- coveralls --dump coverage.functional.dump
- - exit $RETURN_CODE
+ - exit $EXIT_CODE
send-coverage:
- image: gcc:5
+ image: rspamd/ci-ubuntu-test
secrets: [ coveralls_repo_token ]
- commands: |
- [ ! $DRONE_COMMIT_BRANCH = 'master' ] && exit 0
- apt-get update -qq || true
- apt-get install -qq python-pip python-dev
- pip install --upgrade setuptools
- pip install --upgrade pyOpenSSL
- pip install cpp-coveralls requests cryptography
- cd /rspamd/build
- [ ! -z $COVERALLS_REPO_TOKEN ] && /rspamd/src/github.com/rspamd/rspamd/test/functional/util/merge_coveralls.py --input coverage.functional.dump coverage.rspamd-test.dump unit_test_lua.json lua_coverage_report.json --output out.josn --token=$COVERALLS_REPO_TOKEN
+ commands:
+ - cd /rspamd/build
+ - $CI_WORKSPACE/test/functional/util/merge_coveralls.py --input coverage.functional.dump coverage.rspamd-test.dump unit_test_lua.json lua_coverage_report.json --output out.josn --token=$COVERALLS_REPO_TOKEN
+ when:
+ branch: master
+ # don't send coverage report for pull request
+ event: [push, tag]
+ send-test-log:
+ image: drillster/drone-email
+ from: noreply@rspamd.com
+ attachment: /rspamd/build/log.html
+ secrets: [email_host, email_username, email_password]
+ when:
+ status: failure