Skip to content

Commit 9407a8a

Browse files
committed
Add Windows CUDA release artifacts
1 parent f82dbc4 commit 9407a8a

8 files changed

Lines changed: 148 additions & 28 deletions

File tree

.github/workflows/build-cli.yml

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ on:
1818
type: string
1919
required: false
2020
default: ""
21+
windows_variant:
22+
description: "Windows artifact variant to build"
23+
required: false
24+
default: "standard"
25+
type: string
2126

2227
name: "Reusable workflow to build CLI"
2328

@@ -64,23 +69,24 @@ jobs:
6469

6570
steps:
6671
- name: Checkout code
72+
if: ${{ inputs.windows_variant == 'standard' || matrix.os == 'windows' }}
6773
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
6874
with:
6975
ref: ${{ inputs.ref }}
7076

7177
- name: Update version in Cargo.toml
72-
if: ${{ inputs.version != '' }}
78+
if: ${{ inputs.version != '' && (inputs.windows_variant == 'standard' || matrix.os == 'windows') }}
7379
shell: bash
7480
run: |
7581
sed -i.bak 's/^version = ".*"/version = "'${{ inputs.version }}'"/' Cargo.toml
7682
rm -f Cargo.toml.bak
7783
7884
- name: Install cross
79-
if: matrix.use-cross
85+
if: ${{ matrix.use-cross && inputs.windows_variant == 'standard' }}
8086
run: source ./bin/activate-hermit && cargo install cross --git https://github.com/cross-rs/cross
8187

8288
- name: Cache Cargo artifacts (Linux/macOS)
83-
if: matrix.use-cross
89+
if: ${{ matrix.use-cross && inputs.windows_variant == 'standard' }}
8490
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
8591
with:
8692
key: ${{ matrix.architecture }}-${{ matrix.target-suffix }}-macos-deployment-target-12
@@ -89,10 +95,10 @@ jobs:
8995
if: matrix.os == 'windows'
9096
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
9197
with:
92-
key: windows-msvc-cli
98+
key: windows-msvc-cli-${{ inputs.windows_variant }}
9399

94100
- name: Build CLI (Linux/macOS)
95-
if: matrix.use-cross
101+
if: ${{ matrix.use-cross && inputs.windows_variant == 'standard' }}
96102
env:
97103
CROSS_NO_WARNINGS: 0
98104
RUST_LOG: debug
@@ -123,7 +129,11 @@ jobs:
123129
shell: bash
124130
run: |
125131
echo "🚀 Building Windows CLI executable..."
126-
cargo build --release --target x86_64-pc-windows-msvc -p goose-cli
132+
if [ "${{ inputs.windows_variant }}" = "cuda" ]; then
133+
cargo build --release --target x86_64-pc-windows-msvc -p goose-cli --features cuda
134+
else
135+
cargo build --release --target x86_64-pc-windows-msvc -p goose-cli
136+
fi
127137
128138
if [ ! -f "./target/x86_64-pc-windows-msvc/release/goose.exe" ]; then
129139
echo "❌ Windows CLI binary not found."
@@ -135,7 +145,7 @@ jobs:
135145
ls -la ./target/x86_64-pc-windows-msvc/release/goose.exe
136146
137147
- name: Package CLI (Linux/macOS)
138-
if: matrix.use-cross
148+
if: ${{ matrix.use-cross && inputs.windows_variant == 'standard' }}
139149
run: |
140150
source ./bin/activate-hermit
141151
export TARGET="${{ matrix.architecture }}-${{ matrix.target-suffix }}"
@@ -157,21 +167,25 @@ jobs:
157167
shell: bash
158168
run: |
159169
export TARGET="${{ matrix.architecture }}-${{ matrix.target-suffix }}"
170+
export VARIANT_SUFFIX=""
171+
if [ "${{ inputs.windows_variant }}" = "cuda" ]; then
172+
VARIANT_SUFFIX="-cuda"
173+
fi
160174
161175
mkdir -p "target/${TARGET}/release/goose-package"
162176
163177
cp "target/${TARGET}/release/goose.exe" "target/${TARGET}/release/goose-package/"
164178
165179
cd "target/${TARGET}/release"
166-
7z a -tzip "goose-${TARGET}.zip" goose-package/
167-
echo "ARTIFACT_ZIP=target/${TARGET}/release/goose-${TARGET}.zip" >> $GITHUB_ENV
180+
7z a -tzip "goose-${TARGET}${VARIANT_SUFFIX}.zip" goose-package/
181+
echo "ARTIFACT_ZIP=target/${TARGET}/release/goose-${TARGET}${VARIANT_SUFFIX}.zip" >> $GITHUB_ENV
168182
169183
- name: Upload CLI artifact
184+
if: ${{ inputs.windows_variant == 'standard' || matrix.os == 'windows' }}
170185
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
171186
with:
172-
name: goose-${{ matrix.architecture }}-${{ matrix.target-suffix }}
187+
name: goose-${{ matrix.architecture }}-${{ matrix.target-suffix }}${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
173188
path: |
174189
${{ env.ARTIFACT_BZ2 }}
175190
${{ env.ARTIFACT_GZ }}
176191
${{ env.ARTIFACT_ZIP }}
177-

.github/workflows/bundle-desktop-windows.yml

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ on:
88
required: false
99
type: boolean
1010
default: false
11+
windows_variant:
12+
description: 'Windows artifact variant to build'
13+
required: false
14+
type: string
15+
default: 'standard'
1116
workflow_call:
1217
inputs:
1318
version:
@@ -24,6 +29,11 @@ on:
2429
required: false
2530
type: string
2631
default: ''
32+
windows_variant:
33+
description: 'Windows artifact variant to build'
34+
required: false
35+
type: string
36+
default: 'standard'
2737

2838
# Permissions required for OIDC authentication with Azure Trusted Signing
2939
permissions:
@@ -64,7 +74,7 @@ jobs:
6474
- name: Cache Rust dependencies
6575
uses: Swatinem/rust-cache@v2
6676
with:
67-
key: windows-msvc-desktop
77+
key: windows-msvc-desktop-${{ inputs.windows_variant }}
6878

6979
- name: Setup Rust
7080
shell: bash
@@ -76,7 +86,11 @@ jobs:
7686
shell: bash
7787
run: |
7888
echo "🚀 Building Windows executable..."
79-
cargo build --release --target x86_64-pc-windows-msvc
89+
if [ "${{ inputs.windows_variant }}" = "cuda" ]; then
90+
cargo build --release --target x86_64-pc-windows-msvc -p goose-server --features cuda
91+
else
92+
cargo build --release --target x86_64-pc-windows-msvc -p goose-server
93+
fi
8094
8195
# Verify build succeeded
8296
if [ ! -f "./target/x86_64-pc-windows-msvc/release/goosed.exe" ]; then
@@ -155,7 +169,7 @@ jobs:
155169
- name: Upload unsigned distribution
156170
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
157171
with:
158-
name: windows-unsigned
172+
name: windows-unsigned${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
159173
path: ui/desktop/dist-windows/
160174

161175
sign-desktop-windows:
@@ -169,7 +183,7 @@ jobs:
169183
- name: Download unsigned distribution
170184
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
171185
with:
172-
name: windows-unsigned
186+
name: windows-unsigned${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
173187
path: dist-windows
174188

175189
- name: Azure login
@@ -206,13 +220,17 @@ jobs:
206220
- name: Create Windows zip package
207221
shell: bash
208222
run: |
209-
7z a -tzip "Goose-win32-x64.zip" dist-windows/
223+
ZIP_NAME="Goose-win32-x64"
224+
if [ "${{ inputs.windows_variant }}" = "cuda" ]; then
225+
ZIP_NAME="${ZIP_NAME}-cuda"
226+
fi
227+
7z a -tzip "${ZIP_NAME}.zip" dist-windows/
210228
211229
- name: Upload signed Windows build
212230
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
213231
with:
214-
name: Goose-win32-x64
215-
path: Goose-win32-x64.zip
232+
name: Goose-win32-x64${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
233+
path: Goose-win32-x64${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}.zip
216234

217235
# When signing is disabled, package the unsigned build directly
218236
package-desktop-windows:
@@ -225,16 +243,20 @@ jobs:
225243
- name: Download unsigned distribution
226244
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
227245
with:
228-
name: windows-unsigned
246+
name: windows-unsigned${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
229247
path: dist-windows
230248

231249
- name: Create Windows zip package
232250
shell: bash
233251
run: |
234-
7z a -tzip "Goose-win32-x64.zip" dist-windows/
252+
ZIP_NAME="Goose-win32-x64"
253+
if [ "${{ inputs.windows_variant }}" = "cuda" ]; then
254+
ZIP_NAME="${ZIP_NAME}-cuda"
255+
fi
256+
7z a -tzip "${ZIP_NAME}.zip" dist-windows/
235257
236258
- name: Upload Windows build
237259
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
238260
with:
239-
name: Goose-win32-x64
240-
path: Goose-win32-x64.zip
261+
name: Goose-win32-x64${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}
262+
path: Goose-win32-x64${{ inputs.windows_variant == 'cuda' && '-cuda' || '' }}.zip

.github/workflows/canary.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ jobs:
5252
with:
5353
version: ${{ needs.prepare-version.outputs.version }}
5454

55+
build-cli-windows-cuda:
56+
needs: [prepare-version]
57+
uses: ./.github/workflows/build-cli.yml
58+
with:
59+
version: ${{ needs.prepare-version.outputs.version }}
60+
windows_variant: cuda
61+
5562
# ------------------------------------
5663
# 3) Upload Install CLI Script (we only need to do this once)
5764
# ------------------------------------
@@ -111,13 +118,21 @@ jobs:
111118
version: ${{ needs.prepare-version.outputs.version }}
112119
signing: false
113120

121+
bundle-desktop-windows-cuda:
122+
needs: [prepare-version]
123+
uses: ./.github/workflows/bundle-desktop-windows.yml
124+
with:
125+
version: ${{ needs.prepare-version.outputs.version }}
126+
signing: false
127+
windows_variant: cuda
128+
114129
# ------------------------------------
115130
# 7) Create/Update GitHub Release
116131
# ------------------------------------
117132
release:
118133
name: Release
119134
runs-on: ubuntu-latest
120-
needs: [build-cli, install-script, bundle-desktop, bundle-desktop-intel, bundle-desktop-linux, bundle-desktop-windows]
135+
needs: [build-cli, build-cli-windows-cuda, install-script, bundle-desktop, bundle-desktop-intel, bundle-desktop-linux, bundle-desktop-windows, bundle-desktop-windows-cuda]
121136
permissions:
122137
contents: write
123138
id-token: write # Required for Sigstore OIDC signing
@@ -135,6 +150,7 @@ jobs:
135150
subject-path: |
136151
goose-*.tar.bz2
137152
goose-*.tar.gz
153+
goose-*.zip
138154
Goose*.zip
139155
*.deb
140156
*.rpm
@@ -151,6 +167,7 @@ jobs:
151167
artifacts: |
152168
goose-*.tar.bz2
153169
goose-*.tar.gz
170+
goose-*.zip
154171
Goose*.zip
155172
*.deb
156173
*.rpm

.github/workflows/release.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ jobs:
2626
build-cli:
2727
uses: ./.github/workflows/build-cli.yml
2828

29+
build-cli-windows-cuda:
30+
uses: ./.github/workflows/build-cli.yml
31+
with:
32+
windows_variant: cuda
33+
2934
# ------------------------------------
3035
# 2) Upload Install CLI Script
3136
# ------------------------------------
@@ -85,13 +90,24 @@ jobs:
8590
signing: true
8691
secrets: inherit
8792

93+
bundle-desktop-windows-cuda:
94+
uses: ./.github/workflows/bundle-desktop-windows.yml
95+
permissions:
96+
id-token: write
97+
contents: read
98+
actions: read
99+
with:
100+
signing: true
101+
windows_variant: cuda
102+
secrets: inherit
103+
88104
# ------------------------------------
89105
# 7) Create/Update GitHub Release
90106
# ------------------------------------
91107
release:
92108
name: Release
93109
runs-on: ubuntu-latest
94-
needs: [build-cli, install-script, bundle-desktop, bundle-desktop-intel, bundle-desktop-linux, bundle-desktop-windows]
110+
needs: [build-cli, build-cli-windows-cuda, install-script, bundle-desktop, bundle-desktop-intel, bundle-desktop-linux, bundle-desktop-windows, bundle-desktop-windows-cuda]
95111
permissions:
96112
contents: write
97113
id-token: write # Required for Sigstore OIDC signing

documentation/docs/getting-started/installation.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ import { PanelLeft } from 'lucide-react';
141141
1. Unzip the downloaded zip file.
142142
2. Run the executable file to launch the goose Desktop application.
143143

144+
:::info Windows variants
145+
`Windows` is the standard general-purpose build. `Windows CUDA` is for NVIDIA GPUs with a compatible CUDA driver/runtime.
146+
:::
147+
144148
:::tip Updating goose
145149
It's best to periodically [update goose](/docs/guides/updating-goose).
146150
:::
@@ -152,19 +156,33 @@ import { PanelLeft } from 'lucide-react';
152156
- **MSYS2**: Available from [msys2.org](https://www.msys2.org/)
153157
- **PowerShell**: Available on Windows 10/11 by default
154158

155-
Run the installation command in your chosen environment:
159+
Use the standard build for the general-purpose Windows install. Use the CUDA variant if you have an NVIDIA GPU with a compatible CUDA driver/runtime.
160+
161+
**Git Bash / MSYS2: Standard**
156162

157163
```bash
158164
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
159165
```
160166

167+
**Git Bash / MSYS2: Windows CUDA**
168+
169+
```bash
170+
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | GOOSE_WINDOWS_VARIANT=cuda bash
171+
```
172+
161173
To install without interactive configuration, disable `CONFIGURE`:
162174

163175
```bash
164176
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash
165177
```
166178

167-
**PowerShell Installation:**
179+
To install the CUDA variant without interactive configuration:
180+
181+
```bash
182+
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | GOOSE_WINDOWS_VARIANT=cuda CONFIGURE=false bash
183+
```
184+
185+
**PowerShell Installation: Standard**
168186
Download the PowerShell installation script to your current directory.
169187

170188
```powershell
@@ -175,6 +193,14 @@ import { PanelLeft } from 'lucide-react';
175193
.\download_cli.ps1
176194
```
177195

196+
**PowerShell Installation: Windows CUDA**
197+
198+
```powershell
199+
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1";
200+
$env:GOOSE_WINDOWS_VARIANT="cuda"
201+
.\download_cli.ps1
202+
```
203+
178204
:::info Windows PATH Setup
179205
If you see a warning that goose is not in your PATH, you need to add goose to your PATH:
180206

documentation/src/components/WindowsDesktopInstallButtons.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@ const WindowsDesktopInstallButtons = () => {
55
return (
66
<div>
77
<p>Click one of the buttons below to download goose Desktop for Windows:</p>
8-
<div className="pill-button">
8+
<div className="pill-button" style={{ display: "flex", gap: "0.75rem", flexWrap: "wrap" }}>
99
<Link
1010
className="button button--primary button--lg"
1111
to="https://github.com/aaif-goose/goose/releases/download/stable/Goose-win32-x64.zip"
1212
>
1313
<IconDownload /> Windows
1414
</Link>
15+
<Link
16+
className="button button--primary button--lg"
17+
to="https://github.com/aaif-goose/goose/releases/download/stable/Goose-win32-x64-cuda.zip"
18+
>
19+
<IconDownload /> Windows CUDA
20+
</Link>
1521
</div>
1622
</div>
1723
);

0 commit comments

Comments
 (0)