blob: 81a4935d374482ef23e8f7f8a091a14cf203739f [file] [log] [blame] [view]
James E. King, III0ad20bd2017-09-30 15:44:16 -07001# Docker Integration #
James E. King, III65efdff2017-09-25 00:13:38 -04002
James E. King, III0ad20bd2017-09-30 15:44:16 -07003Due to the large number of language requirements to build Apache Thrift, docker containers are used to build and test the project on a variety of platforms to provide maximum test coverage.
jfarrelle03f7e82015-02-18 23:25:54 -05004
James E. King, III0ad20bd2017-09-30 15:44:16 -07005## Travis CI Integration ##
jfarrelle03f7e82015-02-18 23:25:54 -05006
James E. King, III0ad20bd2017-09-30 15:44:16 -07007The Travis CI scripts use the following environment variables and logic to determine their behavior.
8
9### Environment Variables ###
10
11| Variable | Default | Usage |
12| -------- | ----- | ------- |
13| `DISTRO` | `ubuntu-xenial` | Set by various build jobs in `.travis.yml` to run builds in different containers. Not intended to be set externally.|
14| `DOCKER_REPO` | `thrift` | The name of the Docker Hub repository to obtain and store docker images. |
15| `DOCKER_USER` | `apache` | The Docker Hub account name containing the repository. |
16| `DOCKER_PASS` | `<none>` | The Docker Hub account password to use when pushing new tags. |
17
18For example, the default docker image that is used in builds if no overrides are specified would be: `apache/thrift:ubuntu-xenial`
19
20If you have forked the Apache Thrift repository and you would like to use your own Docker Hub account to store thrift build images, you can use the Travis CI web interface to set the `DOCKER_USER`, `DOCKER_PASS`, and `DOCKER_REPO` variables in a secure manner.
21
22### Logic ###
23
24The Travis CI build runs in two phases - first the docker images are rebuilt for each of the three supported containers if they do not match the Dockerfile that was used to build the most recent tag. If a `DOCKER_PASS` environment variable is specified, the docker stage builds will attempt to log into Docker Hub and push the resulting tags.
25
26## Supported Containers ##
27
28The Travis CI (continuous integration) builds use the Ubuntu Trusty, Xenial, and Artful images to maximize language level coverage.
James E. King, IIId7142b72017-09-01 13:00:36 -070029
30### Ubuntu
James E. King, III0ad20bd2017-09-30 15:44:16 -070031* trusty (legacy)
32* xenial (stable)
33* artful (latest)
34
35## Unsupported Containers
36
37These containers may be in various states, and may not build everything.
jfarrelle03f7e82015-02-18 23:25:54 -050038
James E. King, III65efdff2017-09-25 00:13:38 -040039### CentOS
40* 7.3
41 * make check in lib/py may hang in test_sslsocket - root cause unknown
42
43### Debian
44* jessie
45* stretch
46 * make check in lib/cpp fails due to https://svn.boost.org/trac10/ticket/12507
47
jfarrelle03f7e82015-02-18 23:25:54 -050048## Usage
James E. King, IIId7142b72017-09-01 13:00:36 -070049From the Apache Thrift code base root:
jfarrelle03f7e82015-02-18 23:25:54 -050050
51* Build
52
James E. King, IIId7142b72017-09-01 13:00:36 -070053 docker build -t thrift build/docker/ubuntu-xenial
jfarrelle03f7e82015-02-18 23:25:54 -050054
jfarrelle03f7e82015-02-18 23:25:54 -050055* Run
56
Nobuaki Sukegawaa6ab1f52015-11-28 15:04:39 +090057 docker run -v $(pwd):/thrift/src -it thrift /bin/bash
jfarrelle03f7e82015-02-18 23:25:54 -050058
James E. King, IIId7142b72017-09-01 13:00:36 -070059## Core Tool Versions per Dockerfile
James E. King, III0ad20bd2017-09-30 15:44:16 -070060| Tool | ubuntu-trusty | ubuntu-xenial | ubuntu-artful | Notes |
61| :-------- | :------------ | :------------ | :------------ | :---- |
62| ant | 1.9.3 | 1.9.6 | 1.9.9 | |
63| autoconf | 2.69 | 2.69 | 2.69 | |
64| automake | 1.14.1 | 1.15 | 1.15 | |
65| bison | 3.0.2 | 3.0.4 | 3.0.4 | |
66| boost | 1.54.0 | 1.58.0 | 1.63.0 | artful: stock boost 1.62.0 has problems running unit tests |
67| cmake | 3.2.2 | 3.5.1 | 3.9.1 | |
68| cppcheck | 1.61 | 1.72 | 1.80 | |
69| flex | 2.5.35 | 2.6.0 | 2.6.1 | |
70| glibc | 2.19 | 2.23 | 2.26 | |
71| libevent | 2.0.21 | 2.0.21 | 2.1 | |
72| libstdc++ | 4.8.4 | 5.4.0 | 7.2.0 | |
73| make | 3.81 | 4.1 | 4.1 | |
74| openssl | 1.0.1f | 1.0.2g | 1.0.2g | |
75| qt5 | 5.2.1 | 5.5.1 | 5.9.1 | |
James E. King, IIId7142b72017-09-01 13:00:36 -070076
James E. King, III0ad20bd2017-09-30 15:44:16 -070077## Compiler/Language Versions per Dockerfile
78| Language | ubuntu-trusty | ubuntu-xenial | ubuntu-artful | Notes |
79| :-------- | :------------ | :------------ | :------------ | :---- |
80| as3 | | | | Not in CI |
81| C++ gcc | 4.8.4 | 5.4.0 | 7.2.0 | |
82| C++ clang | 3.4 | 3.8 | 4.0 | |
83| C# (mono) | 3.2.8.0 | 4.2.1 | 4.6.2.7 | |
84| c_glib | 2.40.2 | 2.48.2 | 2.54.0 | |
85| cocoa | | | | Not in CI |
86| d | 2.070.2 | 2.073.2 | 2.076.0 | |
87| dart | 1.20.1 | 1.24.2 | | artful: apt repo not compatible with apt 1.4? |
88| delphi | | | | Not in CI |
89| dotnet | | 2.0.0 | | Needs to be added to artful |
90| erlang | R16B03 | 18.3 | 20.0.4 | |
91| go | 1.2.1 | 1.6.2 | 1.8.3 | |
92| haskell | 7.6.3 | 7.10.3 | 8.0.2 | |
93| haxe | | 3.2.1 | 3.4.2 | disabled in trusty builds - cores on install v3.0.0, disabled in artful builds - see THRIFT-4352 |
94| java | 1.7.0_151 | 1.8.0_131 | 1.8.0_144 | |
95| js | | | | Unsure how to look for version info? |
96| lua | 5.1.5 | 5.2.4 | 5.3.3 | |
97| nodejs | | 4.2.6 | 6.11.2 | trusty has node.js 0.10.0 which is too old |
98| ocaml | | 4.02.3 | 4.04.0 | |
99| perl | 5.18.2 | 5.22.1 | 5.26.0 | |
100| php | 5.5.9 | 7.0.22 | 7.1.8 | |
101| python | 2.7.6 | 2.7.12 | 2.7.14 | |
102| python3 | 3.4.3 | 3.5.2 | 3.6.3 | |
103| ruby | 1.9.3p484 | 2.3.1p112 | 2.3.3p222 | |
104| rust | 1.15.1 | 1.15.1 | 1.18.0 | |
105| smalltalk | | | | Not in CI |
106| swift | | | | Not in CI |
James E. King, IIId7142b72017-09-01 13:00:36 -0700107