docs: remove broken arm64 CI step, document Woodpecker 0.15.4 limitation
when: platform: is evaluated at compile time (server=amd64) and silently drops the arm64 step. Per-step platform routing requires Woodpecker 2.x. Document the make release-arm64 workaround for linux/arm64 builds. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f8eea02075
commit
ac56851e4d
@ -54,23 +54,9 @@ pipeline:
|
||||
- mkdir -p artifacts/windows-amd64
|
||||
- find src-tauri/target/$TARGET/release/bundle -name "*.exe" -o -name "*.msi" | xargs -I{} cp {} artifacts/windows-amd64/ 2>/dev/null || true
|
||||
|
||||
build-linux-arm64:
|
||||
image: rust:1.88-slim
|
||||
environment:
|
||||
TARGET: aarch64-unknown-linux-gnu
|
||||
when:
|
||||
event: tag
|
||||
platform: linux/arm64
|
||||
commands:
|
||||
- apt-get update -qq && apt-get install -y -qq libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf pkg-config curl perl
|
||||
- curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
||||
- apt-get install -y nodejs
|
||||
- npm ci --legacy-peer-deps
|
||||
- rustup target add $TARGET
|
||||
- cargo install tauri-cli --version "^2" --locked
|
||||
- CI=true cargo tauri build --target $TARGET
|
||||
- mkdir -p artifacts/linux-arm64
|
||||
- find src-tauri/target/$TARGET/release/bundle -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" | xargs -I{} cp {} artifacts/linux-arm64/
|
||||
# NOTE: linux/arm64 is built locally via 'make release-arm64 GOGS_TOKEN=<token>'
|
||||
# Woodpecker 0.15.4 does not support per-step agent platform routing —
|
||||
# when: platform: is evaluated at compile time (server=amd64) and drops the step.
|
||||
|
||||
upload-release:
|
||||
image: curlimages/curl:latest
|
||||
|
||||
@ -65,13 +65,13 @@ pipeline:
|
||||
```
|
||||
Pipeline steps:
|
||||
1. clone → alpine/git with explicit tag fetch + checkout
|
||||
2. build-linux-amd64 → cargo tauri build (x86_64-unknown-linux-gnu) [amd64 agent]
|
||||
2. build-linux-amd64 → cargo tauri build (x86_64-unknown-linux-gnu)
|
||||
→ artifacts/linux-amd64/{.deb, .rpm, .AppImage}
|
||||
3. build-windows-amd64 → cargo tauri build (x86_64-pc-windows-gnu) [amd64 agent]
|
||||
3. build-windows-amd64 → cargo tauri build (x86_64-pc-windows-gnu)
|
||||
→ artifacts/windows-amd64/{.exe, .msi}
|
||||
4. build-linux-arm64 → cargo tauri build (aarch64-unknown-linux-gnu) [arm64 agent]
|
||||
→ artifacts/linux-arm64/{.deb, .rpm, .AppImage}
|
||||
5. upload-release → Create Gogs release + upload all artifacts
|
||||
4. upload-release → Create Gogs release + upload all artifacts
|
||||
|
||||
linux/arm64 (manual): make release-arm64 GOGS_TOKEN=<token> (see below)
|
||||
```
|
||||
|
||||
**Clone override (release.yml):**
|
||||
@ -101,7 +101,23 @@ environment:
|
||||
**Artifacts per platform:**
|
||||
- Linux amd64: `.deb`, `.rpm`, `.AppImage`
|
||||
- Windows amd64: `.exe` (NSIS installer), `.msi`
|
||||
- Linux arm64: `.deb`, `.rpm`, `.AppImage` (native build on local arm64 agent)
|
||||
- Linux arm64: `.deb`, `.rpm`, `.AppImage` — built via `make release-arm64` (see below)
|
||||
|
||||
**Linux arm64 build (Woodpecker 0.15.4 workaround):**
|
||||
|
||||
Woodpecker 0.15.4 evaluates `when: platform:` at compile time against the server's
|
||||
platform (amd64), dropping arm64 steps before any agent can claim them. Per-step
|
||||
agent routing is a Woodpecker 2.x feature.
|
||||
|
||||
To build and upload arm64 artifacts from the local aarch64 machine:
|
||||
```bash
|
||||
# On the local arm64 machine (Fedora Asahi 42)
|
||||
cd ~/Documents/tftsr-devops_investigation
|
||||
make release-arm64 TAG=v0.1.0-alpha GOGS_TOKEN=<bearer_token>
|
||||
```
|
||||
|
||||
`make build-arm64` runs the full Tauri build inside a `rust:1.88-slim` ARM64 Docker
|
||||
container. `make upload-arm64` uploads the resulting artifacts to the Gogs release.
|
||||
|
||||
**Important:** Artifacts must be written to the **workspace** (relative paths like `artifacts/linux-amd64/`), not to absolute paths like `/artifacts/`. Only the workspace is shared between pipeline steps via Docker volume.
|
||||
|
||||
@ -249,6 +265,17 @@ docker volume rm $(docker volume ls -q | grep '0_')
|
||||
docker restart woodpecker_agent
|
||||
```
|
||||
|
||||
### Per-Step Agent Platform Routing Not Supported
|
||||
Woodpecker 0.15.4 evaluates `when: platform:` conditions at pipeline compile time
|
||||
against the **server's** platform (amd64). Steps filtered by platform are dropped
|
||||
before any agent can claim them, so arm64 steps never reach the arm64 agent.
|
||||
|
||||
The `platform:` step-level key (e.g. `platform: linux/arm64`) is treated as a plugin
|
||||
attribute and causes `Cannot configure both commands and custom attributes [platform]`.
|
||||
|
||||
Workaround: build arm64 artifacts locally via `make release-arm64`. This is fixed in
|
||||
Woodpecker 2.x which supports proper per-step label-based agent routing.
|
||||
|
||||
### Windows DLL Export Ordinal Too Large
|
||||
`/usr/bin/x86_64-w64-mingw32-ld: error: export ordinal too large: 106290`
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user