Skip to content

feat(proxy-wasm) foreign function support #3660

feat(proxy-wasm) foreign function support

feat(proxy-wasm) foreign function support #3660

Workflow file for this run

name: CI
on:
push:
branches: main
paths-ignore:
- '**/*.md'
- '**/release.yml'
- '**/ci-large.yml'
- 'assets/release/Dockerfiles/*'
pull_request:
branches: '**'
paths-ignore:
- '**/*.md'
- '**/release.yml'
- '**/ci-large.yml'
- '**/release.sh'
- 'assets/release/Dockerfiles/*'
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
unit:
name: 'Unit'
#if: ${{ false }}
#timeout-minutes: see job-unit-tests.yml
strategy:
fail-fast: false
matrix:
label: [""]
os: [ubuntu-latest]
cc: [gcc-12]
ngx: [1.27.2]
openresty: [""]
runtime: [wasmer]
wasmtime: [""]
wasmer: [3.1.1]
v8: [""]
ipc: [no_ipc]
ssl: [ssl]
debug: [debug, no_debug]
hup: [no_hup]
module_type: [static]
include:
# Wasmtime
- runtime: wasmtime
wasmtime: 26.0.0
os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
ipc: no_ipc
ssl: ssl
debug: debug
hup: hup
# V8
- runtime: v8
v8: 12.0.267.17
os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
ipc: no_ipc
ssl: ssl
debug: debug
hup: no_hup
# wasm32-unknown-unknown
- runtime: wasmtime
wasmtime: 26.0.0
os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
ipc: no_ipc
ssl: no_ssl
debug: debug
hup: no_hup
wasm_target: wasm32-unknown-unknown
# Old Nginx
- label: old_nginx
os: ubuntu-latest
cc: gcc-12
ngx: 1.21.6
runtime: wasmer
wasmer: 3.1.1
ipc: no_ipc
ssl: ssl
debug: debug
hup: no_hup
# Nginx + dynamic ngx_wasmx_module + HUP
- label: dynamic_nginx
os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
runtime: wasmtime
wasmtime: 26.0.0
ipc: no_ipc
ssl: ssl
debug: debug
hup: hup
module_type: dynamic
# No SSL
- os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
runtime: wasmer
wasmer: 3.1.1
ipc: no_ipc
ssl: no_ssl
debug: no_debug
hup: no_hup
# OpenResty
- label: openresty
os: ubuntu-latest
cc: gcc-12
openresty: 1.27.1.1
runtime: wasmtime
wasmtime: 26.0.0
ipc: no_ipc
ssl: ssl
debug: debug
hup: no_hup
# OpenResty + dynamic ngx_wasmx_module
- label: dynamic_openresty
os: ubuntu-latest
cc: gcc-12
openresty: 1.27.1.1
runtime: wasmtime
wasmtime: 26.0.0
ipc: no_ipc
ssl: ssl
debug: debug
hup: no_hup
module_type: dynamic
# IPC
- label: ipc
os: ubuntu-latest
cc: gcc-12
ngx: 1.27.2
runtime: wasmtime
wasmtime: 26.0.0
ipc: ipc
ssl: no_ssl
debug: debug
hup: no_hup
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 }}
ipc: ${{ matrix.ipc }}
ssl: ${{ matrix.ssl }}
debug: ${{ matrix.debug }}
hup: ${{ matrix.hup }}
wasm_target: ${{ matrix.wasm_target }}
module_type: ${{ matrix.module_type }}
coverage: true
secrets: inherit
coveralls:
name: 'Coveralls'
needs: unit
runs-on: ubuntu-latest
timeout-minutes: ${{ fromJSON(vars.GHA_DEFAULT_TIMEOUT) }}
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.27.2-wasmer-no_ipc-ssl-debug-no_hup-static,unit-ngx_1.27.2-wasmer-no_ipc-ssl-no_debug-no_hup-static,unit-ngx_1.27.2-wasmtime-no_ipc-ssl-debug-hup-static,unit-ngx_1.27.2-wasmtime-no_ipc-ssl-debug-hup-dynamic,unit-ngx_1.27.2-v8-no_ipc-ssl-debug-no_hup-static,unit-ngx_1.27.2-wasmtime-no_ipc-no_ssl-debug-no_hup-static-wasm32-unknown-unknown,unit-ngx_1.21.6-wasmer-no_ipc-ssl-debug-no_hup-static,unit-ngx_1.27.2-wasmer-no_ipc-no_ssl-no_debug-no_hup-static,unit-openresty_1.27.1.1-wasmtime-no_ipc-ssl-debug-no_hup-static,unit-openresty_1.27.1.1-wasmtime-no_ipc-ssl-debug-no_hup-dynamic,unit-ngx_1.27.2-wasmtime-ipc-no_ssl-debug-no_hup-static'
valgrind:
name: 'Valgrind'
#if: ${{ false }}
#timeout-minutes: see job-valgrind-tests.yml
strategy:
fail-fast: false
matrix:
label: ["full"]
runtime: [wasmer]
wasmer: [3.1.1]
os: [ubuntu-22.04]
cc: [gcc-12]
ngx: [1.27.2]
openresty: [""]
wasmtime: [""]
v8: [""]
hup: [no_hup, hup]
debug: [debug]
include:
# Wasmtime
- runtime: wasmtime
wasmtime: 26.0.0
os: ubuntu-22.04
cc: gcc-12
ngx: 1.27.2
hup: no_hup
debug: debug
path: t/01-wasm
# V8
- runtime: v8
v8: 12.0.267.17
os: ubuntu-22.04
cc: gcc-12
ngx: 1.27.2
debug: debug
hup: no_hup
path: t/01-wasm
# OpenResty
- label: openresty
runtime: wasmer
wasmer: 3.1.1
os: ubuntu-22.04
cc: gcc-12
openresty: 1.27.1.1
ngx:
debug: debug
hup: no_hup
path: t/04-openresty
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 }}
path: ${{ matrix.path }}
coverage: true
secrets: inherit
lint:
name: 'Lint'
runs-on: ubuntu-latest
timeout-minutes: ${{ fromJSON(vars.GHA_DEFAULT_TIMEOUT) }}
steps:
- uses: actions/checkout@v4
- name: 'Setup cache - rustup toolchain'
uses: actions/cache@v4
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: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: 'Setup cache - work/ dir'
uses: actions/cache@v4
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
- name: 'Rust lint'
if: ${{ !env.ACT }}
run: |
cargo clippy --all-features --manifest-path lib/Cargo.toml
cargo clippy --all-features --manifest-path t/lib/Cargo.toml
- 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'
#timeout-minutes: see job-clang-analyzer.yml
strategy:
fail-fast: false
matrix:
cc: [clang-15]
openresty: [1.27.1.1]
runtime: [wasmtime, wasmer, v8]
wasmtime: [26.0.0]
wasmer: [3.1.1]
v8: [12.0.267.17]
ssl: [ssl]
debug: [debug]
include:
# No SSL
- os: ubuntu-latest
cc: clang-15
ngx: 1.27.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 }}
#timeout-minutes: see job-build-tests.yml
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
cc: [clang-15, gcc-12]
ngx: [1.27.2]
runtime: [wasmtime, wasmer, v8]
wasmtime: [26.0.0]
wasmer: [3.1.1]
v8: [12.0.267.17]
uses: ./.github/workflows/job-build-tests.yml
with:
os: ${{ matrix.os }}
cc: ${{ matrix.cc }}
ngx: ${{ matrix.ngx }}
runtime: ${{ matrix.runtime }}
wasmtime: ${{ matrix.wasmtime }}
wasmer: ${{ matrix.wasmer }}
v8: ${{ matrix.v8 }}