mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
5534bc0321
My current feeling is that the build maintenance friction it creates is not proportional to the benefits it provides. We are pretty frugal with the set of Rust dependencies, and our security model is "we run build.rs and proc macros", so it doesn't seem like cargo audit could help us much.
150 lines
3.7 KiB
YAML
150 lines
3.7 KiB
YAML
name: CI
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
- staging
|
|
- trying
|
|
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
CARGO_NET_RETRY: 10
|
|
CI: 1
|
|
RUST_BACKTRACE: short
|
|
RUSTFLAGS: -D warnings
|
|
RUSTUP_MAX_RETRIES: 10
|
|
|
|
jobs:
|
|
rust:
|
|
name: Rust
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
CC: deny_c
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
# We need to disable the existing toolchain to avoid updating rust-docs
|
|
# which takes a long time. The fastest way to do this is to rename the
|
|
# existing folder, as deleting it takes about as much time as not doing
|
|
# anything and just updating rust-docs.
|
|
- name: Rename existing rust toolchain (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: Rename-Item C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc.old
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
components: rustfmt, rust-src
|
|
|
|
- name: Cache cargo directories
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
- name: Cache cargo target dir
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: target
|
|
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
- name: Compile
|
|
run: cargo test --no-run --locked
|
|
|
|
- name: Test
|
|
run: cargo test
|
|
|
|
- name: Prepare cache
|
|
run: cargo xtask pre-cache
|
|
|
|
- name: Prepare cache 2
|
|
if: matrix.os == 'windows-latest'
|
|
run: Remove-Item ./target/debug/xtask.exe, ./target/debug/deps/xtask.exe
|
|
|
|
# Weird targets to catch non-portable code
|
|
rust-cross:
|
|
name: Rust Cross
|
|
runs-on: ubuntu-latest
|
|
|
|
env:
|
|
targets: "powerpc-unknown-linux-gnu x86_64-unknown-linux-musl"
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Install Rust targets
|
|
run: rustup target add ${{ env.targets }}
|
|
|
|
- name: Cache cargo directories
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
|
|
- name: Check
|
|
run: |
|
|
for target in ${{ env.targets }}; do
|
|
cargo check --target=$target --all-targets
|
|
done
|
|
|
|
typescript:
|
|
name: TypeScript
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Nodejs
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: 12.x
|
|
|
|
- run: npm ci
|
|
working-directory: ./editors/code
|
|
|
|
# - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
|
|
# if: runner.os == 'Linux'
|
|
# working-directory: ./editors/code
|
|
|
|
- run: npm run lint
|
|
working-directory: ./editors/code
|
|
|
|
- name: Run vscode tests
|
|
uses: GabrielBB/xvfb-action@v1.2
|
|
env:
|
|
VSCODE_CLI: 1
|
|
with:
|
|
run: npm --prefix ./editors/code test
|
|
# working-directory: ./editors/code # does not work: https://github.com/GabrielBB/xvfb-action/issues/8
|
|
|
|
- run: npm run package --scripts-prepend-node-path
|
|
working-directory: ./editors/code
|