ci : job linux avec cargo-zigbuild (aarch64 musl) + empreinte disque reduite - rust:1.94-alpine n'a pas de compilateur croise aarch64 (le step aarch64 echouait avec 'aarch64-linux-musl-gcc not found') ; cargo-zigbuild produit x86_64 + aarch64 musl avec zig (~50 Mo) en une seule image ; CARGO_TARGET_DIR=/tmp + CARGO_INCREMENTAL=0 pour ne rien laisser sur le runner ; concurrency cancel-in-progress ; le setup job peut aussi echouer sur disque plein (no space left on device) : nettoyer docker sur l'hote
This commit is contained in:
@@ -9,10 +9,17 @@
|
||||
# majorite des cas (les artefacts windows/macos peuvent aussi etre produits
|
||||
# par les scripts locaux documentes dans RELEASING.md).
|
||||
#
|
||||
# Prérequis du runner : pouvoir tirer les images docker.io (rust:1.94-alpine
|
||||
# ici, ou les images messense/rust-musl-cross:x86_64-musl / :aarch64-musl) et
|
||||
# le secret GITEA_TOKEN (jeton avec droit 'write:release') positionné sur le
|
||||
# dépôt. La release existante est écrasée (release_overwrite).
|
||||
# Prérequis du runner : pouvoir tirer les images docker.io (rust:1.94-alpine,
|
||||
# ~300 Mo) et le secret GITEA_TOKEN (jeton avec droit 'write:release')
|
||||
# positionné sur le dépôt. La release existante est écrasée
|
||||
# (release_overwrite).
|
||||
#
|
||||
# Note disque (runner avec espace limite) :
|
||||
# - les builds compilent dans CARGO_TARGET_DIR=/tmp (hors du volume
|
||||
# workspace) avec l'incremental desactive, donc rien ne persiste ;
|
||||
# - le job linux utilise cargo-zigbuild : zig (~50 Mo) fournit le linker
|
||||
# croise pour les DEUX cibles musl statiques dans une seule image legere
|
||||
# (rust:1.94-alpine n'embarque pas de compilateur croise aarch64).
|
||||
name: release
|
||||
|
||||
on:
|
||||
@@ -20,34 +27,41 @@ on:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
concurrency:
|
||||
group: release-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
runs-on: ubuntu-latest
|
||||
container: rust:1.94-alpine
|
||||
env:
|
||||
CARGO_TARGET_DIR: /tmp/am-target
|
||||
CARGO_INCREMENTAL: "0"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install build tools
|
||||
run: apk add --no-cache build-base zip
|
||||
- name: Install build tools (zig + cargo-zigbuild)
|
||||
run: |
|
||||
apk add --no-cache build-base zip curl
|
||||
rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
|
||||
curl -fsSL https://ziglang.org/download/0.14.1/zig-x86_64-linux-0.14.1.tar.xz -o /tmp/zig.tar.xz
|
||||
tar -xf /tmp/zig.tar.xz -C /opt
|
||||
echo "/opt/zig-x86_64-linux-0.14.1" >> "$GITHUB_PATH"
|
||||
cargo install cargo-zigbuild --locked
|
||||
|
||||
- name: Add musl targets
|
||||
run: rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
|
||||
|
||||
- name: Build linux x86_64 (static musl)
|
||||
run: cargo build --release --locked --target x86_64-unknown-linux-musl
|
||||
|
||||
- name: Build linux aarch64 (static musl)
|
||||
run: cargo build --release --locked --target aarch64-unknown-linux-musl
|
||||
- name: Build linux x86_64 + aarch64 (static musl, zig)
|
||||
run: cargo zigbuild --release --locked --target x86_64-unknown-linux-musl --target aarch64-unknown-linux-musl
|
||||
|
||||
- name: Stage archives
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp target/x86_64-unknown-linux-musl/release/am dist/am-linux-x86_64
|
||||
cp target/aarch64-unknown-linux-musl/release/am dist/am-linux-aarch64
|
||||
cp "$CARGO_TARGET_DIR/x86_64-unknown-linux-musl/release/am" dist/am-linux-x86_64
|
||||
cp "$CARGO_TARGET_DIR/aarch64-unknown-linux-musl/release/am" dist/am-linux-aarch64
|
||||
cd dist
|
||||
tar -czf am-linux-x86_64.tar.gz am-linux-x86_64
|
||||
tar -czf am-linux-aarch64.tar.gz am-linux-aarch64
|
||||
sha256sum am-*.tar.gz > checksums.txt
|
||||
sha256sum am-linux-*.tar.gz > checksums.txt
|
||||
|
||||
- name: Publish release
|
||||
uses: https://gitea.com/actions/gitea-release-action@v1
|
||||
@@ -60,6 +74,9 @@ jobs:
|
||||
|
||||
windows:
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
CARGO_TARGET_DIR: C:/am-target
|
||||
CARGO_INCREMENTAL: "0"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -69,7 +86,7 @@ jobs:
|
||||
- name: Stage archive
|
||||
run: |
|
||||
New-Item -ItemType Directory -Force dist | Out-Null
|
||||
Compress-Archive -Path target/release/am.exe -DestinationPath dist/am-windows-x86_64.zip -Force
|
||||
Compress-Archive -Path C:/am-target/release/am.exe -DestinationPath dist/am-windows-x86_64.zip -Force
|
||||
(Get-FileHash dist/am-windows-x86_64.zip -Algorithm SHA256).Hash.ToLower() | Out-File dist/checksums.txt
|
||||
|
||||
- name: Publish release
|
||||
@@ -82,6 +99,9 @@ jobs:
|
||||
|
||||
macos:
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
CARGO_TARGET_DIR: /tmp/am-target
|
||||
CARGO_INCREMENTAL: "0"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -94,8 +114,8 @@ jobs:
|
||||
- name: Stage archives
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp target/x86_64-apple-darwin/release/am dist/am-macos-x86_64
|
||||
cp target/aarch64-apple-darwin/release/am dist/am-macos-aarch64
|
||||
cp "$CARGO_TARGET_DIR/x86_64-apple-darwin/release/am" dist/am-macos-x86_64
|
||||
cp "$CARGO_TARGET_DIR/aarch64-apple-darwin/release/am" dist/am-macos-aarch64
|
||||
cd dist
|
||||
tar -czf am-macos-x86_64.tar.gz am-macos-x86_64
|
||||
tar -czf am-macos-aarch64.tar.gz am-macos-aarch64
|
||||
|
||||
Reference in New Issue
Block a user