forked from d11wtq/dockerpty
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
135 lines (99 loc) · 3.21 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# dockerpty: .travis.yml
#
# Copyright 2014 Chris Corbyn <chris@w3style.co.uk>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
language: python
python: [ "2.7" ]
before_install: |
# needed for the UML container
sudo apt-get install -qq -y slirp aufs-tools cgroup-lite
# prepare docker dir for aufs mount
sudo mkdir -p /var/lib/docker
# download usermode linux kernel for docker
curl -sLo linux https://github.com/jpetazzo/sekexe/raw/master/uml
chmod +x linux
# download docker
curl -sLo docker \
https://get.docker.io/builds/Linux/x86_64/docker-1.0.0
chmod +x docker
# ---------------------------------------------------------------------------
# create tests.sh script
cat > tests.sh <<'BASH'
#!/bin/bash
# go back to where we were invoked
cd $WORKDIR
save_and_shutdown() {
# save built for host result
echo $? > /tmp/build.status
# force clean shutdown
halt -f
}
# make sure we shut down cleanly
trap save_and_shutdown EXIT
# configure path to include /usr/local
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# can't do much without proc!
mount -t proc none /proc
# pseudo-terminal devices
mkdir -p /dev/pts
mount -t devpts none /dev/pts
# shared memory a good idea
mkdir -p /dev/shm
mount -t tmpfs none /dev/shm
# sysfs a good idea
mount -t sysfs none /sys
# pidfiles and such like
mkdir -p /var/run
mount -t tmpfs none /var/run
# takes the pain out of cgroups
cgroups-mount
# mount /var/lib/docker with a tmpfs
mount -t tmpfs none /var/lib/docker
# enable ipv4 forwarding for docker
echo 1 > /proc/sys/net/ipv4/ip_forward
# configure networking
ip addr add 127.0.0.1 dev lo
ip link set lo up
ip addr add 10.1.1.1/24 dev eth0
ip link set eth0 up
ip route add default via 10.1.1.254
# configure dns (google public)
mkdir -p /run/resolvconf
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
mount --bind /run/resolvconf/resolv.conf /etc/resolv.conf
# start docker backgrounded
((./docker -d >/dev/null 2>&1 &) &)
sleep 5
# activate virtualenv
source $HOME/virtualenv/python2.7/bin/activate
# run the build
py.test -q && behave -c
BASH
chmod +x tests.sh
# ---------------------------------------------------------------------------
# create run.sh script
cat > run.sh <<'BASH'
#!/bin/bash
# assume failure
echo 1 > /tmp/build.status
# run the build inside UML kernel
./linux quiet mem=2G rootfstype=hostfs rw \
eth0=slirp,,/usr/bin/slirp-fullbolt \
init=$(pwd)/tests.sh WORKDIR=$(pwd) HOME=$HOME
# grab the build result and use it
exit $(cat /tmp/build.status)
BASH
chmod +x run.sh
install: pip install -r requirements-dev.txt
script: ./run.sh