Skip to content

fix(proxy-wasm) improve instance recycling robustness #2508

fix(proxy-wasm) improve instance recycling robustness

fix(proxy-wasm) improve instance recycling robustness #2508

Workflow file for this run

name: CI
on:
push:
branches: main
paths-ignore:
- '**/*.md'
- '**/release.yml'
- '**/ci-large.yml'
pull_request:
branches: '**'
paths-ignore:
- '**/*.md'
- '**/release.yml'
- '**/ci-large.yml'
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
unit:
name: 'Unit'
#if: ${{ false }}
strategy:
fail-fast: false
matrix:
label: [""]
os: [ubuntu-latest]
cc: [gcc-9]
ngx: [1.25.2]
openresty: [""]
runtime: [wasmer]
wasmtime: [""]
wasmer: [3.1.1]
v8: [""]
ssl: [ssl]
debug: [debug, no_debug]
hup: [no_hup]
module_type: ["static"]
include:
# Wasmtime
- runtime: wasmtime
wasmtime: 12.0.1
os: ubuntu-latest
cc: gcc-9
ngx: 1.25.2
ssl: ssl
debug: debug
hup: hup
# V8
- runtime: v8
v8: 11.4.183.23
os: ubuntu-latest
cc: gcc-9
ngx: 1.25.2
ssl: ssl
debug: debug
hup: no_hup
# Old Nginx
- label: old_nginx
os: ubuntu-latest
cc: gcc-9
ngx: 1.21.6
runtime: wasmer
wasmer: 3.1.1
ssl: ssl
debug: debug
hup: no_hup
# Nginx + dynamic ngx_wasm_module + HUP
- label: dynamic_nginx
os: ubuntu-latest
cc: gcc-9
ngx: 1.25.2
runtime: wasmtime
wasmtime: 12.0.1
ssl: ssl
debug: debug
hup: hup
module_type: dynamic
# No SSL
- os: ubuntu-latest
cc: gcc-9
ngx: 1.25.2
runtime: wasmer
wasmer: 3.1.1
ssl: no_ssl
debug: no_debug
hup: no_hup
# OpenResty
- label: openresty
os: ubuntu-latest
cc: gcc-9
openresty: 1.21.4.1
runtime: wasmtime
wasmtime: 12.0.1
ssl: ssl
debug: debug
hup: no_hup
# OpenResty + dynamic ngx_wasm_module
- label: dynamic_openresty
os: ubuntu-latest
cc: gcc-9
openresty: 1.21.4.1
runtime: wasmtime
wasmtime: 12.0.1
ssl: ssl
debug: debug
hup: no_hup
module_type: dynamic
uses: ./.github/workflows/job-unit-tests.yml
with:
os: ${{ matrix.os }}
cc: ${{ matrix.cc }}
ngx: ${{ matrix.ngx }}
openresty: ${{ matrix.openresty }}
runtime: ${{ matrix.runtime }}
wasmtime: ${{ matrix.wasmtime }}
wasmer: ${{ matrix.wasmer }}
v8: ${{ matrix.v8 }}
ssl: ${{ matrix.ssl }}
debug: ${{ matrix.debug }}
hup: ${{ matrix.hup }}
module_type: ${{ matrix.module_type }}
coverage: true
secrets: inherit
coveralls:
name: 'Coveralls'
needs: unit
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
if: ${{ !env.ACT }}
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
carryforward: 'unit-ngx_1.25.2-wasmer-ssl-debug-no_hup-static,unit-ngx_1.25.2-wasmer-ssl-no_debug-no_hup-static,unit-ngx_1.25.2-wasmtime-ssl-debug-hup-static,unit-ngx_1.25.2-wasmtime-ssl-debug-hup-dynamic,unit-ngx_1.25.2-v8-ssl-debug-no_hup-static,unit-ngx_1.21.6-wasmer-ssl-debug-no_hup-static,unit-ngx_1.25.2-wasmer-no_ssl-no_debug-no_hup-static,unit-openresty_1.21.4.1-wasmtime-ssl-debug-no_hup-static,unit-openresty_1.21.4.1-wasmtime-ssl-debug-no_hup-dynamic'
valgrind:
name: 'Valgrind'
#if: ${{ false }}
strategy:
fail-fast: false
matrix:
label: [""]
os: [ubuntu-22.04]
cc: [gcc-10]
ngx: [1.25.2]
openresty: [""]
runtime: [wasmer]
wasmtime: [""]
wasmer: [3.1.1]
v8: [""]
hup: [no_hup, hup]
debug: [debug]
include:
# Wasmtime
- runtime: wasmtime
wasmtime: 12.0.1
os: ubuntu-22.04
cc: gcc-10
ngx: 1.25.2
hup: no_hup
debug: debug
# V8
- runtime: v8
v8: 11.4.183.23
os: ubuntu-22.04
cc: gcc-10
ngx: 1.25.2
debug: debug
hup: no_hup
# OpenResty
- label: openresty
os: ubuntu-22.04
cc: gcc-10
openresty: 1.21.4.1
ngx:
runtime: wasmer
wasmer: 3.1.1
debug: debug
hup: no_hup
uses: ./.github/workflows/job-valgrind-tests.yml
with:
os: ${{ matrix.os }}
cc: ${{ matrix.cc }}
ngx: ${{ matrix.ngx }}
openresty: ${{ matrix.openresty }}
runtime: ${{ matrix.runtime }}
wasmtime: ${{ matrix.wasmtime }}
wasmer: ${{ matrix.wasmer }}
v8: ${{ matrix.v8 }}
hup: ${{ matrix.hup }}
debug: ${{ matrix.debug }}
secrets: inherit
lint:
name: 'Lint'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 'Setup cache - rustup toolchain'
uses: actions/cache@v3
if: ${{ !env.ACT }}
with:
path: |
~/.rustup/settings.toml
~/.rustup/toolchains/*
~/.rustup/update-hashes/*
key: rust-toolchain-${{ runner.os }}-${{ hashFiles('.github/**/*.yml', '.github/**/*.sh', 'rust-toolchain') }}
- uses: actions-rs/toolchain@v1
with:
components: clippy
- name: 'Setup cache - work/ dir'
uses: actions/cache@v3
if: ${{ !env.ACT }}
with:
path: |
work/downloads
work/openssl
key: lint-${{ runner.os }}-${{ hashFiles('util/**/*.sh', 'util/**/*.pl', 'util/**/*.awk', '.github/**/*.yml', '.github/**/*.sh', '.github/**/*.js', 'rust-toolchain', 'Makefile') }}
- run: make setup
- run: make lint
- uses: actions-rs/clippy-check@v1
if: ${{ !env.ACT }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features
- run: |
if [[ $(make reindex 2>&1 | tee reindex.out | grep -c done) -gt 0 ]]; then
cat reindex.out >&2
exit 1
fi
analyzer:
name: 'Clang analyzer'
strategy:
fail-fast: false
matrix:
cc: [clang-11]
openresty: [1.21.4.1]
runtime: [wasmtime, wasmer, v8]
wasmtime: [12.0.1]
wasmer: [3.1.1]
v8: [11.4.183.23]
ssl: [ssl]
debug: [debug, no_debug]
include:
# No SSL
- os: ubuntu-latest
cc: clang-11
ngx: 1.25.2
runtime: wasmer
wasmer: 3.1.1
ssl: no_ssl
debug: debug
uses: ./.github/workflows/job-clang-analyzer.yml
with:
cc: ${{ matrix.cc }}
ngx: ${{ matrix.ngx }}
openresty: ${{ matrix.openresty }}
runtime: ${{ matrix.runtime }}
wasmtime: ${{ matrix.wasmtime }}
wasmer: ${{ matrix.wasmer }}
v8: ${{ matrix.v8 }}
ssl: ${{ matrix.ssl }}
debug: ${{ matrix.debug }}
build:
name: 'Build'
#if: ${{ false }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
label: [""]
os: [ubuntu-latest]
cc: [clang-14, gcc-10]
ngx: [1.25.2]
runtime: [wasmtime, wasmer, v8]
wasmtime: [12.0.1]
wasmer: [3.1.1]
v8: [11.4.183.23]
include:
- label: old_nginx
os: ubuntu-latest
cc: clang-14
ngx: 1.21.6
runtime: wasmtime
wasmtime: 12.0.1
steps:
- uses: actions/checkout@v3
- name: 'Setup cache - work/ dir'
uses: actions/cache@v3
if: ${{ !env.ACT }}
with:
path: |
work/downloads
work/runtimes
work/openssl
key: work-${{ runner.os }}-${{ matrix.cc }}-${{ matrix.ngx }}-${{ matrix.openresty }}-${{ matrix.runtime }}-${{ hashFiles('util/**/*.sh', 'util/**/*.pl', 'util/**/*.awk', '.github/**/*.yml', '.github/**/*.sh', '.github/**/*.js', 'rust-toolchain', 'Makefile') }}
- name: Setup Wasm runtime
run: ./util/runtime.sh -R ${{ matrix.runtime }} -V ${{ matrix[matrix.runtime] }}
- run: make setup
- run: make test-build
env:
NGX_WASM_RUNTIME: ${{ matrix.runtime }}