| 1 | # Parallel Travis jobs for Oil.  We delegate most logic to
 | 
| 2 | # services/toil-worker.sh.
 | 
| 3 | 
 | 
| 4 | # https://github.com/travis-ci/travis-ci/issues/1147
 | 
| 5 | # Might want to turn this on.
 | 
| 6 | 
 | 
| 7 | #branches:
 | 
| 8 | #  only:
 | 
| 9 | #    - master
 | 
| 10 | 
 | 
| 11 | 
 | 
| 12 | # Every job uses this deploy step.
 | 
| 13 | _publish_html: &publish_html
 | 
| 14 |   deploy:
 | 
| 15 |     # https://docs.travis-ci.com/user/deployment#uploading-files-and-skip_cleanup
 | 
| 16 |     # otherwise we can't zip up _tmp/toil, etc.
 | 
| 17 |     - provider: script
 | 
| 18 |       skip_cleanup: true
 | 
| 19 |       script: services/travis.sh publish-html
 | 
| 20 |       on:
 | 
| 21 |         branch: master
 | 
| 22 |     # duplicate block for testing on dev branches
 | 
| 23 |     - provider: script
 | 
| 24 |       skip_cleanup: true
 | 
| 25 |       script: services/travis.sh publish-html
 | 
| 26 |       on:
 | 
| 27 |         branch: dev/andy-27
 | 
| 28 |     # duplicate block for testing on dev branches
 | 
| 29 |     - provider: script
 | 
| 30 |       skip_cleanup: true
 | 
| 31 |       script: services/travis.sh publish-html
 | 
| 32 |       on:
 | 
| 33 |         branch: dev/andy-vb1
 | 
| 34 | 
 | 
| 35 | jobs:
 | 
| 36 |   include:
 | 
| 37 |     # Job for testing
 | 
| 38 |     #- name: dummy
 | 
| 39 |     #  # Travis's default is Ruby, but we don't need it.
 | 
| 40 |     #  language: minimal
 | 
| 41 |     #  script: services/toil-worker.sh run-dummy
 | 
| 42 | 
 | 
| 43 |     #  <<: *publish_html
 | 
| 44 | 
 | 
| 45 |     # Make a tarball to build oil.ovm.
 | 
| 46 |     - name: ovm-tarball
 | 
| 47 |       # Travis's default is Ruby, but we don't need it.
 | 
| 48 |       language: minimal
 | 
| 49 |       cache:
 | 
| 50 |         directories:
 | 
| 51 |           - _devbuild/cpython-full  # Python-2.x/ in the repo doesn't change much
 | 
| 52 |           - _deps/                  # re2c doesn't change much
 | 
| 53 | 
 | 
| 54 |       script: services/toil-worker.sh run-ovm-tarball
 | 
| 55 | 
 | 
| 56 |       # For building Python extensions like posix_.so and yajl.so.  We import
 | 
| 57 |       # them to build a tarball.
 | 
| 58 |       addons:
 | 
| 59 |         apt:
 | 
| 60 |           packages:
 | 
| 61 |             - python-dev
 | 
| 62 | 
 | 
| 63 |       <<: *publish_html
 | 
| 64 | 
 | 
| 65 |     # Run app unit tests against _bin/osh.  Similar to ovm-tarball.
 | 
| 66 |     #- name: app-tests
 | 
| 67 |     #  # Travis's default is Ruby, but we don't need it.
 | 
| 68 |     #  language: minimal
 | 
| 69 |     #  cache:
 | 
| 70 |     #    directories:
 | 
| 71 |     #      - _devbuild/cpython-full  # Python-2.x/ in the repo doesn't change much
 | 
| 72 |     #      - _deps/                  # re2c doesn't change much
 | 
| 73 | 
 | 
| 74 |     #  script: services/toil-worker.sh run-app-tests
 | 
| 75 | 
 | 
| 76 |     #  # For building Python extensions like posix_.so and yajl.so.  We import
 | 
| 77 |     #  # them to build a tarball.
 | 
| 78 |     #  addons:
 | 
| 79 |     #    apt:
 | 
| 80 |     #      packages:
 | 
| 81 |     #        - python-dev
 | 
| 82 | 
 | 
| 83 |     #  <<: *publish_html
 | 
| 84 | 
 | 
| 85 |     # Developer build that can run all spec tests.
 | 
| 86 |     #- name: dev-all-nix
 | 
| 87 |     #  language: nix
 | 
| 88 |     #  script: services/toil-worker.sh run-dev-all-nix
 | 
| 89 | 
 | 
| 90 |     #  <<: *publish_html
 | 
| 91 | 
 | 
| 92 |     # Low-dependency developer build.  Spec tests broken because we don't have
 | 
| 93 |     # exact versions of shells.
 | 
| 94 |     - name: dev-minimal
 | 
| 95 |       # https://docs.travis-ci.com/user/reference/xenial/#python-support
 | 
| 96 |       # It says Xenial has Python 2.7, 3.6, and 3.7 (?)
 | 
| 97 |       # We're not using language: python because that creates a virtualenv, which is
 | 
| 98 |       # specific to a Python version.  MyPy needs both in the same environment.
 | 
| 99 |       dist: xenial
 | 
| 100 |       language: minimal
 | 
| 101 |       cache:
 | 
| 102 |         apt: true
 | 
| 103 |         pip: true
 | 
| 104 |         directories:
 | 
| 105 |           - _deps/                  # re2c doesn't change much
 | 
| 106 | 
 | 
| 107 |       # Enable this to quickly test the deploy step at the end
 | 
| 108 |       env:
 | 
| 109 |         - TRAVIS_SKIP=
 | 
| 110 | 
 | 
| 111 |       addons:
 | 
| 112 |         apt:
 | 
| 113 |           packages:
 | 
| 114 |             # build/dev.sh ubuntu-deps
 | 
| 115 |             - python-dev
 | 
| 116 |             - gawk
 | 
| 117 |             - libreadline-dev
 | 
| 118 |             # test/spec.sh install-shells
 | 
| 119 |             - busybox-static
 | 
| 120 |             - mksh
 | 
| 121 |             - zsh
 | 
| 122 |               # since we're not using language: python
 | 
| 123 |             - python-pip
 | 
| 124 |             - python3-setuptools
 | 
| 125 |             - python3-pip
 | 
| 126 | 
 | 
| 127 |       install:
 | 
| 128 |         - pip install --user flake8 typing
 | 
| 129 |         # MyPy requires Python 3, but Oil requires Python 2.
 | 
| 130 |         - pip3 install --user mypy
 | 
| 131 |         # After this symlink is made, build/dev-shell.sh will modify $PATH to include it
 | 
| 132 |         - test/spec.sh link-busybox-ash
 | 
| 133 | 
 | 
| 134 |       script:
 | 
| 135 |         - services/toil-worker.sh run-dev-minimal
 | 
| 136 | 
 | 
| 137 |       notifications:
 | 
| 138 |         on_success: change
 | 
| 139 |         on_failure: change  # `always` will be the setting once code changes slow down
 | 
| 140 | 
 | 
| 141 |       <<: *publish_html
 | 
| 142 | 
 | 
| 143 |     - name: cpp
 | 
| 144 |       dist: bionic
 | 
| 145 |       cache:
 | 
| 146 |         apt: true
 | 
| 147 |         pip: true
 | 
| 148 |         directories:
 | 
| 149 |           - _deps/                  # re2c doesn't change much
 | 
| 150 | 
 | 
| 151 |       # Enable this to quickly test the deploy step at the end
 | 
| 152 |       env:
 | 
| 153 |         - TRAVIS_SKIP=
 | 
| 154 | 
 | 
| 155 |       addons:
 | 
| 156 |         apt:
 | 
| 157 |           packages:
 | 
| 158 |             - python3-pip
 | 
| 159 |               # for MyPy virtualenv
 | 
| 160 |             - python3-venv
 | 
| 161 |             - ninja-build
 | 
| 162 |               # for stable benchmarks
 | 
| 163 |             - valgrind
 | 
| 164 |               # the shell benchmarks compare shells
 | 
| 165 |             - busybox-static
 | 
| 166 |             - mksh
 | 
| 167 |             - zsh
 | 
| 168 | 
 | 
| 169 |       script:
 | 
| 170 |         - services/toil-worker.sh run-cpp
 | 
| 171 | 
 | 
| 172 |       <<: *publish_html
 | 
| 173 | 
 | 
| 174 |     - name: other-tests
 | 
| 175 |       dist: bionic
 | 
| 176 |       cache:
 | 
| 177 |         apt: true
 | 
| 178 |         pip: true
 | 
| 179 | 
 | 
| 180 |       addons:
 | 
| 181 |         apt:
 | 
| 182 |           packages:
 | 
| 183 |             - r-base-core
 | 
| 184 | 
 | 
| 185 |       script:
 | 
| 186 |         - services/toil-worker.sh run-other-tests
 | 
| 187 | 
 | 
| 188 |       <<: *publish_html
 |