Project Support in the VS Code Extension #4425
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
name: CI Build and Test | |
on: | |
pull_request: | |
branches: [main] | |
merge_group: | |
workflow_dispatch: | |
# Cancel in-progress run when a pull request is updated | |
# Code taken from: | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
NODE_VERSION: "18.17.1" | |
PYTHON_VERSION: "3.11" | |
RUST_TOOLCHAIN_VERSION: "1.73" | |
RUST_TOOLCHAIN_COMPONENTS: rustfmt clippy | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Setup rust toolchain | |
uses: ./.github/actions/toolchains/rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: ${{ env.RUST_TOOLCHAIN_COMPONENTS }} | |
- name: Check Formatting | |
run: cargo fmt --all -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Setup rust toolchain | |
uses: ./.github/actions/toolchains/rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: ${{ env.RUST_TOOLCHAIN_COMPONENTS }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Clippy Lints | |
run: cargo clippy --all-targets --all-features -- -D warnings | |
benches: | |
name: Benches | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Setup rust toolchain | |
uses: ./.github/actions/toolchains/rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: ${{ env.RUST_TOOLCHAIN_COMPONENTS }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: cargo bench | |
run: cargo bench --workspace | |
web-check: | |
name: Check web files | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: npm install | |
run: npm install | |
- name: npm check | |
run: npm run check | |
build: | |
name: Build and test | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
runs-on: ${{matrix.os}} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Setup rust toolchain | |
uses: ./.github/actions/toolchains/rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: ${{ env.RUST_TOOLCHAIN_COMPONENTS }} | |
- name: Add additional Rust targets | |
run: | | |
rustup target add aarch64-apple-darwin | |
if: matrix.os == 'macos-latest' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Prereqs | |
run: python ./prereqs.py --install | |
- name: Build and Test | |
run: python ./build.py --no-check | |
integration-tests: | |
name: Integration tests | |
if: ${{ ! github.event.pull_request }} | |
timeout-minutes: 15 | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
runs-on: ${{matrix.os}} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "true" | |
- name: Setup rust toolchain | |
uses: ./.github/actions/toolchains/rust | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: ${{ env.RUST_TOOLCHAIN_COMPONENTS }} | |
- name: Add additional Rust targets | |
run: | | |
rustup target add aarch64-apple-darwin | |
if: matrix.os == 'macos-latest' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Prereqs | |
run: python ./prereqs.py --install | |
- name: Run integration tests | |
run: python ./build.py --no-check --no-test --wasm --npm --vscode --integration-tests |