1+ name : Security
2+
3+ on :
4+ push :
5+ branches : [ main, master, develop ]
6+ pull_request :
7+ branches : [ main, master, develop ]
8+ schedule :
9+ # Run security audit weekly on Sundays at 6 AM UTC
10+ - cron : ' 0 6 * * 0'
11+
12+ env :
13+ CARGO_TERM_COLOR : always
14+
15+ jobs :
16+ security-audit :
17+ name : Security Audit
18+ runs-on : ubuntu-latest
19+
20+ steps :
21+ - name : Checkout code
22+ uses : actions/checkout@v5
23+
24+ - name : Install Rust toolchain
25+ uses : dtolnay/rust-toolchain@stable
26+
27+ - name : Cache cargo dependencies
28+ uses : actions/cache@v4
29+ with :
30+ path : |
31+ ~/.cargo/registry
32+ ~/.cargo/git
33+ key : audit-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
34+
35+ - name : Install cargo-audit
36+ run : cargo install cargo-audit
37+
38+ - name : Run cargo audit
39+ run : cargo audit
40+
41+ - name : Run cargo audit (JSON output)
42+ run : cargo audit --json > audit-results.json
43+ continue-on-error : true
44+
45+ - name : Upload audit results
46+ uses : actions/upload-artifact@v4
47+ with :
48+ name : security-audit-results
49+ path : audit-results.json
50+ retention-days : 30
51+
52+ supply-chain-security :
53+ name : Supply Chain Security
54+ runs-on : ubuntu-latest
55+
56+ steps :
57+ - name : Checkout code
58+ uses : actions/checkout@v5
59+
60+ - name : Install Rust toolchain
61+ uses : dtolnay/rust-toolchain@stable
62+
63+ - name : Cache cargo dependencies
64+ uses : actions/cache@v4
65+ with :
66+ path : |
67+ ~/.cargo/registry
68+ ~/.cargo/git
69+ key : supply-chain-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
70+
71+ - name : Install cargo-deny
72+ run : cargo install cargo-deny
73+
74+ - name : Run cargo deny
75+ run : cargo deny check
0 commit comments