feat: add cross compilation without cargo-cross
This commit is contained in:
parent
c770784712
commit
df6c30e91f
1 changed files with 52 additions and 29 deletions
|
@ -1,64 +1,55 @@
|
||||||
stages:
|
stages:
|
||||||
|
- test
|
||||||
- build
|
- build
|
||||||
|
- publish
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
RUSTUP_TOOLCHAIN: stable
|
RUSTUP_TOOLCHAIN: stable
|
||||||
|
|
||||||
|
test:
|
||||||
|
stage: test
|
||||||
|
image: rust:latest
|
||||||
|
script:
|
||||||
|
- cargo test
|
||||||
|
|
||||||
build:
|
build_linux:
|
||||||
stage: build
|
stage: build
|
||||||
image: rust:latest
|
image: rust:latest
|
||||||
|
|
||||||
services:
|
|
||||||
- name: docker:24.0.5‑dind
|
|
||||||
alias: docker
|
|
||||||
|
|
||||||
variables:
|
|
||||||
DOCKER_HOST: tcp://docker:2375
|
|
||||||
DOCKER_TLS_CERTDIR: ""
|
|
||||||
DOCKER_DRIVER: overlay2
|
|
||||||
|
|
||||||
privileged: true
|
|
||||||
|
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- TARGET: x86_64-unknown-linux-gnu
|
- TARGET: x86_64-unknown-linux-gnu
|
||||||
BINARY_NAME: zenyx-x86_64-linux
|
BINARY_NAME: zenyx-x86_64-linux
|
||||||
EXT: ""
|
EXT: ""
|
||||||
|
RUSTFLAGS: ""
|
||||||
- TARGET: aarch64-unknown-linux-gnu
|
- TARGET: aarch64-unknown-linux-gnu
|
||||||
BINARY_NAME: zenyx-aarch64-linux
|
BINARY_NAME: zenyx-aarch64-linux
|
||||||
EXT: ""
|
EXT: ""
|
||||||
|
RUSTFLAGS: "-Clinker=aarch64-linux-gnu-gcc"
|
||||||
- TARGET: powerpc64le-unknown-linux-gnu
|
- TARGET: powerpc64le-unknown-linux-gnu
|
||||||
BINARY_NAME: zenyx-powerpc64le-linux
|
BINARY_NAME: zenyx-powerpc64le-linux
|
||||||
EXT: ""
|
EXT: ""
|
||||||
|
RUSTFLAGS: "-Clinker=powerpc64le-linux-gnu-gcc"
|
||||||
- TARGET: s390x-unknown-linux-gnu
|
- TARGET: s390x-unknown-linux-gnu
|
||||||
BINARY_NAME: zenyx-s390x-linux
|
BINARY_NAME: zenyx-s390x-linux
|
||||||
EXT: ""
|
EXT: ""
|
||||||
|
RUSTFLAGS: "-Clinker=s390x-linux-gnu-gcc"
|
||||||
- TARGET: riscv64gc-unknown-linux-gnu
|
- TARGET: riscv64gc-unknown-linux-gnu
|
||||||
BINARY_NAME: zenyx-riscv64-linux
|
BINARY_NAME: zenyx-riscv64-linux
|
||||||
EXT: ""
|
EXT: ""
|
||||||
- TARGET: x86_64-pc-windows-gnu
|
RUSTFLAGS: "-Clinker=riscv64-linux-gnu-gcc"
|
||||||
BINARY_NAME: zenyx-x86_64-windows-gnu.exe
|
|
||||||
EXT: ".exe"
|
|
||||||
- TARGET: x86_64-pc-windows-msvc
|
|
||||||
BINARY_NAME: zenyx-x86_64-windows-msvc.exe
|
|
||||||
EXT: ".exe"
|
|
||||||
|
|
||||||
cache:
|
|
||||||
key: "${CI_JOB_NAME}-${TARGET}-${CI_COMMIT_SHA}"
|
|
||||||
policy: pull-push
|
|
||||||
paths:
|
|
||||||
- "$HOME/.cargo/registry"
|
|
||||||
- "$HOME/.cargo/git"
|
|
||||||
- target
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- apt-get update && apt-get install -y docker.io
|
- apt-get update && apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
gcc-aarch64-linux-gnu \
|
||||||
|
gcc-powerpc64le-linux-gnu \
|
||||||
|
gcc-s390x-linux-gnu \
|
||||||
|
gcc-riscv64-linux-gnu
|
||||||
- rustup target add "$TARGET"
|
- rustup target add "$TARGET"
|
||||||
- cargo install cross --locked
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- cross build --target "$TARGET" --release
|
- cargo build --release --target "$TARGET"
|
||||||
- mkdir -p artifacts
|
- mkdir -p artifacts
|
||||||
- cp "target/$TARGET/release/zenyx$EXT" "artifacts/$BINARY_NAME"
|
- cp "target/$TARGET/release/zenyx$EXT" "artifacts/$BINARY_NAME"
|
||||||
|
|
||||||
|
@ -66,3 +57,35 @@ build:
|
||||||
paths:
|
paths:
|
||||||
- artifacts/*
|
- artifacts/*
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
|
|
||||||
|
build_windows_msvc:
|
||||||
|
stage: build
|
||||||
|
image: rust:latest
|
||||||
|
|
||||||
|
variables:
|
||||||
|
TARGET: x86_64-pc-windows-msvc
|
||||||
|
BINARY_NAME: zenyx-x86_64-windows-msvc.exe
|
||||||
|
EXT: ".exe"
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- apt-get update && apt-get install -y lld
|
||||||
|
- rustup target add "$TARGET"
|
||||||
|
- cargo install cargo-xwin --locked
|
||||||
|
- cargo xwin build --release --target "$TARGET"
|
||||||
|
|
||||||
|
script:
|
||||||
|
- mkdir -p artifacts
|
||||||
|
- cp "target/$TARGET/release/zenyx$EXT" "artifacts/$BINARY_NAME"
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- artifacts/*
|
||||||
|
expire_in: 1 week
|
||||||
|
|
||||||
|
publish:
|
||||||
|
stage: publish
|
||||||
|
script:
|
||||||
|
- echo "Publishing artifacts..."
|
||||||
|
dependencies:
|
||||||
|
- build_linux
|
||||||
|
- build_windows_msvc
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue