From e95100d62c1f1e21050749c659a13a5bb8e20502 Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 12:37:26 +0800 Subject: [PATCH 1/3] tests: migrations github action from travis --- .github/workflows/build_and_test.yml | 150 +++++++++++++++++++++++++++ .travis.yml | 100 ------------------ 2 files changed, 150 insertions(+), 100 deletions(-) create mode 100644 .github/workflows/build_and_test.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml new file mode 100644 index 00000000..fd3b4fb6 --- /dev/null +++ b/.github/workflows/build_and_test.yml @@ -0,0 +1,150 @@ +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" + + services: + redis: + image: redis:7-alpine + ports: + - 6379:6379 + + env: + JOBS: 3 + NGX_BUILD_JOBS: 3 + CC: gcc + 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_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 \ + axel cpanminus \ + libtest-base-perl libtext-diff-perl liburi-perl libwww-perl \ + libtest-longstring-perl liblist-moreutils-perl \ + libgd-dev wget \ + 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 | 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 \ + openresty-pcre2 openresty-openssl3 openresty-pcre2-dev openresty-openssl3-dev + + - 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/simpl/ngx_devel_kit.git ../ndk-nginx-module + git clone --depth=1 https://github.com/openresty/lua-nginx-module.git ../lua-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/memc-nginx-module.git ../memc-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/lua-resty-core.git ../lua-resty-core + git clone --depth=1 https://github.com/openresty/lua-resty-lrucache.git ../lua-resty-lrucache + + # 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: 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 -l 127.0.0.1 -p 11211 -U 11211 -m 64 + sudo ss -lntup | grep 11211 + + - 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 addr add 10.254.254.1/24 dev lo + sudo ip addr add 10.254.254.2/24 dev lo + 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 mockeagain + run: cd mockeagain && make CC=$CC -j$JOBS + + - name: Build lua-cjson + run: cd lua-cjson && make -j$JOBS && sudo make install + + - name: Build nginx + run: | + export LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH + export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:$PATH + export NGX_BUILD_CC=$CC + 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 tests + run: | + export LD_LIBRARY_PATH=$LUAJIT_LIB:$PWD/mockeagain:$LD_LIBRARY_PATH + export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:$PATH + export LD_PRELOAD=$PWD/mockeagain/mockeagain.so + export TEST_NGINX_RESOLVER=8.8.4.4 + 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/lib -r t/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index dd915873..00000000 --- a/.travis.yml +++ /dev/null @@ -1,100 +0,0 @@ -sudo: required -dist: focal - -branches: - only: - - "master" - -os: linux - -language: c - -compiler: - - gcc - -addons: - apt: - packages: [ axel, cpanminus, libgd-dev, libtest-base-perl, libtext-diff-perl, liburi-perl, libwww-perl, libtest-longstring-perl, liblist-moreutils-perl, dnsutils, openssl, gnupg, ca-certificates, wget, lsb-release ] - -cache: - apt: true - directories: - - download-cache - -env: - global: - - LUAJIT_PREFIX=/opt/luajit21 - - LUAJIT_LIB=$LUAJIT_PREFIX/lib - - LD_LIBRARY_PATH=$LUAJIT_LIB:$LD_LIBRARY_PATH - - LUAJIT_INC=$LUAJIT_PREFIX/include/luajit-2.1 - - LUA_INCLUDE_DIR=$LUAJIT_INC - - PCRE2_VER=10.46 - - PCRE2_PREFIX=/opt/pcre2 - #- PCRE2_PREFIX=/usr/local/openresty/pcre2 - - PCRE2_LIB=$PCRE2_PREFIX/lib - - PCRE2_INC=$PCRE2_PREFIX/include - - OPENSSL_PREFIX=/opt/ssl3 - #- OPENSSL_PREFIX=/usr/local/openresty/openssl3 - - OPENSSL_LIB=$OPENSSL_PREFIX/lib - - OPENSSL_INC=$OPENSSL_PREFIX/include - - JOBS=3 - - NGX_BUILD_JOBS=$JOBS - - TEST_NGINX_SLEEP=0.006 - - TEST_NGINX_SKIP_COSOCKET_LOG_TEST=1 - matrix: - - NGINX_VERSION=1.29.4 OPENSSL_VER=3.5.4 OPENSSL_PATCH_VER=3.5.4 - -services: - - memcache - - redis-server - -before_install: - - 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 [ -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 - - git clone https://github.com/openresty/openresty-devel-utils.git - - git clone https://github.com/openresty/lua-cjson.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/simpl/ngx_devel_kit.git ../ndk-nginx-module - - git clone https://github.com/openresty/mockeagain.git - - git clone https://github.com/openresty/test-nginx.git - - git clone -b v2.1-agentzh https://github.com/openresty/luajit2.git - - git clone https://github.com/openresty/lua-nginx-module.git ../lua-nginx-module - - git clone https://github.com/openresty/echo-nginx-module.git ../echo-nginx-module - - git clone https://github.com/openresty/memc-nginx-module.git ../memc-nginx-module - - git clone https://github.com/openresty/headers-more-nginx-module.git ../headers-more-nginx-module - - git clone https://github.com/openresty/lua-resty-lrucache.git ../lua-resty-lrucache - - git clone https://github.com/openresty/lua-resty-core.git ../lua-resty-core - -script: - - sudo iptables -I OUTPUT 1 -p udp --dport 10086 -j REJECT - - sudo iptables -A OUTPUT -p tcp --dst 127.0.0.2 --dport 12345 -j DROP - - sudo iptables -A OUTPUT -p udp --dst 127.0.0.2 --dport 12345 -j DROP - - sudo ip addr add 10.254.254.1/24 dev lo - - sudo ip addr add 10.254.254.2/24 dev lo - - sudo ip route add prohibit 0.0.0.1/32 - - 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 - - cd luajit2 - - make -j$JOBS CCDEBUG=-g Q= PREFIX=$LUAJIT_PREFIX CC=$CC XCFLAGS='-DLUA_USE_APICHECK -DLUA_USE_ASSERT' > 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 ../test-nginx && sudo cpanm . && cd .. - - cd lua-cjson/ && make -j$JOBS && sudo make install && cd .. - - cd mockeagain/ && make CC=$CC -j$JOBS && cd .. - - 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 - - export PATH=$PWD/work/nginx/sbin:$PWD/openresty-devel-utils:$PATH - - export NGX_BUILD_CC=$CC - - sh util/build.sh $NGINX_VERSION > build.log 2>&1 || (cat build.log && exit 1) - - nginx -V - - 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_RESOLVER=8.8.4.4 - - dig +short @$TEST_NGINX_RESOLVER openresty.org || exit 0 - - dig +short @$TEST_NGINX_RESOLVER agentzh.org || exit 0 - - prove -I. -Itest-nginx/lib -r t From bbf7b983bdf58704787c9f1cca90586a9e02b18d Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 12:52:33 +0800 Subject: [PATCH 2/3] tests: migrations github action from travis --- t/127-uthread-kill.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/127-uthread-kill.t b/t/127-uthread-kill.t index 1eb07a42..cd29cafd 100644 --- a/t/127-uthread-kill.t +++ b/t/127-uthread-kill.t @@ -7,7 +7,7 @@ our $StapScript = $t::StapThread::StapScript; repeat_each(2); -plan tests => repeat_each() * (blocks() * 5 + 1); +plan tests => repeat_each() * (blocks() * 5 + 1) - 2; $ENV{TEST_NGINX_RESOLVER} ||= '8.8.8.8'; $ENV{TEST_NGINX_MEMCACHED_PORT} ||= '11211'; From 37ce005aace1e8153871972dbe4cf68675d79cb1 Mon Sep 17 00:00:00 2001 From: Jun Ouyang Date: Thu, 12 Mar 2026 12:54:54 +0800 Subject: [PATCH 3/3] trigger