From 4fc25cf5a3e63aec59d9583dca552032f602cbcb Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 02:45:24 +0800 Subject: [PATCH 1/6] chore: migrations github action from travis --- .github/workflows/build_and_test.yml | 247 +++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 .github/workflows/build_and_test.yml diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml new file mode 100644 index 0000000000..fbca6c33f4 --- /dev/null +++ b/.github/workflows/build_and_test.yml @@ -0,0 +1,247 @@ +name: Build and test + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + name: ${{ matrix.name }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - name: "nginx 1.29.4 + OpenSSL" + NGINX_VERSION: "1.29.4" + TEST_NGINX_TIMEOUT: "5" + + - name: "nginx 1.29.4 + OpenSSL + HTTP/2" + NGINX_VERSION: "1.29.4" + TEST_NGINX_TIMEOUT: "5" + TEST_NGINX_USE_HTTP2: "1" + + - name: "nginx 1.29.4 + OpenSSL + HTTP/3" + NGINX_VERSION: "1.29.4" + TEST_NGINX_USE_HTTP3: "1" + TEST_NGINX_QUIC_IDLE_TIMEOUT: "3" + + - name: "nginx 1.29.4 + BoringSSL + HTTP/3" + NGINX_VERSION: "1.29.4" + BORINGSSL: "1" + TEST_NGINX_USE_HTTP3: "1" + TEST_NGINX_QUIC_IDLE_TIMEOUT: "3" + + services: + memcached: + image: memcached:1.6-alpine + ports: + - 11211:11211 + redis: + image: redis:7-alpine + ports: + - 6379:6379 + mysql: + image: mysql:8.0 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping --silent" + --health-interval=10s + --health-timeout=5s + --health-retries=10 + + env: + JOBS: 3 + NGX_BUILD_JOBS: 3 + CC: gcc + DRIZZLE_VER: "2011.07.21" + LUAJIT_PREFIX: /opt/luajit21 + LUAJIT_LIB: /opt/luajit21/lib + LUAJIT_INC: /opt/luajit21/include/luajit-2.1 + LUA_INCLUDE_DIR: /opt/luajit21/include/luajit-2.1 + PCRE2_PREFIX: /usr/local/openresty/pcre2 + PCRE2_LIB: /usr/local/openresty/pcre2/lib + PCRE2_INC: /usr/local/openresty/pcre2/include + OPENSSL_PREFIX: /usr/local/openresty/openssl3 + OPENSSL_LIB: /usr/local/openresty/openssl3/lib + OPENSSL_INC: /usr/local/openresty/openssl3/include + LIBDRIZZLE_PREFIX: /opt/drizzle + LIBDRIZZLE_INC: /opt/drizzle/include/libdrizzle-1.0 + LIBDRIZZLE_LIB: /opt/drizzle/lib + TEST_NGINX_SLEEP: "0.006" + TEST_NGINX_SKIP_COSOCKET_LOG_TEST: "1" + MALLOC_PERTURB_: "9" + + steps: + - uses: actions/checkout@v4 + + - name: Install system packages + run: | + sudo apt-get update -q + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + ack axel cpanminus \ + libtest-base-perl libtext-diff-perl liburi-perl libwww-perl \ + libtest-longstring-perl liblist-moreutils-perl \ + libgd-dev time cmake libunwind-dev wget \ + libbrotli1 lsb-release gnupg ca-certificates dnsutils + + - name: Install Perl test modules + run: | + /usr/bin/env perl $(command -v cpanm) --sudo --notest \ + Test::Nginx IPC::Run Test2::Util > build.log 2>&1 || (cat build.log && exit 1) + + - name: Add OpenResty apt repository + run: | + wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add - + echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \ + | sudo tee /etc/apt/sources.list.d/openresty.list + sudo apt-get update -q + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + openresty-pcre2 openresty-openssl3 openresty-pcre2-dev openresty-openssl3-dev + + - name: Cache download directory + uses: actions/cache@v4 + with: + path: download-cache + key: download-cache-${{ runner.os }}-drizzle-${{ env.DRIZZLE_VER }} + + - name: Source code style check + run: | + ! grep -n -P '(?<=.{80}).+' --color $(find src -name '*.c') $(find . -name '*.h') \ + || (echo "ERROR: Found C source lines exceeding 80 columns." >&2; exit 1) + ! grep -n -P '\t+' --color $(find src -name '*.c') $(find . -name '*.h') \ + || (echo "ERROR: Cannot use tabs." >&2; exit 1) + + - name: Clone dependency repositories + run: | + # Sibling repos — build scripts reference them via $root/../ + git clone --depth=1 https://github.com/openresty/openresty.git ../openresty + git clone --depth=1 https://github.com/openresty/no-pool-nginx.git ../no-pool-nginx + git clone --depth=1 https://github.com/openresty/lua-upstream-nginx-module.git ../lua-upstream-nginx-module + git clone --depth=1 https://github.com/openresty/echo-nginx-module.git ../echo-nginx-module + git clone --depth=1 https://github.com/openresty/nginx-eval-module.git ../nginx-eval-module + git clone --depth=1 https://github.com/simpl/ngx_devel_kit.git ../ndk-nginx-module + git clone --depth=1 https://github.com/FRiCKLE/ngx_coolkit.git ../coolkit-nginx-module + git clone --depth=1 https://github.com/openresty/headers-more-nginx-module.git ../headers-more-nginx-module + git clone --depth=1 https://github.com/openresty/drizzle-nginx-module.git ../drizzle-nginx-module + git clone --depth=1 https://github.com/openresty/set-misc-nginx-module.git ../set-misc-nginx-module + git clone --depth=1 https://github.com/openresty/memc-nginx-module.git ../memc-nginx-module + git clone --depth=1 https://github.com/openresty/rds-json-nginx-module.git ../rds-json-nginx-module + git clone --depth=1 https://github.com/openresty/srcache-nginx-module.git ../srcache-nginx-module + git clone --depth=1 https://github.com/openresty/redis2-nginx-module.git ../redis2-nginx-module + git clone --depth=1 https://github.com/openresty/lua-resty-core.git ../lua-resty-core + git clone --depth=1 https://github.com/openresty/lua-resty-lrucache.git ../lua-resty-lrucache + git clone --depth=1 https://github.com/openresty/lua-resty-mysql.git ../lua-resty-mysql + git clone --depth=1 https://github.com/spacewander/lua-resty-rsa.git ../lua-resty-rsa + git clone --depth=1 https://github.com/openresty/lua-resty-string.git ../lua-resty-string + git clone --depth=1 https://github.com/openresty/stream-lua-nginx-module.git ../stream-lua-nginx-module + + # Local repos — used directly from the working directory + git clone --depth=1 https://github.com/openresty/test-nginx.git + git clone --depth=1 https://github.com/openresty/openresty-devel-utils.git + git clone --depth=1 https://github.com/openresty/mockeagain.git + git clone --depth=1 https://github.com/openresty/lua-cjson.git lua-cjson + git clone -b v2.1-agentzh --depth=1 https://github.com/openresty/luajit2.git luajit2 + + - name: Download prebuilt tarballs + run: | + mkdir -p download-cache + if [ ! -f download-cache/drizzle7-$DRIZZLE_VER.tar.gz ]; then + wget -P download-cache \ + https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/drizzle7-$DRIZZLE_VER.tar.gz + fi + wget https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/boringssl-20230902-x64-focal.tar.gz + wget https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/curl-h3-x64-focal.tar.gz + + - name: Install curl-h3 + run: sudo tar -C / -xf curl-h3-x64-focal.tar.gz + + - name: Set up MySQL test database + run: | + mysql -h 127.0.0.1 -P 3306 -uroot \ + -e "CREATE DATABASE ngx_test; \ + CREATE USER 'ngx_test'@'%' IDENTIFIED WITH mysql_native_password BY 'ngx_test'; \ + GRANT ALL ON ngx_test.* TO 'ngx_test'@'%'; \ + FLUSH PRIVILEGES;" + + - name: Set up network rules + run: | + sudo iptables -I OUTPUT 1 -p udp --dport 10086 -j REJECT + sudo iptables -I OUTPUT -p tcp --dst 127.0.0.2 --dport 12345 -j DROP + sudo iptables -I OUTPUT -p udp --dst 127.0.0.2 --dport 12345 -j DROP + sudo ip route add prohibit 0.0.0.1/32 + sudo sysctl -w kernel.pid_max=10000 + + - name: Build LuaJIT + run: | + cd luajit2 + 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) + sudo make install PREFIX=$LUAJIT_PREFIX > build.log 2>&1 || (cat build.log && exit 1) + + - name: Build drizzle7 + run: | + tar xzf download-cache/drizzle7-$DRIZZLE_VER.tar.gz + cd drizzle7-$DRIZZLE_VER + ./configure --prefix=$LIBDRIZZLE_PREFIX --without-server \ + > build.log 2>&1 || (cat build.log && exit 1) + make libdrizzle-1.0 -j$JOBS > build.log 2>&1 || (cat build.log && exit 1) + sudo make install-libdrizzle-1.0 > build.log 2>&1 || (cat build.log && exit 1) + + - name: Build mockeagain + run: cd mockeagain && make CC=$CC -j$JOBS + + - name: Build lua-cjson + run: cd lua-cjson && make -j$JOBS && sudo make install + + - name: Set up BoringSSL + if: matrix.BORINGSSL == '1' + run: | + sudo rm -fr $OPENSSL_PREFIX + sudo mkdir -p $OPENSSL_PREFIX + sudo tar -C $OPENSSL_PREFIX -xf boringssl-20230902-x64-focal.tar.gz --strip-components=1 + + - name: Build nginx + run: | + export LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH + export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:/opt/curl-h3/bin:$PATH + export NGX_BUILD_CC=$CC + sh util/build-without-ssl.sh ${{ matrix.NGINX_VERSION }} > build.log 2>&1 || (cat build.log && exit 1) + sh util/build-with-dd.sh ${{ matrix.NGINX_VERSION }} > build.log 2>&1 || (cat build.log && exit 1) + rm -fr buildroot + sh util/build.sh ${{ matrix.NGINX_VERSION }} > build.log 2>&1 || (cat build.log && exit 1) + nginx -V + ldd $(which nginx) | grep -E 'luajit|ssl|pcre' + + - name: Run releng check + run: | + export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:/opt/curl-h3/bin:$PATH + ngx-releng > check.txt || true + lines=$(wc -l check.txt | awk '{print $1}') + if [ "$lines" -gt 5 ]; then cat check.txt; exit 1; fi + + - name: Run tests + env: + TEST_NGINX_TIMEOUT: ${{ matrix.TEST_NGINX_TIMEOUT }} + TEST_NGINX_USE_HTTP2: ${{ matrix.TEST_NGINX_USE_HTTP2 }} + TEST_NGINX_USE_HTTP3: ${{ matrix.TEST_NGINX_USE_HTTP3 }} + TEST_NGINX_QUIC_IDLE_TIMEOUT: ${{ matrix.TEST_NGINX_QUIC_IDLE_TIMEOUT }} + run: | + export LD_LIBRARY_PATH=$LUAJIT_LIB:$PWD/mockeagain:$LD_LIBRARY_PATH + export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:/opt/curl-h3/bin:$PATH + export LD_PRELOAD=$PWD/mockeagain/mockeagain.so + export TEST_NGINX_HTTP3_CRT=$PWD/t/cert/http3/http3.crt + export TEST_NGINX_HTTP3_KEY=$PWD/t/cert/http3/http3.key + export TEST_NGINX_RESOLVER=8.8.4.4 + dig +short myip.opendns.com @resolver1.opendns.com || exit 0 + dig +short @$TEST_NGINX_RESOLVER openresty.org || exit 0 + dig +short @$TEST_NGINX_RESOLVER agentzh.org || exit 0 + python3 ./util/nc_server.py & + /usr/bin/env perl $(command -v prove) -I. -Itest-nginx/inc -Itest-nginx/lib -r t/ From 52a71a171634c0e79fdcca5fa376d0990bd4a825 Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 03:07:43 +0800 Subject: [PATCH 2/6] chore: migrations github action from travis --- .github/workflows/build_and_test.yml | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index fbca6c33f4..1de4c39218 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -36,10 +36,6 @@ jobs: TEST_NGINX_QUIC_IDLE_TIMEOUT: "3" services: - memcached: - image: memcached:1.6-alpine - ports: - - 11211:11211 redis: image: redis:7-alpine ports: @@ -162,6 +158,11 @@ jobs: - name: Install curl-h3 run: sudo tar -C / -xf curl-h3-x64-focal.tar.gz + - name: Start memcached (native, for UDP support) + run: | + sudo apt-get install -y --no-install-recommends memcached + sudo service memcached start + - name: Set up MySQL test database run: | mysql -h 127.0.0.1 -P 3306 -uroot \ @@ -227,12 +228,21 @@ jobs: lines=$(wc -l check.txt | awk '{print $1}') if [ "$lines" -gt 5 ]; then cat check.txt; exit 1; fi + - name: Set matrix-specific test env vars + run: | + # Only export vars that have actual values — Perl's defined() treats + # empty strings as defined, which would cause false positives in tests + # like t/103-req-http-ver.t that branch on defined $ENV{TEST_NGINX_USE_HTTP3}. + [ -n "${{ matrix.TEST_NGINX_TIMEOUT }}" ] \ + && echo "TEST_NGINX_TIMEOUT=${{ matrix.TEST_NGINX_TIMEOUT }}" >> $GITHUB_ENV || true + [ -n "${{ matrix.TEST_NGINX_USE_HTTP2 }}" ] \ + && echo "TEST_NGINX_USE_HTTP2=${{ matrix.TEST_NGINX_USE_HTTP2 }}" >> $GITHUB_ENV || true + [ -n "${{ matrix.TEST_NGINX_USE_HTTP3 }}" ] \ + && echo "TEST_NGINX_USE_HTTP3=${{ matrix.TEST_NGINX_USE_HTTP3 }}" >> $GITHUB_ENV || true + [ -n "${{ matrix.TEST_NGINX_QUIC_IDLE_TIMEOUT }}" ] \ + && echo "TEST_NGINX_QUIC_IDLE_TIMEOUT=${{ matrix.TEST_NGINX_QUIC_IDLE_TIMEOUT }}" >> $GITHUB_ENV || true + - name: Run tests - env: - TEST_NGINX_TIMEOUT: ${{ matrix.TEST_NGINX_TIMEOUT }} - TEST_NGINX_USE_HTTP2: ${{ matrix.TEST_NGINX_USE_HTTP2 }} - TEST_NGINX_USE_HTTP3: ${{ matrix.TEST_NGINX_USE_HTTP3 }} - TEST_NGINX_QUIC_IDLE_TIMEOUT: ${{ matrix.TEST_NGINX_QUIC_IDLE_TIMEOUT }} run: | export LD_LIBRARY_PATH=$LUAJIT_LIB:$PWD/mockeagain:$LD_LIBRARY_PATH export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:/opt/curl-h3/bin:$PATH From b1c5a5bd9be7c4e45bee0c42a4f63c1c1964c586 Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 03:34:08 +0800 Subject: [PATCH 3/6] chore: migrations github action from travis --- .github/workflows/build_and_test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 1de4c39218..20e4a7de39 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -158,10 +158,12 @@ jobs: - name: Install curl-h3 run: sudo tar -C / -xf curl-h3-x64-focal.tar.gz - - name: Start memcached (native, for UDP support) + - name: Start memcached (native, UDP enabled) run: | sudo apt-get install -y --no-install-recommends memcached - sudo service memcached start + # Ubuntu's default /etc/memcached.conf has "-U 0" which disables UDP. + # Start manually with UDP on port 11211 so udp-socket tests pass. + memcached -d -u nobody -l 127.0.0.1 -p 11211 -U 11211 -m 64 - name: Set up MySQL test database run: | From 7576243e031bc4935df0915f99afbd46f0caaaef Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 03:50:48 +0800 Subject: [PATCH 4/6] chore: migrations github action from travis --- .github/workflows/build_and_test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 20e4a7de39..ef4eadda8b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -161,9 +161,12 @@ jobs: - name: Start memcached (native, UDP enabled) run: | sudo apt-get install -y --no-install-recommends memcached + sudo systemctl stop memcached # Ubuntu's default /etc/memcached.conf has "-U 0" which disables UDP. # Start manually with UDP on port 11211 so udp-socket tests pass. - memcached -d -u nobody -l 127.0.0.1 -p 11211 -U 11211 -m 64 + memcached -d -l 127.0.0.1 -p 11211 -U 11211 -m 64 + sudo ss -lntup | grep 11211 + - name: Set up MySQL test database run: | From aada0307d51c5bdf938db52f93e33bbecc79beea Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 04:17:52 +0800 Subject: [PATCH 5/6] chore: migrations github action from travis --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ef4eadda8b..d94c0fc731 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -94,8 +94,8 @@ jobs: - name: Add OpenResty apt repository run: | - wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add - - echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \ + wget -qO- https://openresty.org/package/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/openresty.gpg > /dev/null + echo "deb [signed-by=/usr/share/keyrings/openresty.gpg] https://openresty.org/package/ubuntu $(lsb_release -sc) main" \ | sudo tee /etc/apt/sources.list.d/openresty.list sudo apt-get update -q sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ From 25605ecb0b7fd9c3d646efe52710e677ea4c3487 Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 04:42:11 +0800 Subject: [PATCH 6/6] chore: migrations github action from travis --- .travis.yml | 157 ---------------------------------------------------- 1 file changed, 157 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 4d613c2e2d..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,157 +0,0 @@ -dist: focal - -branches: - only: - - "master" - -os: linux - -language: c - -compiler: - - gcc - -addons: - apt: - packages: - - ack - - axel - - cpanminus - - libtest-base-perl - - libtext-diff-perl - - liburi-perl - - libwww-perl - - libtest-longstring-perl - - liblist-moreutils-perl - - libgd-dev - - time - - cmake - - libunwind-dev - - wget - - libbrotli1 - - lsb-release - - gnupg - - ca-certificates - -cache: - directories: - - download-cache - -env: - global: - - JOBS=3 - - NGX_BUILD_JOBS=$JOBS - - LUAJIT_PREFIX=/opt/luajit21 - - LUAJIT_LIB=$LUAJIT_PREFIX/lib - - LUAJIT_INC=$LUAJIT_PREFIX/include/luajit-2.1 - - LUA_INCLUDE_DIR=$LUAJIT_INC - - PCRE2_PREFIX=/usr/local/openresty/pcre2 - - PCRE2_LIB=$PCRE2_PREFIX/lib - - PCRE2_INC=$PCRE2_PREFIX/include - - OPENSSL_PREFIX=/usr/local/openresty/openssl3 - - OPENSSL_LIB=$OPENSSL_PREFIX/lib - - OPENSSL_INC=$OPENSSL_PREFIX/include - - LIBDRIZZLE_PREFIX=/opt/drizzle - - LIBDRIZZLE_INC=$LIBDRIZZLE_PREFIX/include/libdrizzle-1.0 - - LIBDRIZZLE_LIB=$LIBDRIZZLE_PREFIX/lib - - LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH - - DRIZZLE_VER=2011.07.21 - - TEST_NGINX_SLEEP=0.006 - - TEST_NGINX_SKIP_COSOCKET_LOG_TEST=1 - - MALLOC_PERTURB_=9 - jobs: - - NGINX_VERSION=1.29.4 OPENSSL_VER=3.5.4 OPENSSL_PATCH_VER=3.5.4 TEST_NGINX_TIMEOUT=5 PCRE2_VER=10.46 - - NGINX_VERSION=1.29.4 OPENSSL_VER=3.5.4 OPENSSL_PATCH_VER=3.5.4 TEST_NGINX_TIMEOUT=5 PCRE2_VER=10.46 TEST_NGINX_USE_HTTP2=1 - - NGINX_VERSION=1.29.4 OPENSSL_VER=3.5.4 OPENSSL_PATCH_VER=3.5.4 TEST_NGINX_USE_HTTP3=1 TEST_NGINX_QUIC_IDLE_TIMEOUT=3 PCRE2_VER=10.46 - - NGINX_VERSION=1.29.4 BORINGSSL=1 TEST_NGINX_USE_HTTP3=1 TEST_NGINX_QUIC_IDLE_TIMEOUT=3 PCRE2_VER=10.46 - -services: - - memcached - - redis - - mysql - -before_install: - - '! 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)' - - '! grep -n -P ''\t+'' --color `find src -name ''*.c''` `find . -name ''*.h''` || (echo "ERROR: Cannot use tabs." > /dev/stderr; exit 1)' - - /usr/bin/env perl $(command -v cpanm) --sudo --notest Test::Nginx IPC::Run Test2::Util > build.log 2>&1 || (cat build.log && exit 1) - - wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add - - - echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openresty.list - - sudo apt-get update - - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends openresty-pcre2 openresty-openssl3 openresty-pcre2-dev openresty-openssl3-dev - - -install: - - if [ ! -f download-cache/drizzle7-$DRIZZLE_VER.tar.gz ]; then wget -P download-cache https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/drizzle7-$DRIZZLE_VER.tar.gz; fi - #- if [ -n "$PCRE2_VER" ] && [ ! -f download-cache/pcre2-$PCRE2_VER.tar.gz ]; then wget -P download-cache https://github.com/PCRE2Project/pcre2/releases/download/pcre2-${PCRE2_VER}/pcre2-${PCRE2_VER}.tar.gz; fi - #- if [ -n "$OPENSSL_VER" ] && [ ! -f download-cache/openssl-$OPENSSL_VER.tar.gz ]; then wget -P download-cache https://github.com/openssl/openssl/releases/download/openssl-$OPENSSL_VER/openssl-$OPENSSL_VER.tar.gz || 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 - - wget https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/boringssl-20230902-x64-focal.tar.gz - - wget https://github.com/openresty/openresty-deps-prebuild/releases/download/v20230902/curl-h3-x64-focal.tar.gz - - git clone https://github.com/openresty/test-nginx.git - - git clone https://github.com/openresty/openresty.git ../openresty - - git clone https://github.com/openresty/no-pool-nginx.git ../no-pool-nginx - - git clone https://github.com/openresty/openresty-devel-utils.git - - git clone https://github.com/openresty/mockeagain.git - - git clone https://github.com/openresty/lua-cjson.git lua-cjson - - git clone https://github.com/openresty/lua-upstream-nginx-module.git ../lua-upstream-nginx-module - - git clone https://github.com/openresty/echo-nginx-module.git ../echo-nginx-module - - git clone https://github.com/openresty/nginx-eval-module.git ../nginx-eval-module - - git clone https://github.com/simpl/ngx_devel_kit.git ../ndk-nginx-module - - git clone https://github.com/FRiCKLE/ngx_coolkit.git ../coolkit-nginx-module - - git clone https://github.com/openresty/headers-more-nginx-module.git ../headers-more-nginx-module - - git clone https://github.com/openresty/drizzle-nginx-module.git ../drizzle-nginx-module - - git clone https://github.com/openresty/set-misc-nginx-module.git ../set-misc-nginx-module - - git clone https://github.com/openresty/memc-nginx-module.git ../memc-nginx-module - - git clone https://github.com/openresty/rds-json-nginx-module.git ../rds-json-nginx-module - - git clone https://github.com/openresty/srcache-nginx-module.git ../srcache-nginx-module - - git clone https://github.com/openresty/redis2-nginx-module.git ../redis2-nginx-module - - git clone https://github.com/openresty/lua-resty-core.git ../lua-resty-core - - git clone https://github.com/openresty/lua-resty-lrucache.git ../lua-resty-lrucache - - git clone https://github.com/openresty/lua-resty-mysql.git ../lua-resty-mysql - - git clone https://github.com/spacewander/lua-resty-rsa.git ../lua-resty-rsa - - git clone https://github.com/openresty/lua-resty-string.git ../lua-resty-string - - git clone https://github.com/openresty/stream-lua-nginx-module.git ../stream-lua-nginx-module - - git clone -b v2.1-agentzh https://github.com/openresty/luajit2.git luajit2 - -before_script: - - mysql -uroot -e "create database ngx_test; CREATE USER 'ngx_test'@'%' IDENTIFIED WITH mysql_native_password BY 'ngx_test'; grant all on ngx_test.* to 'ngx_test'@'%'; flush privileges;" - -script: - - sudo tar -C / -xf curl-h3-x64-focal.tar.gz - - export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:/opt/curl-h3/bin:$PATH - - ngx-releng > check.txt || true - - lines=`wc -l check.txt | awk '{print $1}'`; if [ $lines -gt 5 ]; then cat check.txt; exit 1; fi - - sudo iptables -I OUTPUT 1 -p udp --dport 10086 -j REJECT - - sudo iptables -I OUTPUT -p tcp --dst 127.0.0.2 --dport 12345 -j DROP - - sudo iptables -I OUTPUT -p udp --dst 127.0.0.2 --dport 12345 -j DROP - - sudo ip route add prohibit 0.0.0.1/32 - - sudo sysctl -w kernel.pid_max=10000 - - cd luajit2/ - - 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) - - sudo make install PREFIX=$LUAJIT_PREFIX > build.log 2>&1 || (cat build.log && exit 1) - - cd .. - - tar xzf download-cache/drizzle7-$DRIZZLE_VER.tar.gz && cd drizzle7-$DRIZZLE_VER - - ./configure --prefix=$LIBDRIZZLE_PREFIX --without-server > build.log 2>&1 || (cat build.log && exit 1) - - make libdrizzle-1.0 -j$JOBS > build.log 2>&1 || (cat build.log && exit 1) - - sudo make install-libdrizzle-1.0 > build.log 2>&1 || (cat build.log && exit 1) - - cd ../mockeagain/ && make CC=$CC -j$JOBS && cd .. - - cd lua-cjson/ && make -j$JOBS && sudo make install && cd .. - #- if [ -n "$PCRE2_VER" ]; then tar zxf download-cache/pcre2-$PCRE2_VER.tar.gz; cd pcre2-$PCRE2_VER/; ./configure --prefix=$PCRE2_PREFIX --enable-jit --enable-utf > build.log 2>&1 || (cat build.log && exit 1); make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1); sudo PATH=$PATH make install > build.log 2>&1 || (cat build.log && exit 1); cd ..; fi - #- if [ -n "$OPENSSL_VER" ]; then tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz; cd openssl-$OPENSSL_VER/; patch -p1 < ../../openresty/patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch; ./config shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX --libdir=lib -DPURIFY > build.log 2>&1 || (cat build.log && exit 1); make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1); sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1); cd ..; fi - - if [ -n "$BORINGSSL" ]; then sudo rm -fr $OPENSSL_PREFIX && sudo mkdir -p $OPENSSL_PREFIX && sudo tar -C $OPENSSL_PREFIX -xf boringssl-20230902-x64-focal.tar.gz --strip-components=1; fi - - export NGX_BUILD_CC=$CC - - sh util/build-without-ssl.sh $NGINX_VERSION > build.log 2>&1 || (cat build.log && exit 1) - - sh util/build-with-dd.sh $NGINX_VERSION > build.log 2>&1 || (cat build.log && exit 1) - - rm -fr buildroot - - sh util/build.sh $NGINX_VERSION > build.log 2>&1 || (cat build.log && exit 1) - - nginx -V - - python3 ./util/nc_server.py & - - ldd `which nginx`|grep -E 'luajit|ssl|pcre' - - export LD_PRELOAD=$PWD/mockeagain/mockeagain.so - - export LD_LIBRARY_PATH=$PWD/mockeagain:$LD_LIBRARY_PATH - - export TEST_NGINX_HTTP3_CRT=$PWD/t/cert/http3/http3.crt - - export TEST_NGINX_HTTP3_KEY=$PWD/t/cert/http3/http3.key - - export TEST_NGINX_RESOLVER=8.8.4.4 - - dig +short myip.opendns.com @resolver1.opendns.com || exit 0 - - dig +short @$TEST_NGINX_RESOLVER openresty.org || exit 0 - - dig +short @$TEST_NGINX_RESOLVER agentzh.org || exit 0 - - /usr/bin/env perl $(command -v prove) -I. -Itest-nginx/inc -Itest-nginx/lib -r t/