1dist: xenial
2
3os: linux
4
5language: c
6
7compiler:
8  - gcc
9  - clang
10
11addons:
12  apt:
13    packages:
14    - axel
15    - cpanminus
16    - libtest-base-perl
17    - libtext-diff-perl
18    - liburi-perl
19    - libwww-perl
20    - libtest-longstring-perl
21    - liblist-moreutils-perl
22    - libgd-dev
23
24cache:
25  directories:
26  - download-cache
27
28env:
29  global:
30    - JOBS=3
31    - NGX_BUILD_JOBS=$JOBS
32    - LUAJIT_PREFIX=/opt/luajit21
33    - LUAJIT_LIB=$LUAJIT_PREFIX/lib
34    - LUAJIT_INC=$LUAJIT_PREFIX/include/luajit-2.1
35    - LUA_INCLUDE_DIR=$LUAJIT_INC
36    - PCRE_VER=8.44
37    - PCRE_PREFIX=/opt/pcre
38    - PCRE_LIB=$PCRE_PREFIX/lib
39    - PCRE_INC=$PCRE_PREFIX/include
40    - OPENSSL_PREFIX=/opt/ssl
41    - OPENSSL_LIB=$OPENSSL_PREFIX/lib
42    - OPENSSL_INC=$OPENSSL_PREFIX/include
43    - LIBDRIZZLE_PREFIX=/opt/drizzle
44    - LIBDRIZZLE_INC=$LIBDRIZZLE_PREFIX/include/libdrizzle-1.0
45    - LIBDRIZZLE_LIB=$LIBDRIZZLE_PREFIX/lib
46    - LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH
47    - DRIZZLE_VER=2011.07.21
48    - TEST_NGINX_SLEEP=0.006
49  jobs:
50    - NGINX_VERSION=1.17.8 OPENSSL_VER=1.0.2u OPENSSL_PATCH_VER=1.0.2h
51    - NGINX_VERSION=1.19.3 OPENSSL_VER=1.0.2u OPENSSL_PATCH_VER=1.0.2h
52    - NGINX_VERSION=1.19.3 OPENSSL_VER=1.1.0l OPENSSL_PATCH_VER=1.1.0d
53    - NGINX_VERSION=1.19.3 OPENSSL_VER=1.1.1h OPENSSL_PATCH_VER=1.1.1f
54
55services:
56 - memcached
57 - redis
58 - mysql
59
60before_install:
61  - '! grep -n -P ''(?<=.{80}).+'' --color `find src -name ''*.c''` `find . -name ''*.h''` || (echo "ERROR: Found C source lines exceeding 80 columns." > /dev/stderr; exit 1)'
62  - '! grep -n -P ''\t+'' --color `find src -name ''*.c''` `find . -name ''*.h''` || (echo "ERROR: Cannot use tabs." > /dev/stderr; exit 1)'
63  - sudo cpanm --notest Test::Nginx IPC::Run > build.log 2>&1 || (cat build.log && exit 1)
64
65install:
66  - if [ ! -f download-cache/drizzle7-$DRIZZLE_VER.tar.gz ]; then wget -P download-cache http://openresty.org/download/drizzle7-$DRIZZLE_VER.tar.gz; fi
67  - if [ ! -f download-cache/pcre-$PCRE_VER.tar.gz ]; then wget -P download-cache https://ftp.pcre.org/pub/pcre/pcre-$PCRE_VER.tar.gz; fi
68  - if [ ! -f download-cache/openssl-$OPENSSL_VER.tar.gz ]; then wget -P download-cache https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.gz || wget -P download-cache https://www.openssl.org/source/old/${OPENSSL_VER//[a-z]/}/openssl-$OPENSSL_VER.tar.gz; fi
69  - git clone https://github.com/openresty/test-nginx.git
70  - git clone https://github.com/openresty/openresty.git ../openresty
71  - git clone https://github.com/openresty/no-pool-nginx.git ../no-pool-nginx
72  - git clone https://github.com/openresty/openresty-devel-utils.git
73  - git clone https://github.com/openresty/mockeagain.git
74  - git clone https://github.com/openresty/lua-cjson.git lua-cjson
75  - git clone https://github.com/openresty/lua-upstream-nginx-module.git ../lua-upstream-nginx-module
76  - git clone https://github.com/openresty/echo-nginx-module.git ../echo-nginx-module
77  - git clone https://github.com/openresty/nginx-eval-module.git ../nginx-eval-module
78  - git clone https://github.com/simpl/ngx_devel_kit.git ../ndk-nginx-module
79  - git clone https://github.com/FRiCKLE/ngx_coolkit.git ../coolkit-nginx-module
80  - git clone https://github.com/openresty/headers-more-nginx-module.git ../headers-more-nginx-module
81  - git clone https://github.com/openresty/drizzle-nginx-module.git ../drizzle-nginx-module
82  - git clone https://github.com/openresty/set-misc-nginx-module.git ../set-misc-nginx-module
83  - git clone https://github.com/openresty/memc-nginx-module.git ../memc-nginx-module
84  - git clone https://github.com/openresty/rds-json-nginx-module.git ../rds-json-nginx-module
85  - git clone https://github.com/openresty/srcache-nginx-module.git ../srcache-nginx-module
86  - git clone https://github.com/openresty/redis2-nginx-module.git ../redis2-nginx-module
87  - git clone https://github.com/openresty/lua-resty-core.git ../lua-resty-core
88  - git clone https://github.com/openresty/lua-resty-lrucache.git ../lua-resty-lrucache
89  - git clone https://github.com/openresty/lua-resty-mysql.git ../lua-resty-mysql
90  - git clone https://github.com/openresty/lua-resty-string.git ../lua-resty-string
91  - git clone https://github.com/openresty/stream-lua-nginx-module.git ../stream-lua-nginx-module
92  - git clone -b v2.1-agentzh https://github.com/openresty/luajit2.git luajit2
93
94before_script:
95  - mysql -uroot -e 'create database ngx_test; grant all on ngx_test.* to "ngx_test"@"%" identified by "ngx_test"; flush privileges;'
96
97script:
98  - sudo iptables -I OUTPUT 1 -p udp --dport 10086 -j REJECT
99  - sudo iptables -I OUTPUT -p tcp --dst 127.0.0.2 --dport 12345 -j DROP
100  - sudo iptables -I OUTPUT -p udp --dst 127.0.0.2 --dport 12345 -j DROP
101  - cd luajit2/
102  - make -j$JOBS CCDEBUG=-g Q= PREFIX=$LUAJIT_PREFIX CC=$CC XCFLAGS='-DLUA_USE_APICHECK -DLUA_USE_ASSERT -msse4.2' > build.log 2>&1 || (cat build.log && exit 1)
103  - sudo make install PREFIX=$LUAJIT_PREFIX > build.log 2>&1 || (cat build.log && exit 1)
104  - cd ..
105  - tar xzf download-cache/drizzle7-$DRIZZLE_VER.tar.gz && cd drizzle7-$DRIZZLE_VER
106  - ./configure --prefix=$LIBDRIZZLE_PREFIX --without-server > build.log 2>&1 || (cat build.log && exit 1)
107  - make libdrizzle-1.0 -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
108  - sudo make install-libdrizzle-1.0 > build.log 2>&1 || (cat build.log && exit 1)
109  - cd ../mockeagain/ && make CC=$CC -j$JOBS && cd ..
110  - cd lua-cjson/ && make -j$JOBS && sudo make install && cd ..
111  - tar zxf download-cache/pcre-$PCRE_VER.tar.gz
112  - cd pcre-$PCRE_VER/
113  - ./configure --prefix=$PCRE_PREFIX --enable-jit --enable-utf --enable-unicode-properties > build.log 2>&1 || (cat build.log && exit 1)
114  - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
115  - sudo PATH=$PATH make install > build.log 2>&1 || (cat build.log && exit 1)
116  - cd ..
117  - tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz
118  - cd openssl-$OPENSSL_VER/
119  - patch -p1 < ../../openresty/patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch
120  - ./config shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
121  - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
122  - sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1)
123  - cd ..
124  - export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:$PATH
125  - export NGX_BUILD_CC=$CC
126  - sh util/build.sh $NGINX_VERSION > build.log 2>&1 || (cat build.log && exit 1)
127  - nginx -V
128  - ldd `which nginx`|grep -E 'luajit|ssl|pcre'
129  - export LD_PRELOAD=$PWD/mockeagain/mockeagain.so
130  - export LD_LIBRARY_PATH=$PWD/mockeagain:$LD_LIBRARY_PATH
131  - export TEST_NGINX_RESOLVER=8.8.4.4
132  - dig +short myip.opendns.com @resolver1.opendns.com || exit 0
133  - dig +short @$TEST_NGINX_RESOLVER openresty.org || exit 0
134  - dig +short @$TEST_NGINX_RESOLVER agentzh.org || exit 0
135  - prove -Itest-nginx/lib -r t
136