mirror of
https://github.com/cloudflare/workers-rs.git
synced 2025-12-08 18:01:59 +00:00
219 lines
6.2 KiB
YAML
219 lines
6.2 KiB
YAML
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.83.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.83.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.83.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.83.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.83.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
|