123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- 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
- ## We don't use the build matrix cross-product, because it makes too many jobs
- ## Instead, we list each job under matrix: include:
- env:
- global:
- ## Turn off tor's sandbox in chutney, until we fix sandbox errors that are
- ## triggered by Ubuntu Xenial and Bionic. See #32722.
- - CHUTNEY_TOR_SANDBOX="0"
- matrix:
- ## This matrix entry is required, but it doesn't actually create any jobs
- ## by itself. All jobs are created by matrix: include: entries
- ##
- ## The TOR env var should be kept in sync with the Linux tor version in
- ## the addons section below
- ## We use the basic-min network by default, to reduce load and increase
- ## reliability
- - TOR="master-nightly" NETWORK_FLAVOUR="basic-min"
- 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
- ##
- ## We run 0.2.9 on Xenial, because Bionic has an OpenSSL version mismatch
- - dist: xenial
- 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-bionic main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.3.5-nightly" NETWORK_FLAVOUR="basic-min"
- - addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.0.x-bionic main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.4.0-nightly" NETWORK_FLAVOUR="basic-min"
- ## The current stable release is 0.4.1
- - addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org bionic 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.1 and 0.4.2 nightlies
- - addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.1.x-bionic main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.4.1-nightly" NETWORK_FLAVOUR="basic-min"
- - addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.2.x-bionic main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.4.2-nightly" NETWORK_FLAVOUR="basic-min"
- ## Test all supported python releases
- ## Pre-installed in macOS
- - os: osx
- language: c
- python:
- ## python 3 is already installed, under this name
- env: PYTHON="python3" TOR="stable-release"
- ## Pre-installed in Travis Bionic:
- ## https://docs.travis-ci.com/user/reference/bionic/#python-support
- ## End of Life: 1 January 2020
- ## https://www.python.org/dev/peps/pep-0373/#update
- - 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"
- ## Extra Installs
- ## End of Life: October 2024
- ## https://www.python.org/dev/peps/pep-0569/#lifespan
- - python: "3.8"
- ## Python 3.9
- ## Travis Dev Package: ????
- ## (Add 3.9-dev)
- ## Stable: 10 October 2020
- ## (Switch from 3.9-dev to 3.9, and check for {3.10,4.0}-dev)
- ## End of Life: October 2025
- ## https://www.python.org/dev/peps/pep-0596/#lifespan
- #- python: "3.9-dev"
- - python: "nightly"
- ## PyPy versions
- ## PyPy isn't packaged for Travis Bionic yet
- ## Tor master doesn't work on Travis Xenial, because it only has
- ## OpenSSL 1.1.0
- ## Pypy 2
- ## 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.
- - python: "pypy"
- dist: xenial
- addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.2.x-xenial main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.4.2-nightly" NETWORK_FLAVOUR="basic-min"
- ## PyPy does not have documented end of life dates
- - python: "pypy3"
- dist: xenial
- addons:
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-0.4.2.x-xenial main'
- key_url: 'https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc'
- packages:
- - shellcheck
- - tor
- env: TOR="0.4.2-nightly" NETWORK_FLAVOUR="basic-min"
- ## 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"
- ## (Linux only) Use the Ubuntu Bionic Linux Image
- dist: bionic
- ## (macOS only) Use a recent macOS image
- ## See https://docs.travis-ci.com/user/reference/osx#os-x-version
- ## Default is Xcode 9.4 on macOS 10.13 as of October 2019
- ## Recent is Xcode 11.2 on macOS 10.14 as of October 2019
- osx_image: xcode11.2
- ## Download our dependencies
- addons:
- ## (Linux only)
- apt:
- sources:
- - sourceline: 'deb https://deb.torproject.org/torproject.org tor-nightly-master-bionic 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
- before_install:
- ## Set pipefail: we may use pipes in future
- - set -o pipefail || echo "pipefail failed"
- 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
- ## Use the default spelling for python, unless it is overridden
- - export PYTHON=${PYTHON:-python}
- - $PYTHON --version
- - if command -v shellcheck ; then shellcheck --version; fi
- - tor --version
- ## List the permissions on chutney and chutney/net
- - ls -al . net
- 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 permissions on chutney and chutney/net
- - ls -al . net
- ## List the contents of net/nodes
- - ls -lR net/nodes/
- ## Dump the config
- - cat net/nodes/000a*/torrc
- ## 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
|