-
-
Notifications
You must be signed in to change notification settings - Fork 8
155 lines (124 loc) · 3.55 KB
/
build.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
144
145
146
147
148
149
150
151
152
153
154
155
name: Build & Test
on:
release:
types: [published]
pull_request:
branches:
- "trunk"
push:
branches:
- "trunk"
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
CONTRIBUTORS_TOKEN: ${{ secrets.CONTRIBUTORS_TOKEN }}
IS_CI: true
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
jobs:
cargo-deny:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
clippy:
name: Clippy
runs-on: windows-latest
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- uses: Swatinem/[email protected]
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Install required crates
run: cargo install clippy-sarif sarif-fmt
- name: Run rust-clippy
run: cargo clippy
--features=beta
--message-format=json | clippy-sarif | tee rust-clippy-results.sarif | sarif-fmt
continue-on-error: true
- name: Upload analysis results to GitHub
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: rust-clippy-results.sarif
wait-for-processing: true
format:
name: Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check Formatting
run: cargo fmt --all --check
test:
name: Test
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/[email protected]
- name: Install and setup Scoop
uses: MinoruSekine/setup-scoop@v4
with:
buckets: extras java
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build and Test
run: cargo test --all --features beta
build:
strategy:
matrix:
arch: [x86_64, i686, aarch64]
name: Build for ${{ matrix.arch }}
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/[email protected]
with:
key: build-${{ matrix.arch }}
- uses: extractions/setup-just@v2
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Debug build
run: cargo b --all --features beta --target ${{ matrix.arch }}-pc-windows-msvc
publish:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
name: Publish
runs-on: windows-latest
needs: [cargo-deny, build, test, clippy, format]
steps:
- uses: actions/checkout@v4
- uses: extractions/setup-just@v2
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build and Package
if: ${{ !github.event.release.prerelease }}
run: just release-all
- name: Beta Build and Package
if: ${{ github.event.release.prerelease }}
run: just beta-release-all
- name: Upload a Build Artifact
uses: actions/[email protected]
with:
name: package.zip
path: release/*
- name: Upload & Publish
uses: softprops/[email protected]
with:
files: |
release/*.exe
release/*.exe.sha256
- name: VirusTotal Scan
uses: crazy-max/ghaction-virustotal@v4
with:
update_release_body: true
vt_api_key: ${{ secrets.VT_API_KEY }}
files: |
.exe$