Skip to content

Commit be64e59

Browse files
committed
merge upstream
2 parents fa6cece + fd421d8 commit be64e59

167 files changed

Lines changed: 4509 additions & 3450 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.travis.yml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,52 @@
1+
sudo: required
2+
dist: trusty
13
language: java
4+
5+
services:
6+
- docker
7+
28
jdk:
39
- oraclejdk7
10+
11+
install: true
12+
13+
env:
14+
global:
15+
- DOCKER_TLS_VERIFY=""
16+
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
17+
# via the "travis encrypt" command using the project repo's public key
18+
- secure: "GonzmzvnXsTNQV+6sKtBSSPiwbpMZjxumNt5LFp1g77/afLxw9kl2EQOXbUe308vFOwRVqeY7drBvNJa8aJkTUClfMaGRjfZ9DUwm6doMKMUYrdEkYoQTcH7yDX5K5w9MT6m+Izj+BK2gB7nK3yFlYG6COeXCdFbQ4/cf3/xfRc="
19+
- COVERITY_SCAN_PROJECT_NAME="docker-java/docker-java"
20+
- COVERITY_SCAN_BRANCH_PATTERN="master"
21+
- COVERITY_SCAN_NOTIFICATION_EMAIL="kanstantsin.sha@gmail.com"
22+
23+
matrix:
24+
- repo="main" DOCKER_HOST="tcp://127.0.0.1:2375" DOCKER_VERSION="1.12.0-0~trusty"
25+
- repo="main" DOCKER_HOST="unix:///var/run/docker.sock" DOCKER_VERSION="1.12.0-0~trusty"
26+
- repo="main" DOCKER_HOST="tcp://127.0.0.1:2375" DOCKER_VERSION="1.11.2-0~trusty" DEPLOY=true COVERITY=true CODECOV=true
27+
- repo="main" DOCKER_HOST="unix:///var/run/docker.sock" DOCKER_VERSION="1.11.2-0~trusty"
28+
- repo="main" DOCKER_HOST="tcp://127.0.0.1:2375" DOCKER_VERSION="1.10.3-0~trusty"
29+
- repo="main" DOCKER_HOST="unix:///var/run/docker.sock" DOCKER_VERSION="1.10.3-0~trusty"
30+
# - repo="testing" DOCKER_HOST="tcp://127.0.0.1:2375"
31+
# - repo="testing" DOCKER_HOST="unix:///var/run/docker.sock"
32+
# - repo="experimental" DOCKER_HOST="tcp://127.0.0.1:2375"
33+
# - repo="experimental" DOCKER_HOST="unix:///var/run/docker.sock"
34+
35+
cache:
36+
directories:
37+
- $HOME/.travis_cache
38+
- /tmp/coverity-cache
39+
- $HOME/.m2 # install will pollute it
40+
441
before_install:
5-
- pip install --user codecov
42+
- pip install --user codecov
43+
- ./.travis/travis-before-install.sh
44+
45+
script:
46+
- ./.travis/travis-script.sh
47+
648
after_success:
7-
- ./travis-after-success.sh
49+
- ./.travis/travis-after-success.sh
50+
51+
after_script:
52+
- sudo cat /var/log/upstart/docker.log
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
#!/usr/bin/env bash
22

3-
codecov
4-
if [[ $TRAVIS_BRANCH == "master" ]] && [[ $TRAVIS_PULL_REQUEST == "false" ]];
3+
if [[ $CODECOV == "true" ]]; then
4+
codecov
5+
fi
6+
7+
if [[ $TRAVIS_BRANCH == "master" ]] && [[ $TRAVIS_PULL_REQUEST == "false" ]] && [[ $DEPLOY == "true" ]];
58
then
6-
cat << EOF >> ~/settings.xml
9+
cat <<EOF >> ~/settings.xml
710
<settings>
811
<servers>
912
<server>

.travis/travis-before-install.sh

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env bash
2+
3+
4+
sudo apt-get install -y -q ca-certificates
5+
6+
echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
7+
8+
9+
if [ "$FAST_BUILD" == true ]; then
10+
echo "Fast build, skipping docker installations."
11+
exit 0
12+
fi
13+
14+
set -exu
15+
16+
docker info
17+
docker version
18+
19+
sudo -E apt-get update
20+
sudo -E apt-get install -q -y wget
21+
sudo -E apt-get -q -y --purge remove docker-engine
22+
sudo -E apt-cache policy docker-engine
23+
24+
./get-docker-com.sh
25+
#mkdir "${HOME}/.cache" || :
26+
#pushd "${HOME}/.cache"
27+
# wget -N "https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_${DOCKER_VERSION}_amd64.deb"
28+
# sudo apt-get -f install
29+
# sudo dpkg -i "$(ls *${DOCKER_VERSION}*)"
30+
#popd
31+
#rm -f "src/test/resources/logback.xml"
32+
mv "src/test/resources/travis-logback.xml" "src/test/resources/logback.xml"
33+
34+
echo 'DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=tcp://127.0.0.1:2375"' | sudo tee -a /etc/default/docker
35+
sudo -E restart docker
36+
sleep 10
37+
docker version
38+
docker info
39+
40+
set +u
41+
42+
cat <<EOF > "${HOME}/.docker-java.properties"
43+
registry.username=${registry_username}
44+
registry.password=${registry_password}
45+
registry.email=${registry_email}
46+
registry.url=https://index.docker.io/v1/
47+
48+
EOF

.travis/travis-script.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/env bash
2+
3+
set -ex
4+
5+
IS_COVERITY_SCAN_BRANCH=`ruby -e "puts '${TRAVIS_BRANCH}' =~ /\\A$COVERITY_SCAN_BRANCH_PATTERN\\z/ ? 1 : 0"`
6+
7+
8+
if [ "${FAST_BUILD}" == "true" ]; then
9+
if [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$COVERITY" == "true" ] && [ "$IS_COVERITY_SCAN_BRANCH" = "1" ]; then
10+
export COVERITY_SCAN_BUILD_COMMAND="mvn package"
11+
#curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash
12+
./.travis/travisci_build_coverity_scan.sh
13+
else
14+
mvn package
15+
fi
16+
else
17+
if [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$COVERITY" == "true" ] && [ "$IS_COVERITY_SCAN_BRANCH" = "1" ]; then
18+
export COVERITY_SCAN_BUILD_COMMAND="mvn verify"
19+
#curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash
20+
./.travis/travisci_build_coverity_scan.sh
21+
else
22+
mvn verify
23+
fi
24+
fi
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# Environment check
6+
echo -e "\033[33;1mNote: COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m"
7+
[ -z "$COVERITY_SCAN_PROJECT_NAME" ] && echo "ERROR: COVERITY_SCAN_PROJECT_NAME must be set" && exit 1
8+
[ -z "$COVERITY_SCAN_NOTIFICATION_EMAIL" ] && echo "ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1
9+
[ -z "$COVERITY_SCAN_BRANCH_PATTERN" ] && echo "ERROR: COVERITY_SCAN_BRANCH_PATTERN must be set" && exit 1
10+
[ -z "$COVERITY_SCAN_BUILD_COMMAND" ] && echo "ERROR: COVERITY_SCAN_BUILD_COMMAND must be set" && exit 1
11+
[ -z "$COVERITY_SCAN_TOKEN" ] && echo "ERROR: COVERITY_SCAN_TOKEN must be set" && exit 1
12+
13+
PLATFORM=`uname`
14+
TOOL_ARCHIVE=/tmp/coverity-cache/cov-analysis-${PLATFORM}.tgz
15+
TOOL_URL=https://scan.coverity.com/download/${PLATFORM}
16+
TOOL_BASE=/tmp/coverity-scan-analysis
17+
UPLOAD_URL="https://scan.coverity.com/builds"
18+
SCAN_URL="https://scan.coverity.com"
19+
20+
# Do not run on pull requests
21+
if [ "${TRAVIS_PULL_REQUEST}" = "true" ]; then
22+
echo -e "\033[33;1mINFO: Skipping Coverity Analysis: branch is a pull request.\033[0m"
23+
exit 0
24+
fi
25+
26+
# Verify this branch should run
27+
IS_COVERITY_SCAN_BRANCH=`ruby -e "puts '${TRAVIS_BRANCH}' =~ /\\A$COVERITY_SCAN_BRANCH_PATTERN\\z/ ? 1 : 0"`
28+
if [ "$IS_COVERITY_SCAN_BRANCH" = "1" ]; then
29+
echo -e "\033[33;1mCoverity Scan configured to run on branch ${TRAVIS_BRANCH}\033[0m"
30+
else
31+
echo -e "\033[33;1mCoverity Scan NOT configured to run on branch ${TRAVIS_BRANCH}\033[0m"
32+
exit 1
33+
fi
34+
35+
# Verify upload is permitted
36+
AUTH_RES=`curl -s --form project="$COVERITY_SCAN_PROJECT_NAME" --form token="$COVERITY_SCAN_TOKEN" $SCAN_URL/api/upload_permitted`
37+
if [ "$AUTH_RES" = "Access denied" ]; then
38+
echo -e "\033[33;1mCoverity Scan API access denied. Check COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN.\033[0m"
39+
exit 1
40+
else
41+
AUTH=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['upload_permitted']"`
42+
if [ "$AUTH" = "true" ]; then
43+
echo -e "\033[33;1mCoverity Scan analysis authorized per quota.\033[0m"
44+
else
45+
WHEN=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['next_upload_permitted_at']"`
46+
echo -e "\033[33;1mCoverity Scan analysis NOT authorized until $WHEN.\033[0m"
47+
48+
exit 1
49+
fi
50+
fi
51+
52+
mkdir -p /tmp/coverity-cache || :
53+
54+
if [ ! -d $TOOL_BASE ]; then
55+
56+
# verify that binary is right
57+
if file $TOOL_ARCHIVE | grep HTML ; then
58+
echo "Removing $TOOL_ARCHIVE"
59+
rm -f $TOOL_ARCHIVE
60+
fi
61+
62+
# Download Coverity Scan Analysis Tool
63+
if [ ! -e $TOOL_ARCHIVE ]; then
64+
echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m"
65+
wget -nv -N -O $TOOL_ARCHIVE $TOOL_URL --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN"
66+
fi
67+
68+
# Extract Coverity Scan Analysis Tool
69+
echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m"
70+
mkdir -p $TOOL_BASE
71+
pushd $TOOL_BASE
72+
du -sh $TOOL_ARCHIVE
73+
file $TOOL_ARCHIVE
74+
file $TOOL_ARCHIVE | grep HTML && cat $TOOL_ARCHIVE || :
75+
ls -la $TOOL_ARCHIVE
76+
tar -xf $TOOL_ARCHIVE #|& grep -v "Ignoring unknown extended header keyword"
77+
popd
78+
fi
79+
80+
TOOL_DIR=`find $TOOL_BASE -type d -name 'cov-analysis*'`
81+
export PATH=$TOOL_DIR/bin:$PATH
82+
83+
# Build
84+
echo -e "\033[33;1mRunning Coverity Scan Analysis Tool...\033[0m"
85+
COV_BUILD_OPTIONS=""
86+
#COV_BUILD_OPTIONS="--return-emit-failures 8 --parse-error-threshold 85"
87+
RESULTS_DIR="cov-int"
88+
eval "${COVERITY_SCAN_BUILD_COMMAND_PREPEND}"
89+
COVERITY_UNSUPPORTED=1 cov-build --dir $RESULTS_DIR $COV_BUILD_OPTIONS $COVERITY_SCAN_BUILD_COMMAND
90+
cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR/scm_log.txt 2>&1
91+
92+
# Upload results
93+
echo -e "\033[33;1mTarring Coverity Scan Analysis results...\033[0m"
94+
RESULTS_ARCHIVE=analysis-results.tgz
95+
tar czf $RESULTS_ARCHIVE $RESULTS_DIR
96+
SHA=`git rev-parse --short HEAD`
97+
98+
echo -e "\033[33;1mUploading Coverity Scan Analysis results...\033[0m"
99+
response=$(curl \
100+
--silent --write-out "\n%{http_code}\n" \
101+
--form project=$COVERITY_SCAN_PROJECT_NAME \
102+
--form token=$COVERITY_SCAN_TOKEN \
103+
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
104+
--form file=@$RESULTS_ARCHIVE \
105+
--form version=$SHA \
106+
--form description="Travis CI build" \
107+
$UPLOAD_URL)
108+
status_code=$(echo "$response" | sed -n '$p')
109+
if [ "$status_code" != "201" ]; then
110+
TEXT=$(echo "$response" | sed '$d')
111+
echo -e "\033[33;1mCoverity Scan upload failed: $TEXT.\033[0m"
112+
exit 1
113+
fi

CHANGELOG.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
Change Log
22
===
33

4-
3.0.0-SNAPSHOT
4+
3.0.1-SNAPSHOT
5+
---
6+
7+
All changes
8+
* Updated all dependencies
9+
* [#643] (https://github.com/docker-java/docker-java/pull/643) Fixes for .dockerignore filtering
10+
* [#627] (https://github.com/docker-java/docker-java/pull/627) Implementation of POST /images/load endpoint
11+
* [#630] (https://github.com/docker-java/docker-java/pull/630) Fix: Second execution of a docker command in Netty implementation always fails
12+
* [#596] (https://github.com/docker-java/docker-java/pull/596) Refactor configuration of SSL to allow override with custom config
13+
* [#529] (https://github.com/docker-java/docker-java/pull/529) Refactor CertUtils. Support ECDSA and PrivateKey
14+
* [#593] (https://github.com/docker-java/docker-java/pull/593) Added Device.parse() method with simple verification.
15+
16+
v3.0.0
517
---
618
Notes
719

8-
* The upcoming release will contain multiple API breaking changes therefore the major version switch. It will support a subset of v.1.22 of the docker remote API. It also includes an experimental netty based implementation of `DockerCmdExecFactory` that probably will replace the current jersey/httpclient based one in a later release.
20+
* The 3.0.0 release contains multiple API breaking changes compared to 2.x therefore the major version switch. It supports a subset of v.1.22 of the docker remote API. It also includes an experimental netty based implementation of `DockerCmdExecFactory` that probably will replace the current jersey/httpclient based one in a later release. Take a look at the [Wiki](https://github.com/docker-java/docker-java/wiki#intialize-docker-client-advanced) how to use it.
921
* The configuration has been changed to better match the docker CLI configuration options. The properties file was renamed from `docker.io.properties` to `docker-java.properties`. See README.md for details.
1022

1123
All changes
12-
24+
* [#590] (https://github.com/docker-java/docker-java/pull/590) Fix default docker.properties to match with docker CLI defaults
1325
* [#585] (https://github.com/docker-java/docker-java/pull/585) Add RootDir property to GraphData
1426
* [#580] (https://github.com/docker-java/docker-java/pull/580) Fixes execute permissions for files when copied to container
1527
* [#579] (https://github.com/docker-java/docker-java/pull/579) Adds missing name filter evaluation to netty version of ListImagesCmdExec

0 commit comments

Comments
 (0)