language: python # The default python version on Travis is 2.7 # But we add this line to show the python version in the Travis UI python: "2.7" os: - linux ## We also use macOS for some networks matrix: # include creates Linux, python 2.7, tor master builds by default # we use tor master to catch tor issues before stable releases # the key(s) in each item override these defaults include: ## Test different network flavours ## We're using the networks from tor master's "make test-network-all" ## ## We need to use macOS to test IPv6 networks, because Travis Linux doesn't ## support IPv6. But macOS is tricky: ## - We use the default python version on macOS, which is currently 2.7. ## (But we don't show the version, because Travis might change it ## without us noticing.) ## - We use language: c, because language: python fails on Travis macOS. ## - We get the tor version in the homebrew cache on the macOS image. ## The latest tor version in homebrew is on this page: ## https://formulae.brew.sh/formula/tor ## The Travis version might be slightly older. - env: TOR="master-nightly" NETWORK_FLAVOUR="bridges-min" - env: TOR="master-nightly" NETWORK_FLAVOUR="hs-v2-min" - env: TOR="master-nightly" NETWORK_FLAVOUR="hs-v3-min" - env: TOR="master-nightly" NETWORK_FLAVOUR="single-onion-v23" - env: TOR="stable-release" NETWORK_FLAVOUR="bridges+ipv6-min" os: osx language: c python: ## The IPv6 exit test doesn't actually require IPv6, see #30182. ## But we'll keep this test, because it does test IPv6 exit config. - env: TOR="master-nightly" NETWORK_FLAVOUR="ipv6-exit-min" - env: TOR="stable-release" NETWORK_FLAVOUR="hs-v23-ipv6-md" os: osx language: c python: ## v3 onion service IPv6 tests - env: TOR="stable-release" NETWORK_FLAVOUR="single-onion-v23-ipv6-md" os: osx language: c python: ## Test all supported and available tor versions on Linux ## If the deb.torproject.org repositories are removed, we will fall back to ## Ubuntu security's tor version (currently 0.2.9.14). We might want to ## automatically fail the job if we can't get a newer tor, see #29741. ## The current tor versions in Ubuntu are on this page: ## https://packages.ubuntu.com/search?keywords=tor&searchon=names&exact=1 - addons: apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.2.9.x-xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor env: TOR="0.2.9-nightly" NETWORK_FLAVOUR="basic-min" - addons: apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.3.5.x-xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor env: TOR="0.3.5-nightly" NETWORK_FLAVOUR="basic-min" ## The current stable release is 0.4.0 - addons: apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor env: TOR="stable-release" NETWORK_FLAVOUR="basic-min" ## We also have 0.4.0 and 0.4.1 nightlies - addons: apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.0.x-xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor env: TOR="0.4.0-nightly" NETWORK_FLAVOUR="basic-min" - addons: apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.1.x-xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor env: TOR="0.4.1-nightly" NETWORK_FLAVOUR="basic-min" ## Test all supported python releases ## Pre-installed in Travis xenial: ## https://docs.travis-ci.com/user/reference/xenial/#python-support ## End of Life: 1 January 2020 ## https://www.python.org/dev/peps/pep-0373/#id2 - python: "2.7" ## End of Life: December 2021 ## https://www.python.org/dev/peps/pep-0494/#lifespan - python: "3.6" ## End of Life: June 2023 ## https://www.python.org/dev/peps/pep-0537/#lifespan - python: "3.7" ## Stable: 20 October 2019 ## (Switch from 3.8-dev to 3.8, and check for 3.9-dev) ## End of Life: October 2024 ## https://www.python.org/dev/peps/pep-0569/#lifespan - python: "3.8-dev" - python: "nightly" # PyPy versions ## End of Life: "forever" ## http://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-support-python2 ## But chutney can decide not to support python 2 after 1 Jan 2020. ## Travis Xenial does not support pypy2.7 #- python: "pypy2.7" ## PyPy does not have documented end of life dates - python: "pypy3.5" ## PyPy 3.6 is currently in alpha ## Travis Xenial does not support pypy3.6-dev yet? #- python: "pypy3.6-dev" ## Uncomment to allow the build to report success (with non-required ## sub-builds continuing to run) if all required sub-builds have ## succeeded. This is somewhat buggy currently: it can cause ## duplicate notifications and prematurely report success if a ## single sub-build has succeeded. See ## https://github.com/travis-ci/travis-ci/issues/1696 #fast_finish: true ## These builds fail in Travis at the moment #allow_failures: # - env: TOR="master-nightly" NETWORK_FLAVOUR="basic-min" ## We don't need sudo. (The "apt:" stanza after this allows us to not need ## sudo; otherwise, we would need it for getting dependencies.) sudo: false ## (Linux only) Use the Ubuntu Xenial Linux Image ## deb.torproject.org doesn't support Trusty any more dist: xenial ## (OSX only) Use the default OSX image ## See https://docs.travis-ci.com/user/reference/osx#os-x-version ## Default is Xcode 9.4 on macOS 10.13 as of August 2018 #osx_image: xcode9.4 ## The TOR env var should be kept in sync with the Linux tor version below ## We use the basic-min network by default, to reduce load and increase ## reliability env: - TOR="master-nightly" NETWORK_FLAVOUR="basic-min" ## Download our dependencies addons: ## (Linux only) apt: sources: - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-master-xenial main' key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc' packages: - shellcheck - tor ## (macOS only) homebrew: packages: - shellcheck - tor # See ticket #30928 for more information. This key should be removed at # some point to speed up builds. update: true install: ## Chutney has no dependencies, apart from tor ## List installed package versions - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then dpkg-query --show; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew list --versions; fi - python --version - if command -v shellcheck ; then shellcheck --version; fi - tor --version script: ## Basic tests - if command -v shellcheck ; then tests/shellcheck-tests.sh; fi - tests/unit-tests.sh ## Quick smoke test - tools/test-network.sh --dry-run ## Now, allow one failure for each test (--allow-failures 1) - export CHUTNEY_ALLOW_FAILURES=1 ## Different data directory - tools/test-network.sh --net-dir "$(mktemp -d)" ## IP address handling - tools/test-network.sh --ipv4 "127.0.0.1" --ipv6 "[::1]" ## Offline mode - tools/test-network.sh --offline ## --data fails on python3, and on some tor versions ## We'll fix this issue in #30071 #- FIVE_MEGABYTES=$((5*1024*1024)) #- tools/test-network.sh --data "$FIVE_MEGABYTES" --connections 2 --rounds 2 --hs-multi-client 1 --start-time 130 --bootstrap-time 70 --stop-time 10 after_failure: ## List the contents of net/nodes - ls -lR net/nodes/ ## Dump the important directory documents #- cat net/nodes/000a*/cached-certs - cat net/nodes/000a*/cached-consensus - cat net/nodes/000a*/cached-descriptors* #- cat net/nodes/000a*/cached-extrainfo* - cat net/nodes/000a*/cached-microdesc-consensus - cat net/nodes/000a*/cached-microdescs* #- cat net/nodes/000a*/key-pinning-journal #- cat net/nodes/000a*/router-stability #- cat net/nodes/00*a*/sr-state #- cat net/nodes/00*a*/state - for f in net/nodes/00*a*/v3-status-votes ; do echo "$f"; cat "$f"; done - for f in net/nodes/00*a*/unparseable-descs/* ; do echo "$f"; cat "$f"; done ## And repeat the warnings at the end - tools/test-network.sh --only-warnings notifications: irc: channels: - "irc.oftc.net#tor-ci" template: - "%{repository} %{branch} %{commit} - %{author}: %{commit_subject}" - "Build #%{build_number} %{result}. Details: %{build_url}" on_success: change on_failure: change email: on_success: never on_failure: change