-
Notifications
You must be signed in to change notification settings - Fork 342
143 lines (134 loc) · 4.53 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: CI
on:
push:
pull_request:
schedule: [cron: "40 1 * * *"]
permissions:
contents: read
jobs:
pre_ci:
uses: dtolnay/.github/.github/workflows/pre_ci.yml@master
test:
name: ${{matrix.name || format('Rust {0}', matrix.rust)}}
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ${{matrix.os || 'ubuntu'}}-latest
strategy:
fail-fast: false
matrix:
include:
- rust: nightly
- rust: beta
- rust: stable
- rust: 1.60.0
- rust: 1.64.0
- name: macOS
rust: nightly
os: macos
- name: Windows (msvc)
rust: nightly-x86_64-pc-windows-msvc
os: windows
flags: /EHsc
env:
CXXFLAGS: ${{matrix.flags}}
RUSTFLAGS: --cfg deny_warnings -Dwarnings
timeout-minutes: 45
steps:
- name: Enable symlinks (windows)
if: matrix.os == 'windows'
run: git config --global core.symlinks true
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust}}
- name: Determine test suite subset
# Our Windows and macOS jobs are the longest running, so exclude the
# relatively slow compiletest from them to speed up end-to-end CI time,
# except during cron builds when no human is presumably waiting on the
# build. The extra coverage is not particularly valuable and we can
# still ensure the test is kept passing on the basis of the scheduled
# builds.
run: |
echo RUSTFLAGS=$RUSTFLAGS >> $GITHUB_ENV
echo exclude=--exclude cxx-test-suite ${{matrix.rust == '1.60.0' && '--exclude cxxbridge-cmd' || ''}} >> $GITHUB_OUTPUT
env:
RUSTFLAGS: ${{env.RUSTFLAGS}} ${{matrix.os && github.event_name != 'schedule' && '--cfg skip_ui_tests' || ''}}
id: testsuite
shell: bash
- run: cargo run --manifest-path demo/Cargo.toml
- run: cargo test --workspace ${{steps.testsuite.outputs.exclude}}
- run: cargo check --no-default-features --features alloc
env:
RUSTFLAGS: --cfg compile_error_if_std ${{env.RUSTFLAGS}}
- run: cargo check --no-default-features
env:
RUSTFLAGS: --cfg compile_error_if_alloc --cfg cxx_experimental_no_alloc ${{env.RUSTFLAGS}}
buck:
name: Buck
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/install@reindeer
- uses: dtolnay/install@buck2
- name: Install lld
run: sudo apt-get install lld
- run: cargo vendor --versioned-dirs --locked
working-directory: third-party
- run: reindeer buckify
working-directory: third-party
- name: Check reindeer-generated BUCK file up to date
run: git diff --exit-code
- run: buck2 run demo
- run: buck2 build ...
- run: buck2 test ...
bazel:
name: Bazel
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- name: Install Bazel
run: |
wget -q -O install.sh https://github.com/bazelbuild/bazel/releases/download/6.0.0/bazel-6.0.0-installer-linux-x86_64.sh
chmod +x install.sh
./install.sh --user
echo $HOME/bin >> $GITHUB_PATH
- name: Install lld
run: sudo apt-get install lld
- run: bazel run demo --verbose_failures --noshow_progress
- run: bazel test ... --verbose_failures --noshow_progress
clippy:
name: Clippy
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@clippy
- run: cargo clippy --workspace --tests -- -Dclippy::all
clang-tidy:
name: Clang Tidy
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- name: Install clang-tidy
run: sudo apt-get install clang-tidy-11
- name: Run clang-tidy
run: clang-tidy-11 src/cxx.cc --warnings-as-errors=*
outdated:
name: Outdated
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v3
- uses: dtolnay/install@cargo-outdated
- run: cargo outdated --workspace --exit-code 1