Skip to content

Commit 2116ae0

Browse files
authored
Docker travis for ITs (#606)
Fast build - without integration tests. ITs - against different docker versions.
1 parent 92e32a6 commit 2116ae0

File tree

6 files changed

+418
-5
lines changed

6 files changed

+418
-5
lines changed

.travis.yml

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,40 @@
1+
sudo: required
2+
dist: trusty
13
language: java
4+
5+
services:
6+
- docker
7+
28
jdk:
39
- oraclejdk7
10+
11+
env:
12+
global:
13+
- DOCKER_TLS_VERIFY=""
14+
15+
matrix:
16+
- repo="main" DOCKER_HOST="tcp://127.0.0.1:2375" DOCKER_VERSION="1.11.2-0~trusty" FAST_BUILD=true
17+
- repo="main" DOCKER_HOST="tcp://127.0.0.1:2375" DOCKER_VERSION="1.11.2-0~trusty"
18+
- repo="main" DOCKER_HOST="unix:///var/run/docker.sock" DOCKER_VERSION="1.11.2-0~trusty" DEPLOY=true
19+
- repo="main" DOCKER_HOST="unix:///var/run/docker.sock" DOCKER_VERSION="1.10.3-0~trusty"
20+
- repo="testing" DOCKER_HOST="tcp://127.0.0.1:2375"
21+
- repo="testing" DOCKER_HOST="unix:///var/run/docker.sock"
22+
- repo="experimental" DOCKER_HOST="tcp://127.0.0.1:2375"
23+
- repo="experimental" DOCKER_HOST="unix:///var/run/docker.sock"
24+
25+
cache:
26+
directories:
27+
- $HOME/.travis_cache
28+
# - $HOME/.m2 install would pollute it
29+
430
before_install:
5-
- pip install --user codecov
31+
- pip install --user codecov
32+
- ./travis-before-install.sh
33+
34+
script: if [ "${FAST_BUILD}" == true ]; then mvn package ; else mvn verify; fi
35+
636
after_success:
7-
- ./travis-after-success.sh
37+
- ./travis-after-success.sh
38+
39+
after_script:
40+
- sudo cat /var/log/upstart/docker.log

get-docker-com.sh

Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
#!/bin/sh
2+
set -e
3+
#
4+
# This script is meant for quick & easy install via:
5+
# 'curl -sSL https://get.docker.com/ | sh'
6+
# or:
7+
# 'wget -qO- https://get.docker.com/ | sh'
8+
#
9+
# For test builds (ie. release candidates):
10+
# 'curl -fsSL https://test.docker.com/ | sh'
11+
# or:
12+
# 'wget -qO- https://test.docker.com/ | sh'
13+
#
14+
# For experimental builds:
15+
# 'curl -fsSL https://experimental.docker.com/ | sh'
16+
# or:
17+
# 'wget -qO- https://experimental.docker.com/ | sh'
18+
#
19+
# Docker Maintainers:
20+
# To update this script on https://get.docker.com,
21+
# use hack/release.sh during a normal release,
22+
# or the following one-liner for script hotfixes:
23+
# aws s3 cp --acl public-read hack/install.sh s3://get.docker.com/index
24+
#
25+
26+
url="https://get.docker.com/"
27+
apt_url="https://apt.dockerproject.org"
28+
yum_url="https://yum.dockerproject.org"
29+
gpg_fingerprint="58118E89F3A912897C070ADBF76221572C52609D"
30+
31+
key_servers="
32+
ha.pool.sks-keyservers.net
33+
pgp.mit.edu
34+
keyserver.ubuntu.com
35+
"
36+
37+
command_exists() {
38+
command -v "$@" > /dev/null 2>&1
39+
}
40+
41+
semverParse() {
42+
major="${1%%.*}"
43+
minor="${1#$major.}"
44+
minor="${minor%%.*}"
45+
patch="${1#$major.$minor.}"
46+
patch="${patch%%[-.]*}"
47+
}
48+
49+
do_install() {
50+
case "$(uname -m)" in
51+
*64)
52+
;;
53+
*)
54+
cat >&2 <<-'EOF'
55+
Error: you are not using a 64bit platform.
56+
Docker currently only supports 64bit platforms.
57+
EOF
58+
exit 1
59+
;;
60+
esac
61+
62+
user="$(id -un 2>/dev/null || true)"
63+
64+
sh_c='sh -c'
65+
if [ "$user" != 'root' ]; then
66+
if command_exists sudo; then
67+
sh_c='sudo -E sh -c'
68+
elif command_exists su; then
69+
sh_c='su -c'
70+
else
71+
cat >&2 <<-'EOF'
72+
Error: this installer needs the ability to run commands as root.
73+
We are unable to find either "sudo" or "su" available to make this happen.
74+
EOF
75+
exit 1
76+
fi
77+
fi
78+
79+
curl=''
80+
if command_exists curl; then
81+
curl='curl -sSL'
82+
elif command_exists wget; then
83+
curl='wget -qO-'
84+
elif command_exists busybox && busybox --list-modules | grep -q wget; then
85+
curl='busybox wget -qO-'
86+
fi
87+
88+
# check to see which repo they are trying to install from
89+
if [ -z "$repo" ]; then
90+
repo='main'
91+
if [ "https://test.docker.com/" = "$url" ]; then
92+
repo='testing'
93+
elif [ "https://experimental.docker.com/" = "$url" ]; then
94+
repo='experimental'
95+
fi
96+
fi
97+
98+
# perform some very rudimentary platform detection
99+
lsb_dist=''
100+
dist_version=''
101+
if command_exists lsb_release; then
102+
lsb_dist="$(lsb_release -si)"
103+
fi
104+
if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
105+
lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
106+
fi
107+
if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
108+
lsb_dist='debian'
109+
fi
110+
if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
111+
lsb_dist='fedora'
112+
fi
113+
if [ -z "$lsb_dist" ] && [ -r /etc/oracle-release ]; then
114+
lsb_dist='oracleserver'
115+
fi
116+
if [ -z "$lsb_dist" ]; then
117+
if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then
118+
lsb_dist='centos'
119+
fi
120+
fi
121+
if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then
122+
lsb_dist="$(. /etc/os-release && echo "$ID")"
123+
fi
124+
125+
lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
126+
127+
case "$lsb_dist" in
128+
129+
ubuntu)
130+
if command_exists lsb_release; then
131+
dist_version="$(lsb_release --codename | cut -f2)"
132+
fi
133+
if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then
134+
dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
135+
fi
136+
;;
137+
138+
debian)
139+
dist_version="$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')"
140+
case "$dist_version" in
141+
8)
142+
dist_version="jessie"
143+
;;
144+
7)
145+
dist_version="wheezy"
146+
;;
147+
esac
148+
;;
149+
150+
oracleserver)
151+
# need to switch lsb_dist to match yum repo URL
152+
lsb_dist="oraclelinux"
153+
dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
154+
;;
155+
156+
fedora|centos)
157+
dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
158+
;;
159+
160+
*)
161+
if command_exists lsb_release; then
162+
dist_version="$(lsb_release --codename | cut -f2)"
163+
fi
164+
if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
165+
dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
166+
fi
167+
;;
168+
169+
170+
esac
171+
172+
173+
# Run setup for each distro accordingly
174+
case "$lsb_dist" in
175+
ubuntu|debian)
176+
export DEBIAN_FRONTEND=noninteractive
177+
178+
did_apt_get_update=
179+
apt_get_update() {
180+
if [ -z "$did_apt_get_update" ]; then
181+
( set -x; $sh_c 'sleep 3; apt-get update' )
182+
did_apt_get_update=1
183+
fi
184+
}
185+
186+
# aufs is preferred over devicemapper; try to ensure the driver is available.
187+
if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
188+
if uname -r | grep -q -- '-generic' && dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2>/dev/null; then
189+
kern_extras="linux-image-extra-$(uname -r) linux-image-extra-virtual"
190+
191+
apt_get_update
192+
( set -x; $sh_c 'sleep 3; apt-get install -y -q '"$kern_extras" ) || true
193+
194+
if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
195+
echo >&2 'Warning: tried to install '"$kern_extras"' (for AUFS)'
196+
echo >&2 ' but we still have no AUFS. Docker may not work. Proceeding anyways!'
197+
( set -x; sleep 10 )
198+
fi
199+
else
200+
echo >&2 'Warning: current kernel is not supported by the linux-image-extra-virtual'
201+
echo >&2 ' package. We have no AUFS support. Consider installing the packages'
202+
echo >&2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'
203+
( set -x; sleep 10 )
204+
fi
205+
fi
206+
207+
# install apparmor utils if they're missing and apparmor is enabled in the kernel
208+
# otherwise Docker will fail to start
209+
if [ "$(cat /sys/module/apparmor/parameters/enabled 2>/dev/null)" = 'Y' ]; then
210+
if command -v apparmor_parser >/dev/null 2>&1; then
211+
echo 'apparmor is enabled in the kernel and apparmor utils were already installed'
212+
else
213+
echo 'apparmor is enabled in the kernel, but apparmor_parser missing'
214+
apt_get_update
215+
( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )
216+
fi
217+
fi
218+
219+
if [ ! -e /usr/lib/apt/methods/https ]; then
220+
apt_get_update
221+
( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )
222+
fi
223+
if [ -z "$curl" ]; then
224+
apt_get_update
225+
( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )
226+
curl='curl -sSL'
227+
fi
228+
(
229+
set -x
230+
for key_server in $key_servers ; do
231+
$sh_c "apt-key adv --keyserver hkp://${key_server}:80 --recv-keys ${gpg_fingerprint}" && break
232+
done
233+
$sh_c "apt-key adv -k ${gpg_fingerprint} >/dev/null"
234+
$sh_c "mkdir -p /etc/apt/sources.list.d"
235+
$sh_c "echo deb [arch=$(dpkg --print-architecture)] ${apt_url}/repo ${lsb_dist}-${dist_version} ${repo} > /etc/apt/sources.list.d/docker.list"
236+
$sh_c 'sleep 3; apt-get update'
237+
if [ -z "$DOCKER_VERSION" ]; then
238+
$sh_c 'apt-get -o Dpkg::Options::="--force-confnew" install -y -q docker-engine'
239+
else
240+
$sh_c "apt-get -o Dpkg::Options::=\"--force-confnew\" install -y -q docker-engine=$DOCKER_VERSION"
241+
fi
242+
)
243+
exit 0
244+
;;
245+
246+
fedora|centos|oraclelinux)
247+
$sh_c "cat >/etc/yum.repos.d/docker-${repo}.repo" <<-EOF
248+
[docker-${repo}-repo]
249+
name=Docker ${repo} Repository
250+
baseurl=${yum_url}/repo/${repo}/${lsb_dist}/${dist_version}
251+
enabled=1
252+
gpgcheck=1
253+
gpgkey=${yum_url}/gpg
254+
EOF
255+
if [ "$lsb_dist" = "fedora" ] && [ "$dist_version" -ge "22" ]; then
256+
(
257+
set -x
258+
$sh_c 'sleep 3; dnf -y -q install docker-engine'
259+
)
260+
else
261+
(
262+
set -x
263+
$sh_c 'sleep 3; yum -y -q install docker-engine'
264+
)
265+
fi
266+
exit 0
267+
;;
268+
gentoo)
269+
if [ "$url" = "https://test.docker.com/" ]; then
270+
# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
271+
cat >&2 <<-'EOF'
272+
273+
You appear to be trying to install the latest nightly build in Gentoo.'
274+
The portage tree should contain the latest stable release of Docker, but'
275+
if you want something more recent, you can always use the live ebuild'
276+
provided in the "docker" overlay available via layman. For more'
277+
instructions, please see the following URL:'
278+
279+
https://github.com/tianon/docker-overlay#using-this-overlay'
280+
281+
After adding the "docker" overlay, you should be able to:'
282+
283+
emerge -av =app-emulation/docker-9999'
284+
285+
EOF
286+
exit 1
287+
fi
288+
289+
(
290+
set -x
291+
$sh_c 'sleep 3; emerge app-emulation/docker'
292+
)
293+
exit 0
294+
;;
295+
esac
296+
297+
# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
298+
cat >&2 <<-'EOF'
299+
300+
Either your platform is not easily detectable, is not supported by this
301+
installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have
302+
a package for Docker. Please visit the following URL for more detailed
303+
installation instructions:
304+
305+
https://docs.docker.com/engine/installation/
306+
307+
EOF
308+
exit 1
309+
}
310+
311+
# wrapped up in a function so that we have some protection against only getting
312+
# half the file during "curl | sh"
313+
do_install

src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.github.dockerjava.api.command.UpdateContainerCmd;
2121

22+
import com.github.dockerjava.core.SSLConfig;
2223
import org.apache.http.config.RegistryBuilder;
2324
import org.apache.http.conn.socket.ConnectionSocketFactory;
2425
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
@@ -161,7 +162,10 @@ public void init(DockerClientConfig dockerClientConfig) {
161162
SSLContext sslContext = null;
162163

163164
try {
164-
sslContext = dockerClientConfig.getSSLConfig().getSSLContext();
165+
final SSLConfig sslConfig = dockerClientConfig.getSSLConfig();
166+
if (sslConfig != null) {
167+
sslContext = sslConfig.getSSLContext();
168+
}
165169
} catch (Exception ex) {
166170
throw new DockerClientException("Error in SSL Configuration", ex);
167171
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<configuration debug="true"> <!-- This will give you some valuable info about logback config upon runtime. Remove this for production. -->
2+
3+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder>
5+
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
6+
</encoder>
7+
</appender>
8+
9+
<!--<logger name="com.github.dockerjava" level="DEBUG"/>-->
10+
<!--<logger name="com.github.dockerjava.jaxrs" level="DEBUG"/>-->
11+
<!--<logger name="com.github.dockerjava.netty" level="DEBUG"/>-->
12+
<!--<logger name="org.apache.http.impl.conn" level="DEBUG"/>-->
13+
14+
15+
<root level="INFO">
16+
<appender-ref ref="STDOUT" />
17+
</root>
18+
19+
</configuration>

0 commit comments

Comments
 (0)