x-ccache-setup-steps: &ccache-setup-steps - export CCACHE_NOSTATS=1 - export CCACHE_SLOPPINESS="file_macro,include_file_mtime,include_file_ctime,time_macros,file_stat_matches" - export CC='ccache gcc-6' - export CXX='ccache g++-6' os: linux language: cpp env: global: - PYTHON2_VERSION="2.7.15" - PYTHON3_VERSION="3.6.7" # "3.7.1" after #29326 is fixed - PYTHON2_CACHE=$HOME/.ccache/py${PYTHON2_VERSION} - PYTHON3_CACHE=$HOME/.ccache/py${PYTHON3_VERSION} cache: ccache: true directories: - ${PYTHON2_CACHE} - ${PYTHON3_CACHE} jobs: include: - stage: "Compile" name: "Compile V8 (py2)" addons: apt: update: true sources: - ubuntu-toolchain-r-test packages: - g++-6 install: *ccache-setup-steps script: - pyenv global ${PYTHON2_VERSION} - ./configure - make -j2 -C out V=1 v8 - name: "Compile V8 (py3)" addons: apt: update: true sources: - ubuntu-toolchain-r-test packages: - g++-6 install: *ccache-setup-steps script: - pyenv global ${PYTHON3_VERSION} # - ./configure # workaround pending #25878 - python3 configure.py - make -j2 -C out V=1 v8 - name: "Compile Node.js (py2)" addons: apt: update: true sources: - ubuntu-toolchain-r-test packages: - g++-6 install: *ccache-setup-steps script: - pyenv global ${PYTHON2_VERSION} - ./configure - make -j2 V=1 - cp out/Release/node ${PYTHON2_CACHE} - cp out/Release/cctest ${PYTHON2_CACHE} - name: "Compile Node.js (py3)" addons: apt: update: true sources: - ubuntu-toolchain-r-test packages: - g++-6 install: *ccache-setup-steps script: - pyenv global ${PYTHON3_VERSION} # - ./configure # workaround pending #25878 - python3 configure.py - make -j2 V=1 - cp out/Release/node ${PYTHON3_CACHE} - cp out/Release/cctest ${PYTHON3_CACHE} - stage: "Tests" name: "Test JS Suites (py2)" install: - mkdir -p out/Release - cp ${PYTHON2_CACHE}/node out/Release/node script: - pyenv global ${PYTHON2_VERSION} - python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare default - name: "Test JS Suites (py3)" install: - mkdir -p out/Release - cp ${PYTHON3_CACHE}/node out/Release/node script: - pyenv global ${PYTHON3_VERSION} - python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare default - name: "Test C++ Suites (py2)" install: - export CCACHE_NOSTATS=1 - export CCACHE_SLOPPINESS="file_macro,include_file_mtime,include_file_ctime,time_macros,file_stat_matches" - export CC='ccache gcc' - export CXX='ccache g++' - mkdir -p out/Release - cp ${PYTHON2_CACHE}/node out/Release/node - ln -fs out/Release/node node - cp ${PYTHON2_CACHE}/cctest out/Release/cctest - touch config.gypi script: - pyenv global ${PYTHON2_VERSION} - out/Release/cctest - make -j1 V=1 test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp - python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare addons js-native-api node-api - name: "Test C++ Suites (py3)" install: - export CCACHE_NOSTATS=1 - export CCACHE_SLOPPINESS="file_macro,include_file_mtime,include_file_ctime,time_macros,file_stat_matches" - export CC='ccache gcc' - export CXX='ccache g++' - mkdir -p out/Release - cp ${PYTHON3_CACHE}/node out/Release/node - ln -fs out/Release/node node - cp ${PYTHON3_CACHE}/cctest out/Release/cctest - touch config.gypi script: - pyenv global ${PYTHON3_VERSION} - out/Release/cctest - make -j1 V=1 test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp - python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare addons js-native-api node-api - name: "Linter (py2)" language: node_js node_js: "node" install: - pyenv global ${PYTHON2_VERSION} - make lint-py-build || true script: - NODE=$(which node) make lint lint-py - name: "Linter (py3)" language: node_js node_js: "node" install: - pyenv global ${PYTHON3_VERSION} - make lint-py-build || true script: - NODE=$(which node) make lint lint-py - name: "First commit message adheres to guidelines at https://goo.gl/p2fr5Q" if: type = pull_request language: node_js node_js: "node" script: - if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then bash -x tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST}; fi allow_failures: - name: "Test C++ Suites (py3)" # allow_failures pending #29246