diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 79cd5fec01..0e3511a3ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,16 +13,12 @@ jobs: include: - arch: i686 target: i686-unknown-linux-musl - container: i686-musl - arch: x86_64 target: x86_64-unknown-linux-musl - container: x86_64-musl - arch: armv7 target: armv7-unknown-linux-musleabi - container: armv7-musleabi - arch: aarch64 target: aarch64-unknown-linux-musl - container: aarch64-musl name: Linux ${{ matrix.arch }} runs-on: ubuntu-24.04 @@ -30,14 +26,31 @@ jobs: steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # 5.0.0 - - name: Build in Docker - run: scripts/build-in-docker.sh - env: - TARGET: ${{ matrix.target }} - DOCKER_TAG: ${{ matrix.container }} + - name: Install musl and cross-compilation tools + run: | + sudo apt-get update + sudo apt-get install -y musl-tools + # Install target-specific cross-compilation toolchains + case "${{ matrix.target }}" in + "armv7-unknown-linux-musleabi") + sudo apt-get install -y gcc-arm-linux-gnueabihf + ;; + "aarch64-unknown-linux-musl") + sudo apt-get install -y gcc-aarch64-linux-gnu + ;; + esac + + - name: Add Rustup Target + run: rustup target add ${{ matrix.target }} + + - name: Cache Dependencies + uses: swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 2.8.0 + + - name: Build Binary + run: cargo build --target=${{ matrix.target }} --release --locked - name: Rename Binary - run: mv target/*/release/sentry-cli sentry-cli-Linux-${{ matrix.arch }} + run: mv target/${{ matrix.target }}/release/sentry-cli sentry-cli-Linux-${{ matrix.arch }} - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2 with: diff --git a/Cargo.lock b/Cargo.lock index 60baaf3bd9..edd9295d53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1964,9 +1964,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.1+3.3.1" +version = "300.5.2+3.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" dependencies = [ "cc", ] diff --git a/scripts/build-in-docker.sh b/scripts/build-in-docker.sh deleted file mode 100755 index abb77c838b..0000000000 --- a/scripts/build-in-docker.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -set -eux - -DOCKER_IMAGE="messense/rust-musl-cross:${DOCKER_TAG}" -BUILD_DIR="/work" - -DOCKER_RUN_OPTS=" - -w ${BUILD_DIR} - -v $(pwd):${BUILD_DIR}:ro - -v $(pwd)/target:${BUILD_DIR}/target - -v $HOME/.cargo/registry:/root/.cargo/registry - ${DOCKER_IMAGE} -" - -docker run \ - ${DOCKER_RUN_OPTS} \ - cargo build --release --target=${TARGET} --locked - -# Smoke test (but only when building from the same repo). -# $TRAVIS_PULL_REQUEST_SLUG is set either to head repo slug, or to "" when -# building branches. -if [[ "${TRAVIS_PULL_REQUEST_SLUG:-x}" =~ ^(getsentry/sentry-cli)?$ ]]; then - env | grep SENTRY_ > .env - docker run \ - --env-file=.env \ - ${DOCKER_RUN_OPTS} \ - cargo run --release --target=${TARGET} -- releases list -fi - -# Fix permissions for shared directories -USER_ID=$(id -u) -GROUP_ID=$(id -g) -sudo chown -R ${USER_ID}:${GROUP_ID} target/ $HOME/.cargo