feat: add Rate Limiter binding support #995
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |