-
Notifications
You must be signed in to change notification settings - Fork 0
206 lines (181 loc) · 5.3 KB
/
ci.yml
File metadata and controls
206 lines (181 loc) · 5.3 KB
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
name: CI
on:
push:
branches: [ main ]
paths-ignore:
- '**.md'
- 'docs/**'
- 'assets/**'
- 'LICENSE*'
- '.gitignore'
pull_request:
paths-ignore:
- '**.md'
- 'docs/**'
- 'assets/**'
- 'LICENSE*'
- '.gitignore'
workflow_dispatch:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
RUST_BACKTRACE: 1
jobs:
build_test:
name: Build & Test
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
name: Linux x86_64
- os: macos-latest
target: x86_64-apple-darwin
name: macOS x86_64
- os: macos-14
target: aarch64-apple-darwin
name: macOS ARM64
- os: windows-latest
target: x86_64-pc-windows-msvc
name: Windows x86_64
runs-on: ${{ matrix.os }}
env:
# neutralize proxies
http_proxy: ""
https_proxy: ""
no_proxy: ""
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: dtolnay/rust-toolchain@nightly
with:
targets: ${{ matrix.target }}
components: clippy,rustfmt
- name: Cache cargo registry (Unix)
if: runner.os != 'Windows'
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Cache cargo registry (Windows)
if: runner.os == 'Windows'
uses: actions/cache@v4
with:
path: |
~\.cargo\registry
~\.cargo\git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Remove git proxies (Linux/macOS)
if: runner.os != 'Windows'
run: |
git config --global --unset-all http.proxy || true
git config --global --unset-all https.proxy || true
- name: Remove git proxies (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
git config --global --unset http.proxy 2>&1 | Out-Null
git config --global --unset https.proxy 2>&1 | Out-Null
continue-on-error: true
- name: Cargo metadata (smoke)
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo metadata --format-version=1 --locked
else
cargo metadata --format-version=1
fi
- name: Check compiles (no features)
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo check --no-default-features --locked
else
cargo check --no-default-features
fi
- name: Feature compile matrix
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo check --no-default-features --locked
cargo check --no-default-features --features cpu-exec --locked
cargo check --no-default-features --features pkg --locked
else
cargo check --no-default-features
cargo check --no-default-features --features cpu-exec
cargo check --no-default-features --features pkg
fi
- name: Build
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo build --verbose --no-default-features --locked
else
cargo build --verbose --no-default-features
fi
- name: Test
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo test --verbose --no-default-features --locked
else
cargo test --verbose --no-default-features
fi
- name: Clippy
shell: bash
run: |
if [ -f Cargo.lock ]; then
cargo clippy --no-default-features --locked -- -D warnings
else
cargo clippy --no-default-features -- -D warnings
fi
format:
name: Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: dtolnay/rust-toolchain@nightly
- name: Build docs
env:
RUSTDOCFLAGS: "-D warnings"
run: cargo doc --no-default-features --document-private-items
# MSRV check temporarily disabled - ar_archive_writer 0.5.x requires nightly features
# Will re-enable when stable Rust supports edition 2024 let-chains
# msrv:
# name: Minimum Supported Rust Version
# runs-on: ubuntu-latest
# steps:
# - name: Checkout
# uses: actions/checkout@v4
#
# - name: Install Rust 1.85
# uses: dtolnay/rust-toolchain@1.85
#
# - name: Check MSRV compiles
# run: cargo check --no-default-features