-
Notifications
You must be signed in to change notification settings - Fork 23
190 lines (161 loc) · 5.29 KB
/
rust.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
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
on: [pull_request]
name: CI
jobs:
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy -- -D warnings
linux-build-test:
name: Build and Test (Linux)
uses: ./.github/workflows/build-and-test.yml
with:
os: ubuntu-latest
upload-artifact-name: notedeck-linux-bin
upload-artifact-path: target/release/notedeck
additional-setup: |
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev
macos-build-test:
name: Build and Test (macOS)
uses: ./.github/workflows/build-and-test.yml
with:
os: macos-latest
upload-artifact-name: notedeck-macos-bin
upload-artifact-path: target/release/notedeck
windows-build-test:
name: Build and Test (Windows)
uses: ./.github/workflows/build-and-test.yml
with:
os: windows-latest
upload-artifact-name: notedeck.exe
upload-artifact-path: target/release/notedeck.exe
packaging:
name: Build Linux Packages
runs-on: ubuntu-latest
needs: linux-build-test
steps:
# Checkout the repository
- name: Checkout Code
uses: actions/checkout@v4
# Install Packaging Tools
- name: Install Packaging Tools
run: |
sudo apt-get update
sudo apt-get install -y rpm binutils
cargo install cargo-generate-rpm cargo-deb
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: notedeck-linux-bin # Assuming you need the Release build
path: target/release
# Cache
- name: Rust cache
uses: Swatinem/rust-cache@v2
# Build Packages
- name: Build Packages
run: |
cargo generate-rpm
cargo deb
# Upload RPM Package
- name: Upload RPM Package
uses: actions/upload-artifact@v4
with:
name: notedeck.rpm
path: target/generate-rpm/*.rpm
# Upload Debian Package
- name: Upload Debian Package
uses: actions/upload-artifact@v4
with:
name: notedeck.deb
path: target/debian/*.deb
macos-dmg:
name: Build macOS DMG
runs-on: macos-latest
needs: macos-build-test
env:
NOTEDECK_APPLE_RELEASE_CERT_ID: ${{ secrets.NOTEDECK_APPLE_RELEASE_CERT_ID }}
NOTEDECK_RELEASE_APPLE_ID: ${{ secrets.NOTEDECK_RELEASE_APPLE_ID }}
NOTEDECK_APPLE_APP_SPECIFIC_PW: ${{ secrets.NOTEDECK_APPLE_APP_SPECIFIC_PW }}
NOTEDECK_APPLE_TEAM_ID: ${{ secrets.NOTEDECK_APPLE_TEAM_ID }}
steps:
# Checkout the repository
- name: Checkout Code
uses: actions/checkout@v4
# Set up Rust
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
# create-dmg and cargo-bundle caching
- name: Rust cache
uses: Swatinem/rust-cache@v2
- name: Download Build Artifacts (MacOS)
uses: actions/download-artifact@v4
with:
name: notedeck-macos-bin # Assuming you need the Release build
path: target/release
- name: Install Required Tools
run: |
brew install create-dmg
cargo install cargo-bundle
- name: Import apple codesign cert
uses: apple-actions/import-codesign-certs@v3
with:
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
- name: Run macOS DMG Build Script
run: ./scripts/macos_build.sh
- name: Upload DMG Artifact
uses: actions/upload-artifact@v4
with:
name: notedeck.dmg
path: packages/notedeck.dmg
windows-installer:
name: Build Windows Installer
runs-on: windows-latest
needs: windows-build-test
steps:
# Checkout the repository
- name: Checkout Code
uses: actions/checkout@v4
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: notedeck.exe # Assuming you need the Release build
path: target/release
# Create packages directory
- name: Create packages directory
run: mkdir packages
# Install Inno Setup
- name: Install Inno Setup
run: choco install innosetup --no-progress --yes
# Validate executable exists
- name: Validate required files
run: |
if (!(Test-Path -Path target\release\notedeck.exe)) {
throw "Executable 'notedeck.exe' not found in 'target/release'."
}
# Build Installer
- name: Run Inno Setup Script
run: |
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "scripts\windows-installer.iss"
# List outputs
- name: List Inno Script outputs
run: dir packages
# Upload the installer as an artifact
- name: Upload Installer
uses: actions/upload-artifact@v4
with:
name: DamusNotedeckInstaller.exe
path: packages\DamusNotedeckInstaller.exe