Skip to content

feat(site): add templates #3969

feat(site): add templates

feat(site): add templates #3969

Workflow file for this run

name: Rust CI
on:
pull_request:
push:
branches:
- main
concurrency:
group: rust-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
# Enable fail-fast behavior
shell: bash -e {0}
env:
RUSTFLAGS: "--cfg tokio_unstable"
CARGO_TERM_COLOR: always
jobs:
# Detect if rust code changed
changes:
runs-on: ubuntu-latest
outputs:
rust: ${{ steps.filter.outputs.rust }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
rust:
- '**/*.rs'
- '**/*.bare'
- '**/Cargo.toml'
- '**/Cargo.lock'
- '.github/workflows/rust.yml'
fmt:
name: Rustfmt
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.rust == 'true'
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
# clippy:
# name: Clippy
# runs-on: depot-ubuntu-24.04-8
# needs: changes
# if: needs.changes.outputs.rust == 'true'
# steps:
# - uses: actions/checkout@v4
#
# - uses: actions-rust-lang/setup-rust-toolchain@v1
# with:
# toolchain: stable
# components: clippy
#
# - uses: Swatinem/rust-cache@v2
# with:
# shared-key: "rust-ci"
# cache-on-failure: true
#
# - name: Run clippy
# run: cargo clippy --all-targets --all-features -- -W warnings
check:
name: Check
runs-on: depot-ubuntu-24.04-8
needs: changes
if: needs.changes.outputs.rust == 'true'
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: "rust-ci"
cache-on-failure: true
- name: Check
run: cargo check --all-targets --all-features
env:
# Deny warnings
RUSTFLAGS: --cfg tokio_unstable -D warnings
# test:
# name: Test
# runs-on: depot-ubuntu-24.04-8
# needs: changes
# if: needs.changes.outputs.rust == 'true'
# steps:
# - uses: actions/checkout@v4
#
# - uses: actions-rust-lang/setup-rust-toolchain@v1
# with:
# toolchain: stable
#
# - uses: Swatinem/rust-cache@v2
# with:
# # Share cache across all Rust jobs
# shared-key: "rust-ci"
# # Save cache even if the build fails
# cache-on-failure: true
# # Only save cache on main branch to avoid cache pollution from PRs
#
# - name: Run tests
# run: cargo test --verbose
#
# deny:
# name: Deny
# runs-on: ubuntu-latest
# needs: changes
# if: needs.changes.outputs.rust == 'true'
# steps:
# - uses: actions/checkout@v4
# - name: cargo deny
# uses: EmbarkStudios/cargo-deny-action@v1
# with:
# rust-version: "1.88.0"
# This job always runs and should be the required status check
status-check:
name: Rust CI Status
runs-on: ubuntu-latest
needs: [changes, fmt, check]
if: always()
steps:
- name: Check job status
run: |
# If rust code didn't change, consider it a pass
if [ "${{ needs.changes.outputs.rust }}" != "true" ]; then
echo "No Rust changes detected, skipping checks"
exit 0
fi
# If rust code changed, verify all jobs passed
if [ "${{ needs.fmt.result }}" == "failure" ] || [ "${{ needs.check.result }}" == "failure" ]; then
echo "One or more required jobs failed"
exit 1
fi
echo "All Rust checks passed"