Skip to content

Commit 014c759

Browse files
ci: build fda for Windows amd64
Add a build-fda-native job that builds fda on the Windows amd64 GitHub-hosted runner and uploads it as a release artifact. macOS arm64 is pending self-hosted runner availability. Windows arm64 is skipped for now as it lacks Rust and MSVC on the runner. Also update the install-fda script to support macOS arm64 once binaries are available, and improve error messages for unsupported platforms.
1 parent e0a5624 commit 014c759

File tree

4 files changed

+70
-17
lines changed

4 files changed

+70
-17
lines changed

.github/workflows/build-rust.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,47 @@ jobs:
136136
name: pipeline-manager-${{ matrix.target }}
137137
path: build-release-artifacts/pipeline-manager
138138
retention-days: 7
139+
140+
build-fda-native:
141+
name: Build fda (Windows)
142+
143+
# Builds fda for Windows using GitHub-hosted larger runners.
144+
# macOS arm64 will be added once self-hosted macOS runners are available.
145+
# Windows arm64 is skipped for now — the runner lacks Rust and MSVC.
146+
strategy:
147+
matrix:
148+
include:
149+
- runner: windows-latest-amd64
150+
target: x86_64-pc-windows-msvc
151+
runs-on: ${{ matrix.runner }}
152+
153+
# sccache is not available on Windows GitHub-hosted runners
154+
env:
155+
RUSTC_WRAPPER: ""
156+
157+
steps:
158+
- name: Checkout repository
159+
uses: actions/checkout@v6
160+
161+
- name: Add Rust target
162+
run: rustup target add ${{ matrix.target }}
163+
164+
- name: Cache Cargo registry and index
165+
uses: actions/cache@v5
166+
with:
167+
path: |
168+
~/.cargo/registry
169+
~/.cargo/git
170+
key: cargo-registry-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
171+
restore-keys: |
172+
cargo-registry-${{ runner.os }}-${{ matrix.target }}-
173+
174+
- name: Build fda
175+
run: cargo build --release --locked -p fda --target=${{ matrix.target }}
176+
177+
- name: Upload fda
178+
uses: actions/upload-artifact@v7
179+
with:
180+
name: fda-${{ matrix.target }}
181+
path: target/${{ matrix.target }}/release/fda.exe
182+
retention-days: 7

.github/workflows/ci-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ jobs:
111111
pipeline-manager-x86_64-unknown-linux-gnu.zip
112112
fda-x86_64-unknown-linux-gnu.zip
113113
fda-aarch64-unknown-linux-gnu.zip
114+
fda-x86_64-pc-windows-msvc.zip
114115
sql2dbsp-jar-with-dependencies-v${{ env.CURRENT_VERSION }}.jar
115116
feldera-sbom-source.spdx.json
116117
feldera-sbom-image.spdx.json

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ jobs:
5353
required-artifacts: |
5454
fda-x86_64-unknown-linux-gnu
5555
fda-aarch64-unknown-linux-gnu
56+
fda-x86_64-pc-windows-msvc
5657
pipeline-manager-x86_64-unknown-linux-gnu
5758
pipeline-manager-aarch64-unknown-linux-gnu
5859
feldera-test-binaries-x86_64-unknown-linux-gnu

docs.feldera.com/static/install-fda

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,31 +47,38 @@ detect_platform() {
4747
ARCH="$(uname -m)"
4848

4949
case "$OS" in
50-
Linux) ;;
50+
Linux)
51+
case "$ARCH" in
52+
x86_64 | amd64)
53+
TARGET="x86_64-unknown-linux-gnu"
54+
;;
55+
aarch64 | arm64)
56+
TARGET="aarch64-unknown-linux-gnu"
57+
;;
58+
*)
59+
err "unsupported Linux architecture: $ARCH. Supported: x86_64, aarch64"
60+
;;
61+
esac
62+
info "Detected platform: Linux $ARCH"
63+
;;
5164
Darwin)
52-
err "MacOS is not currently supported. Install fda with: cargo install fda"
65+
case "$ARCH" in
66+
arm64 | aarch64)
67+
TARGET="aarch64-apple-darwin"
68+
;;
69+
*)
70+
err "unsupported macOS architecture: $ARCH. Only arm64 (Apple Silicon) is supported. Install fda with: cargo install fda"
71+
;;
72+
esac
73+
info "Detected platform: macOS $ARCH"
5374
;;
5475
MINGW* | MSYS* | CYGWIN*)
55-
err "Windows is not currently supported. Install fda with: cargo install fda"
76+
err "Windows is not currently supported by this installer. Download fda from https://github.com/feldera/feldera/releases or install with: cargo install fda"
5677
;;
5778
*)
5879
err "unsupported operating system: $OS"
5980
;;
6081
esac
61-
62-
case "$ARCH" in
63-
x86_64 | amd64)
64-
TARGET="x86_64-unknown-linux-gnu"
65-
;;
66-
aarch64 | arm64)
67-
TARGET="aarch64-unknown-linux-gnu"
68-
;;
69-
*)
70-
err "unsupported architecture: $ARCH. Supported: x86_64, aarch64"
71-
;;
72-
esac
73-
74-
info "Detected platform: Linux $ARCH"
7582
}
7683

7784
resolve_version() {

0 commit comments

Comments
 (0)