I'm siGit, running on siGit Code & Deploy platform, browsing siGit Code coding agent repo.

1 name: CI
2
3 # Runs on every push and pull request that can change what cargo builds.
4 # Splits formatting, clippy, and tests into separate jobs for clearer reporting
5 # across supported desktop targets.
6
7 on:
8 push:
9 branches: [main, development]
10 paths: &rust-paths
11 - "**"
12 # Nothing below can change what cargo builds, so a change that only
13 # touches these skips the nine jobs (four of them on macOS). Later
14 # entries win, which is how packaging/windows/ and this file get back in.
15 - "!**.md"
16 - "!docs/**"
17 - "!examples/**"
18 - "!LICENSE"
19 - "!NOTICE"
20 - "!.agents/**"
21 - "!packaging/**"
22 - "packaging/windows/**"
23 - "!.github/**"
24 - ".github/workflows/ci.yml"
25 pull_request:
26 paths: *rust-paths
27 workflow_dispatch:
28
29 concurrency:
30 group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
31 cancel-in-progress: true
32
33 env:
34 CARGO_TERM_COLOR: always
35
36 jobs:
37 fmt:
38 name: Format
39 runs-on: macos-26
40
41 steps:
42 - name: Checkout
43 uses: actions/checkout@v6
44
45 - name: Install Rust toolchain
46 uses: dtolnay/rust-toolchain@stable
47 with:
48 components: rustfmt
49
50 - name: Setup Rust cache
51 uses: Swatinem/rust-cache@v2
52 with:
53 key: fmt
54
55 - name: Check formatting
56 run: cargo fmt -- --check
57
58 clippy:
59 name: Clippy — ${{ matrix.name }}
60 runs-on: ${{ matrix.os }}
61 strategy:
62 fail-fast: false
63 matrix:
64 include:
65 - name: macOS aarch64
66 os: macos-26
67 target: aarch64-apple-darwin
68
69 - name: macOS x86_64
70 os: macos-26
71 target: x86_64-apple-darwin
72
73 - name: Linux x86_64
74 os: ubuntu-latest
75 target: x86_64-unknown-linux-gnu
76
77 - name: Windows x86_64
78 os: windows-latest
79 target: x86_64-pc-windows-msvc
80
81 steps:
82 - name: Checkout
83 uses: actions/checkout@v6
84
85 - name: Install Rust toolchain
86 uses: dtolnay/rust-toolchain@stable
87 with:
88 targets: ${{ matrix.target }}
89 components: clippy
90
91 - name: Setup Rust cache
92 uses: Swatinem/rust-cache@v2
93 with:
94 key: clippy-${{ matrix.target }}
95
96 - name: Clippy
97 run: cargo clippy --locked --tests --target ${{ matrix.target }} -- -D warnings
98
99 test:
100 name: Test — ${{ matrix.name }}
101 runs-on: ${{ matrix.os }}
102 strategy:
103 fail-fast: false
104 matrix:
105 include:
106 - name: macOS aarch64
107 os: macos-26
108 target: aarch64-apple-darwin
109
110 - name: macOS x86_64
111 os: macos-26
112 target: x86_64-apple-darwin
113
114 - name: Linux x86_64
115 os: ubuntu-latest
116 target: x86_64-unknown-linux-gnu
117
118 - name: Windows x86_64
119 os: windows-latest
120 target: x86_64-pc-windows-msvc
121
122 steps:
123 - name: Checkout
124 uses: actions/checkout@v6
125
126 - name: Install Rust toolchain
127 uses: dtolnay/rust-toolchain@stable
128 with:
129 targets: ${{ matrix.target }}
130
131 - name: Setup Rust cache
132 uses: Swatinem/rust-cache@v2
133 with:
134 key: test-${{ matrix.target }}
135
136 - name: Test
137 run: cargo test --locked --target ${{ matrix.target }}
138
139 - name: Check Windows binary has no VC++ runtime dependency
140 if: runner.os == 'Windows'
141 shell: pwsh
142 run: ./packaging/windows/check-static-crt.ps1 -Path target/${{ matrix.target }}/debug/sigit.exe