diff --git a/.travis.yml b/.travis.yml index a532b760e..3eefb8ec7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,95 +4,131 @@ group: travis_latest -language: python +jobs: + include: + - name: "Monkey Linux" + language: python + python: + - 3.7 + os: linux + vm: + size: x-large + env: + - PIP_CACHE_DIR=$HOME/.cache/pip PIPENV_CACHE_DIR=$HOME/.cache/pipenv LIBSODIUM_MAKE_ARGS=-j8 -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 -cache: - - pip: true - - npm: true - - directories: - - "$HOME/.npm" - - $PIP_CACHE_DIR - - $PIPENV_CACHE_DIR + install: + # Python + - nproc + - pip install pipenv --upgrade -python: -- 3.7 + # 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 -os: linux -vm: - size: x-large + # 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 -install: -# Python -- nproc -- pip install pipenv --upgrade -# 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: + # check python code + ## check syntax errors and fail the build if any are found. + - flake8 . -# node + npm + eslint -- node --version -- npm --version -- nvm --version -- nvm install 16 -- nvm use node -- npm i -g eslint -- node --version -- npm --version + ## check import order + - python -m isort ./monkey --check-only -# 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 + ## check that all python is properly formatted. fail otherwise. + - python -m black --check . -script: -# Check Python code -## Check syntax errors and fail the build if any are found. -- flake8 . + ## check that there is no dead python code + - python -m vulture . -## Check import order -- python -m isort ./monkey --check-only + ## run unit tests and generate coverage data + - cd monkey # this is our source dir + - pip install pytest-xdist + - python -m pytest -n auto --cov=. # have to use `python -m pytest` instead of `pytest` to add "{$builddir}/monkey/monkey" to sys.path. -## Check that all python is properly formatted. Fail otherwise. -- python -m black --check . + # 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 -## Check that there is no dead python code -- python -m vulture . + # build documentation + - cd $TRAVIS_BUILD_DIR/docs + - ../hugo --verbose --environment staging -## Run unit tests and generate coverage data -- cd monkey # This is our source dir -- pip install pytest-xdist -- python -m pytest -n auto --cov=. # Have to use `python -m pytest` instead of `pytest` to add "{$builddir}/monkey/monkey" to sys.path. + # 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 -# 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 + 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) -# Build documentation -- cd $TRAVIS_BUILD_DIR/docs -- ../hugo --verbose --environment staging + - name: "Monkey Windows" + language: bash + os: windows + vm: + size: x-large + before_install: + - choco install python --version=3.7.7 + - 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 + - pip install pipenv --upgrade + # 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 -# 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 + script: + ## run unit tests and generate coverage data + - cd monkey # this is our source dir + - pip install pytest-xdist + - python -m pytest -n auto -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) notifications: slack: # Notify to slack