Skip to content

feat: add Rate Limiter binding support #995

feat: add Rate Limiter binding support

feat: add Rate Limiter binding support #995

Workflow file for this run

name: Pull Request
on:
- pull_request
- workflow_dispatch
permissions:
contents: read
jobs:
worker-build:
name: Test & Build worker-build
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@1.82.0
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: ~/.cargo/registry ~/.cargo/git target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- run: cargo test -p worker-build
- run: cargo build -p worker-build
- uses: actions/upload-artifact@v4
with:
name: worker-build
path: target/debug/worker-build
build-templates:
name: Build Templates
needs: worker-build
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@1.82.0
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: ~/.cargo/registry ~/.cargo/git target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- uses: actions/download-artifact@v4
with:
name: worker-build
path: ./target/debug
- name: Make worker-build executable
run: chmod +x ./target/debug/worker-build
- uses: cargo-bins/cargo-binstall@main
- name: Install cargo-generate
run: cargo binstall cargo-generate
- name: Generate and build all templates
run: |
mkdir -p generated
for template in templates/*/; do
template_name=$(basename "$template")
if [ "$template_name" = "leptos" ]; then
echo "Skipping leptos template"
continue
fi
echo "Generating $template_name"
cargo generate --path $template --name "$template_name" --destination ./generated --force
cd "generated/$template_name"
echo "Building $template_name"
../../target/debug/worker-build
cd ../..
done
build-examples:
name: Build Examples
needs: worker-build
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@1.82.0
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: ~/.cargo/registry ~/.cargo/git target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- uses: actions/download-artifact@v4
with:
name: worker-build
path: ./target/debug
- name: Make worker-build executable
run: chmod +x ./target/debug/worker-build
- name: Build all examples
run: |
sed -i 's/, "examples\/axum"//g' Cargo.toml
for example in examples/*/; do
example_name=$(basename "$example")
if [ "$example_name" = "coredump" ]; then
echo "Skipping coredump example"
continue
fi
echo "Building $example_name"
cd "$example"
../../target/debug/worker-build
cd ../..
done
rustfmt:
name: Formatter
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@1.82.0
with:
components: rustfmt, clippy
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: ~/.cargo/registry ~/.cargo/git target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Check Formatting
run: cargo fmt --all -- --check
- name: Check for idiomatic code
run: cargo clippy --features d1,queue --all-targets --workspace -- -D warnings
- name: Check for idiomatic code (http)
run: cargo clippy --all-features --package worker-sandbox --all-targets -- -D warnings
- name: Check for errors
run: cargo check
test:
name: Test
needs: worker-build
runs-on: ubuntu-latest
steps:
- uses: dtolnay/rust-toolchain@1.82.0
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/download-artifact@v4
with:
name: worker-build
path: ./target/debug
- name: Make worker-build executable
run: chmod +x ./target/debug/worker-build
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: ~/.cargo/registry ~/.cargo/git target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Install packages
run: |
sudo apt update
sudo apt clean
sudo apt install -y build-essential libssl-dev netcat-traditional libc++-dev
- name: Install npm dependencies
run: npm ci
- name: Build Wasm Bindgen
run: cd wasm-bindgen && cargo build -p wasm-bindgen-cli --bin wasm-bindgen --bin wasm-bindgen-test-runner
- name: Install wasm32 target
run: rustup target add wasm32-unknown-unknown
- name: Run wasm-bindgen tests
env:
CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER: ${{ github.workspace }}/wasm-bindgen/target/debug/wasm-bindgen-test-runner
run: cargo test -p worker --target wasm32-unknown-unknown
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Container
uses: docker/build-push-action@v6
with:
context: ./test/container-echo
push: false
load: true
tags: worker-dev/echocontainer:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Run tests
env:
TEST_CONTAINER_NAME: worker-dev/echocontainer:latest
run: npm run test
- name: Run tests (http)
run: npm run test-http