Files
sablier/.github/workflows/plugins.yml
Alexis Couvreur 3891027e23 feat(plugin): add proxywasm plugin (#284)
* feat(plugin): add `proxywasm` plugin

The `proxywasm` plugin is a WASM Filter following the ProxyWasm ABI Specification using the proxywasm go sdk

This allows extensibility with any reverse proxy who implements the ProxyWasm ABI Specification.

The current WASM Filter was successfully tested with APISIX, Envoy, Nginx with ngx_wasm_module from Kong and Istio.

Fixes #145
2024-10-01 17:30:14 -07:00

360 lines
9.0 KiB
YAML

name: Build Sablier plugins
on:
push:
branches:
- main
- beta
pull_request:
jobs:
build:
name: Build Sablier docker image once and share it to E2E jobs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
tags: acouvreur/sablier:local
outputs: type=docker,dest=/tmp/sablier.tar
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: sablier-image-tar
path: /tmp/sablier.tar
traefik:
name: Build Traefik Sablier Plugin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: plugins/traefik/go.sum
- name: Build
run: cd plugins/traefik && go build -v .
- name: Test
run: cd plugins/traefik && go test -v ./...
traefik_e2e:
name: Run Sablier E2E tests for Traefik middleware
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
provider: [docker, docker_swarm, kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
plugins/traefik/go.sum
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Test ${{ matrix.provider }}
run: cd plugins/traefik/e2e/${{ matrix.provider }} && bash ./run.sh
nginx_e2e:
name: Run Sablier E2E tests for Nginx NJS module with Sablier
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
provider: [docker, docker_swarm] # , kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Test ${{ matrix.provider }}
run: cd plugins/nginx/e2e/${{ matrix.provider }} && bash ./run.sh
caddy:
name: Build Caddy Sablier Plugin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: plugins/caddy/go.sum
- name: Build
run: cd plugins/caddy && go build -v .
- name: Test
run: cd plugins/caddy && go test -v ./...
build-caddy:
name: Build Caddy docker image once and share it to Caddy E2E jobs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
context: plugins/caddy
file: plugins/caddy/Dockerfile
tags: caddy:local
outputs: type=docker,dest=/tmp/caddy.tar
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: caddy-image-tar
path: /tmp/caddy.tar
caddy_e2e:
name: Run Sablier E2E tests for Caddy middleware
runs-on: ubuntu-latest
needs:
- build
- build-caddy
strategy:
fail-fast: false
matrix:
provider: [docker, docker_swarm] # , kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Download Caddy artifact
uses: actions/download-artifact@v4
with:
name: caddy-image-tar
path: /tmp
- name: Load Caddy Docker image
run: docker load --input /tmp/caddy.tar
- name: Test ${{ matrix.provider }}
run: cd plugins/caddy/e2e/${{ matrix.provider }} && bash ./run.sh
build-proxywasm:
name: Build ProxyWasm Plugin once and share it to ProxyWasm E2E jobs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup TinyGo
uses: acifani/setup-tinygo@v2
with:
tinygo-version: '0.31.2'
- name: Build
run: make proxywasm
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: proxywasm-plugin-wasm
path: ./plugins/proxywasm/sablierproxywasm.wasm
proxywasm_apisix_e2e:
name: Run Sablier E2E tests for Proxywasm middleware on Apache APISIX
runs-on: ubuntu-latest
needs:
- build
- build-proxywasm
strategy:
fail-fast: false
matrix:
provider: [ docker ] #, docker_swarm, kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Download Proxywasm artifact
uses: actions/download-artifact@v4
with:
name: proxywasm-plugin-wasm
path: ./plugins/proxywasm
- name: Test ${{ matrix.provider }}
run: cd plugins/proxywasm/e2e/apacheapisix/${{ matrix.provider }} && bash ./run.sh
proxywasm_envoy_e2e:
name: Run Sablier E2E tests for Proxywasm middleware on Envoy
runs-on: ubuntu-latest
needs:
- build
- build-proxywasm
strategy:
fail-fast: false
matrix:
provider: [ docker ] #, docker_swarm, kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Download Proxywasm artifact
uses: actions/download-artifact@v4
with:
name: proxywasm-plugin-wasm
path: ./plugins/proxywasm
- name: Test ${{ matrix.provider }}
run: cd plugins/proxywasm/e2e/envoy/${{ matrix.provider }} && bash ./run.sh
proxywasm_nginx_e2e:
name: Run Sablier E2E tests for Proxywasm middleware on Nginx
runs-on: ubuntu-latest
needs:
- build
- build-proxywasm
strategy:
fail-fast: false
matrix:
provider: [ docker ] #, docker_swarm, kubernetes]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go 1.22
uses: actions/setup-go@v5
with:
go-version: 1.22
cache-dependency-path: |
go.sum
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: sablier-image-tar
path: /tmp
- name: Load Docker image
run: docker load --input /tmp/sablier.tar
- name: Download Proxywasm artifact
uses: actions/download-artifact@v4
with:
name: proxywasm-plugin-wasm
path: ./plugins/proxywasm
- name: Test ${{ matrix.provider }}
run: cd plugins/proxywasm/e2e/nginx/${{ matrix.provider }} && bash ./run.sh