mirror of
https://github.com/certbot/certbot.git
synced 2026-08-07 13:54:27 +02:00
This prevents the integration tests from getting run before the boulder processes have finished booting in most cases. There's still some small races with debug ports going up before RPC ports, but this flushes the big ones (specifically, the WFE ports), and the boulder devs going to fix the rest in integration-test.py over time. This also makes boulder-start.sh a blocking operation. Now the TravisCI integration tests no longer requires boulder-start.sh, we can let the other priority of being easier for users to control (that is, basically, make it easy to Ctrl-C) take over. That plus the idea that self-daemonizing code is tricky to get right, especially over multiple platforms led me to not trying to get start.py to make itself asynchronous. Most of this change is code movement in order to allow developers to run boulder-start.sh once and boulder-integration.sh many times while also not duplicating that code in order to run the tests in TravisCI. I'm not a huge fan of both the letsencrypt's shell scripts and boulder's integration-test.py having hard-coded file dependencies in the other's repo. This, however, seemed like the smallest path to code that would spuriously break less. All the designs I was able to come up that were maybe smaller changes either had the "starts tests before the servers are up" problem or with a "each repo uses another repo's test code file" problem. Those problem on top of the "it's a bigger change" problem led me here.
76 lines
1.8 KiB
YAML
76 lines
1.8 KiB
YAML
language: python
|
|
|
|
services:
|
|
- rabbitmq
|
|
- mariadb
|
|
|
|
# http://docs.travis-ci.com/user/ci-environment/#CI-environment-OS
|
|
# gimme has to be kept in sync with Boulder's Go version setting in .travis.yml
|
|
before_install:
|
|
- 'dpkg -s libaugeas0'
|
|
- '[ "xxx$BOULDER_INTEGRATION" = "xxx" ] || eval "$(gimme 1.5.1)"'
|
|
|
|
# using separate envs with different TOXENVs creates 4x1 Travis build
|
|
# matrix, which allows us to clearly distinguish which component under
|
|
# test has failed
|
|
env:
|
|
global:
|
|
- GOPATH=/tmp/go
|
|
- PATH=$GOPATH/bin:$PATH
|
|
matrix:
|
|
- TOXENV=py26 BOULDER_INTEGRATION=1
|
|
- TOXENV=py27 BOULDER_INTEGRATION=1
|
|
- TOXENV=lint
|
|
- TOXENV=cover
|
|
|
|
|
|
# Only build pushes to the master branch, PRs, and branches beginning with
|
|
# `test-`. This reduces the number of simultaneous Travis runs, which speeds
|
|
# turnaround time on review since there is a cap of 5 simultaneous runs.
|
|
branches:
|
|
only:
|
|
- master
|
|
- /^test-.*$/
|
|
|
|
# container-based infrastructure
|
|
sudo: false
|
|
|
|
addons:
|
|
# make sure simplehttp simple verification works (custom /etc/hosts)
|
|
hosts:
|
|
- le.wtf
|
|
mariadb: "10.0"
|
|
apt:
|
|
sources:
|
|
- augeas
|
|
packages: # keep in sync with bootstrap/ubuntu.sh and Boulder
|
|
- python
|
|
- python-dev
|
|
- python-virtualenv
|
|
- gcc
|
|
- dialog
|
|
- libaugeas0
|
|
- libssl-dev
|
|
- libffi-dev
|
|
- ca-certificates
|
|
# For letsencrypt-nginx integration testing
|
|
- nginx-light
|
|
- openssl
|
|
# For Boulder integration testing
|
|
- rsyslog
|
|
|
|
install: "travis_retry pip install tox coveralls"
|
|
script: 'travis_retry tox && ([ "xxx$BOULDER_INTEGRATION" = "xxx" ] || ./tests/travis-integration.sh)'
|
|
|
|
after_success: '[ "$TOXENV" == "cover" ] && coveralls'
|
|
|
|
notifications:
|
|
email: false
|
|
irc:
|
|
channels:
|
|
- "chat.freenode.net#letsencrypt"
|
|
on_success: never
|
|
on_failure: always
|
|
use_notice: true
|
|
skip_join: true
|