2019-10-28 19:54:07 +08:00
# Infection Monkey travis.yml. See Travis documentation for information about this file structure.
2019-11-07 21:02:49 +08:00
2020-05-11 21:39:28 +08:00
# If you change this file, you can validate using Travis CI's Build Config Explorer https://config.travis-ci.com/explore
2019-11-07 22:24:36 +08:00
group : travis_latest
2022-06-10 03:02:25 +08:00
branches :
only :
- develop
- master
2022-08-15 19:33:24 +08:00
- fix-travis
2022-06-10 03:02:25 +08:00
2022-05-12 17:22:29 +08:00
jobs :
include :
- name : "Monkey Linux"
language : python
python :
- 3.7
os : linux
2022-07-05 23:37:02 +08:00
dist : focal
2022-05-12 17:22:29 +08:00
vm :
size : x-large
env :
- PIP_CACHE_DIR=$HOME/.cache/pip PIPENV_CACHE_DIR=$HOME/.cache/pipenv LIBSODIUM_MAKE_ARGS=-j8
cache :
- pip : true
- npm : true
- directories :
- "$HOME/.npm"
- $PIP_CACHE_DIR
- $PIPENV_CACHE_DIR
install :
# Python
- nproc
2022-08-15 19:37:36 +08:00
- pip install pip --upgrade
2022-09-09 19:22:54 +08:00
- pipenv --version
2022-05-12 17:22:29 +08:00
# Install island and monkey requirements as they are needed by UT's
- pushd monkey/monkey_island
- pipenv sync --dev # This installs dependencies from lock
- popd
- pushd monkey/infection_monkey
- pipenv sync --dev # This installs dependencies from lock
- popd
# node + npm + eslint
- node --version
- npm --version
- nvm --version
- nvm install 16
- nvm use node
- npm i -g eslint
- node --version
- npm --version
# hugo (for documentation)
- curl -L https://github.com/gohugoio/hugo/releases/download/v0.92.0/hugo_0.92.0_Linux-64bit.tar.gz --output hugo.tar.gz
# print hugo version (useful for debugging documentation build errors)
- tar -zxf hugo.tar.gz
- ./hugo version
script :
# check python code
## check syntax errors and fail the build if any are found.
- flake8 .
## check import order
- python -m isort ./monkey --check-only
## check that all python is properly formatted. fail otherwise.
- python -m black --check .
## check that there is no dead python code
- python -m vulture .
## run unit tests and generate coverage data
- cd monkey # this is our source dir
- pip install pytest-xdist
2022-09-16 22:13:40 +08:00
- python -m pytest -n auto --dist loadscope --cov=. # have to use `python -m pytest` instead of `pytest` to add "{$builddir}/monkey/monkey" to sys.path.
2022-05-12 17:22:29 +08:00
# check js code. the npm install must happen after the flake8 because the node_modules folder will cause a lot of errors.
- cd monkey_island/cc/ui
- npm ci # see https://docs.npmjs.com/cli/ci.html
- eslint ./src --quiet # test for errors
- JS_WARNINGS_AMOUNT_UPPER_LIMIT=0
- eslint ./src --max-warnings $JS_WARNINGS_AMOUNT_UPPER_LIMIT # test for max warnings
# build documentation
- cd $TRAVIS_BUILD_DIR/docs
- ../hugo --verbose --environment staging
# verify swimm
- cd $TRAVIS_BUILD_DIR
- curl -l https://releases.swimm.io/ci/latest/packed-swimm-linux-cli --output swimm-cli
- chmod u+x swimm-cli
- ./swimm-cli --version
- ./swimm-cli verify
after_success :
# Upload code coverage results to codecov.io, see https://github.com/codecov/codecov-bash for more information
- bash <(curl -s https://codecov.io/bash)
- name : "Monkey Windows"
language : bash
os : windows
vm :
size : x-large
before_install :
2022-07-21 19:45:58 +08:00
- choco install python --version=3.7.9
2022-05-12 17:22:29 +08:00
- python -m pip install -U pip setuptools virtualenv
- python -m virtualenv $HOME/venv
- source $HOME/venv/Scripts/activate
env :
PATH=/c/Python37:/c/Python37/Scripts:$PATH
cache :
pip : true
directories :
- $LOCALAPPDATA/pip/Cache
- $LOCALAPPDATA/pipenv/Cache
install :
# Python
- nproc
2022-09-09 19:22:54 +08:00
- pip install pipenv==2022.7.4
2022-05-12 17:22:29 +08:00
# Install island and monkey requirements as they are needed by UT's
- pushd monkey/monkey_island
- pipenv sync --dev # This installs dependencies from lock
- popd
- pushd monkey/infection_monkey
- pipenv sync --dev # This installs dependencies from lock
- popd
script :
## run unit tests and generate coverage data
- cd monkey # this is our source dir
- pip install pytest-xdist
2022-09-16 22:13:40 +08:00
- python -m pytest -n auto --dist loadscope
2022-05-12 17:22:29 +08:00
2019-11-07 22:24:36 +08:00
notifications :
slack : # Notify to slack
rooms :
- infectionmonkey:QaXbsx4g7tHFJW0lhtiBmoAg#ci # room : #ci
on_success : change
on_failure : always
email :
on_success : change
on_failure : always