fix: Avoid cloning a provided context unnecessarily #5655
Workflow file for this run
This file contains 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
# Whenever an open PR is updated, the workflow will be triggered | |
# | |
# This can get expensive, so we do a lot of caching and checks to prevent unnecessary runs | |
name: Rust CI | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- packages/** | |
- examples/** | |
- docs/guide/** | |
- src/** | |
- .github/** | |
- lib.rs | |
- Cargo.toml | |
- Makefile.toml | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
branches: | |
- main | |
paths: | |
- packages/** | |
- examples/** | |
- src/** | |
- .github/** | |
- lib.rs | |
- Cargo.toml | |
# workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
CARGO_INCREMENTAL: "0" | |
jobs: | |
check: | |
if: github.event.pull_request.draft == false | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: sudo apt-get update | |
- run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libxdo-dev | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- run: cargo check --all --examples --tests --all-features --all-targets | |
test: | |
if: github.event.pull_request.draft == false | |
name: Test Suite | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: sudo apt-get update | |
- run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libxdo-dev | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- uses: davidB/rust-cargo-make@v1 | |
- uses: browser-actions/setup-firefox@latest | |
- uses: jetli/[email protected] | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
with: # speed things up a bit | |
large-packages: false | |
docker-images: false | |
swap-storage: false | |
- run: cargo make tests | |
fmt: | |
if: github.event.pull_request.draft == false | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- run: cargo fmt --all -- --check | |
clippy: | |
if: github.event.pull_request.draft == false | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: sudo apt-get update | |
- run: sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- run: cargo clippy --workspace --examples --tests --all-features --all-targets -- -D warnings | |
# Only run semver checks if the PR is not a draft and does not have the breaking label | |
# Breaking PRs don't need to follow semver since they are breaking changes | |
# However, this means we won't attempt to backport them, so you should be careful about using this label, as it will | |
# likely make future backporting difficult | |
# | |
# todo: fix this so even if breaking changes have been merged, the fix can be backported | |
# | |
# This will stop working once the first breaking change has been merged, so we should really try to just backport the fix | |
# and *then* run the semver checks. Basically "would backporting this PR cause a breaking change on stable?" | |
# | |
# semver: | |
# if: github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'breaking') | |
# name: Semver Check | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: dtolnay/rust-toolchain@stable | |
# - uses: Swatinem/rust-cache@v2 | |
# with: | |
# cache-all-crates: "true" | |
# save-if: ${{ github.ref == 'refs/heads/main' }} | |
# - name: Check semver | |
# uses: obi1kenobi/cargo-semver-checks-action@v2 | |
# with: | |
# manifest-path: ./Cargo.toml | |
# exclude: "dioxus-cli, dioxus-ext" | |
playwright: | |
if: github.event.pull_request.draft == false | |
name: Playwright Tests | |
runs-on: ubuntu-latest | |
steps: | |
# Do our best to cache the toolchain and node install steps | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
with: # speed things up a bit | |
large-packages: false | |
docker-images: false | |
swap-storage: false | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: x86_64-unknown-linux-gnu,wasm32-unknown-unknown | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- name: Install dependencies | |
run: npm ci | |
working-directory: ./packages/playwright-tests | |
- name: Install Playwright | |
run: npm install -D @playwright/test | |
working-directory: ./packages/playwright-tests | |
- name: Install Playwright Browsers | |
run: npx playwright install --with-deps | |
working-directory: ./packages/playwright-tests | |
- name: Run Playwright tests | |
run: npx playwright test | |
working-directory: ./packages/playwright-tests | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 | |
matrix_test: | |
runs-on: ${{ matrix.platform.os }} | |
if: github.event.pull_request.draft == false | |
env: | |
RUST_CARGO_COMMAND: ${{ matrix.platform.cross == true && 'cross' || 'cargo' }} | |
strategy: | |
matrix: | |
platform: | |
- { | |
target: x86_64-pc-windows-msvc, | |
os: windows-latest, | |
toolchain: "1.75.0", | |
cross: false, | |
command: "test", | |
args: "--all --tests", | |
} | |
- { | |
target: x86_64-apple-darwin, | |
os: macos-latest, | |
toolchain: "1.75.0", | |
cross: false, | |
command: "test", | |
args: "--all --tests", | |
} | |
- { | |
target: aarch64-apple-ios, | |
os: macos-latest, | |
toolchain: "1.75.0", | |
cross: false, | |
command: "build", | |
args: "--package dioxus-mobile", | |
} | |
- { | |
target: aarch64-linux-android, | |
os: ubuntu-latest, | |
toolchain: "1.75.0", | |
cross: true, | |
command: "build", | |
args: "--package dioxus-mobile", | |
} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: install stable | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.platform.toolchain }} | |
targets: ${{ matrix.platform.target }} | |
components: rustfmt | |
- name: Install cross | |
if: ${{ matrix.platform.cross == true }} | |
uses: taiki-e/install-action@cross | |
- name: Free Disk Space (Ubuntu) | |
if: ${{ matrix.platform.os == 'ubuntu-latest' }} | |
uses: jlumbroso/[email protected] | |
with: # speed things up a bit | |
large-packages: false | |
docker-images: false | |
swap-storage: false | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: "${{ matrix.platform.target }}" | |
cache-all-crates: "true" | |
save-if: ${{ github.ref == 'refs/heads/main' }} | |
- name: test | |
run: | | |
${{ env.RUST_CARGO_COMMAND }} ${{ matrix.platform.command }} ${{ matrix.platform.args }} --target ${{ matrix.platform.target }} |