]> git.lizzy.rs Git - rust.git/blob - .github/workflows/ci.yaml
Merge #5354
[rust.git] / .github / workflows / ci.yaml
1 name: CI
2 on:
3   pull_request:
4   push:
5     branches:
6     - master
7     - staging
8     - trying
9
10 env:
11   CARGO_INCREMENTAL: 0
12   CARGO_NET_RETRY: 10
13   CI: 1
14   RUST_BACKTRACE: short
15   RUSTFLAGS: -D warnings
16   RUSTUP_MAX_RETRIES: 10
17
18 jobs:
19   rust-audit:
20     name: Audit Rust vulnerabilities
21     runs-on: ubuntu-latest
22     steps:
23     - name: Checkout repository
24       uses: actions/checkout@v2
25
26     - uses: actions-rs/install@v0.1
27       with:
28         crate: cargo-audit
29         use-tool-cache: true
30
31     - run: cargo audit
32
33   rust:
34     name: Rust
35     runs-on: ${{ matrix.os }}
36     env:
37       CC: deny_c
38
39     strategy:
40       fail-fast: false
41       matrix:
42         os: [ubuntu-latest, windows-latest, macos-latest]
43
44     steps:
45     - name: Checkout repository
46       uses: actions/checkout@v2
47
48     # We need to disable the existing toolchain to avoid updating rust-docs
49     # which takes a long time. The fastest way to do this is to rename the
50     # existing folder, as deleting it takes about as much time as not doing
51     # anything and just updating rust-docs.
52     - name: Rename existing rust toolchain (Windows)
53       if: matrix.os == 'windows-latest'
54       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
55
56     - name: Install Rust toolchain
57       uses: actions-rs/toolchain@v1
58       with:
59         toolchain: stable
60         profile: minimal
61         override: true
62         components: rustfmt, rust-src
63
64     - if: matrix.os == 'ubuntu-latest'
65       run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
66
67     - name: Cache cargo directories
68       uses: actions/cache@v2
69       with:
70         path: |
71           ~/.cargo/registry
72           ~/.cargo/git
73         key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
74
75     - name: Cache cargo target dir
76       uses: actions/cache@v2
77       with:
78         path: target
79         key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
80
81     - name: Compile
82       run: cargo test --no-run --locked
83
84     - name: Test
85       run: cargo test
86
87     - name: Prepare cache
88       run: cargo xtask pre-cache
89
90     - name: Prepare cache 2
91       if: matrix.os == 'windows-latest'
92       run: Remove-Item ./target/debug/xtask.exe, ./target/debug/deps/xtask.exe
93
94   # Weird target to catch non-portable code
95   rust-power:
96     name: Rust Power
97     runs-on: ubuntu-latest
98
99     steps:
100     - name: Checkout repository
101       uses: actions/checkout@v2
102
103     - name: Install Rust toolchain
104       uses: actions-rs/toolchain@v1
105       with:
106         toolchain: stable
107         profile: minimal
108         override: true
109         target: 'powerpc-unknown-linux-gnu'
110
111     - run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
112
113     - name: Cache cargo directories
114       uses: actions/cache@v2
115       with:
116         path: |
117           ~/.cargo/registry
118           ~/.cargo/git
119         key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
120
121     - name: Check
122       run: cargo check --target=powerpc-unknown-linux-gnu --all-targets
123
124   typescript:
125     name: TypeScript
126     strategy:
127       fail-fast: false
128       matrix:
129         os: [ubuntu-latest, windows-latest, macos-latest]
130
131     runs-on: ${{ matrix.os }}
132
133     steps:
134     - name: Checkout repository
135       uses: actions/checkout@v2
136
137     - name: Install Nodejs
138       uses: actions/setup-node@v1
139       with:
140         node-version: 12.x
141
142     - run: npm ci
143       working-directory: ./editors/code
144
145 #    - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
146 #      if: runner.os == 'Linux'
147 #      working-directory: ./editors/code
148
149     - run: npm run lint
150       working-directory: ./editors/code
151
152     - name: Run vscode tests
153       uses: GabrielBB/xvfb-action@v1.2
154       env:
155         VSCODE_CLI: 1
156       with:
157         run: npm --prefix ./editors/code test
158         # working-directory: ./editors/code  # does not work: https://github.com/GabrielBB/xvfb-action/issues/8
159
160     - run: npm run package --scripts-prepend-node-path
161       working-directory: ./editors/code