mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
90cb4bbbb9
We are not cleaning the rest of xtask artifacts, so this effectively does nothing. xtask is small and changes rarely, so this shouldn't really matter.
146 lines
3.5 KiB
YAML
146 lines
3.5 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
|
|
|
|
# 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]
|
|
|
|
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
|