From 0e5b4f5e78193f0641f50f791e1afe6716a9ba9e Mon Sep 17 00:00:00 2001 From: Tianning Li Date: Wed, 18 Mar 2026 16:58:15 +0100 Subject: [PATCH] ci: add linux arm64 support to build and release workflows - Add aarch64-unknown-linux-musl build steps to build workflow - Remove ubuntu-24.04-arm exclusion guard - Add ubuntu-24.04-arm to release matrix - Add linux-arm64 artifact download, upx compression, and zip in release - Add aarch64-linux-musl-gcc linker to .cargo/config.toml - Add panic=abort and exclude crates/.claude to Cargo.toml --- .cargo/config.toml | 3 ++ .../build-datadog-serverless-compat.yml | 13 ++++- ...datadog-serverless-compat-per-platform.yml | 51 +++++++++++++++++++ Cargo.toml | 3 ++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release-datadog-serverless-compat-per-platform.yml diff --git a/.cargo/config.toml b/.cargo/config.toml index d65b9010..96034119 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,8 @@ [target.x86_64-unknown-linux-musl] linker = "x86_64-linux-musl-gcc" +[target.aarch64-unknown-linux-musl] +linker = "aarch64-linux-musl-gcc" + [target.x86_64-pc-windows-gnu] linker = "x86_64-w64-mingw32-gcc" diff --git a/.github/workflows/build-datadog-serverless-compat.yml b/.github/workflows/build-datadog-serverless-compat.yml index 13d18ee6..0c729089 100644 --- a/.github/workflows/build-datadog-serverless-compat.yml +++ b/.github/workflows/build-datadog-serverless-compat.yml @@ -23,7 +23,6 @@ jobs: - uses: mozilla-actions/sccache-action@65101d47ea8028ed0c98a1cdea8dd9182e9b5133 #v0.0.8 build-datadog-serverless-compat: name: Build Datadog Serverless Compat - if: ${{ inputs.runner != 'ubuntu-24.04-arm' }} needs: setup runs-on: ${{ inputs.runner }} steps: @@ -43,6 +42,18 @@ jobs: name: linux-amd64 path: target/x86_64-unknown-linux-musl/release/datadog-serverless-compat retention-days: 3 + - if: ${{ inputs.runner == 'ubuntu-24.04-arm' }} + shell: bash + run: | + sudo apt-get update + rustup target add aarch64-unknown-linux-musl && sudo apt-get install -y musl-tools + cargo build --release -p datadog-serverless-compat --target aarch64-unknown-linux-musl + - if: ${{ inputs.runner == 'ubuntu-24.04-arm' }} + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # 4.6.2 + with: + name: linux-arm64 + path: target/aarch64-unknown-linux-musl/release/datadog-serverless-compat + retention-days: 3 - if: ${{ inputs.runner == 'windows-2022' }} shell: bash run: cargo build --release -p datadog-serverless-compat --features windows-pipes diff --git a/.github/workflows/release-datadog-serverless-compat-per-platform.yml b/.github/workflows/release-datadog-serverless-compat-per-platform.yml new file mode 100644 index 00000000..8c8c30fb --- /dev/null +++ b/.github/workflows/release-datadog-serverless-compat-per-platform.yml @@ -0,0 +1,51 @@ +name: Release Datadog Serverless Compat (Per Platform) + +on: workflow_dispatch + +permissions: {} + +jobs: + build: + strategy: + fail-fast: false + matrix: + runner: [ubuntu-24.04, ubuntu-24.04-arm, windows-2022] + uses: ./.github/workflows/build-datadog-serverless-compat.yml + with: + runner: ${{matrix.runner}} + release: + runs-on: ubuntu-24.04 + needs: build + permissions: + contents: write + steps: + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0 + with: + name: linux-amd64 + path: target/linux-amd64 + - run: | + chmod +x target/linux-amd64/datadog-serverless-compat + upx target/linux-amd64/datadog-serverless-compat --lzma + - run: zip -j datadog-serverless-compat-linux-amd64.zip target/linux-amd64/datadog-serverless-compat + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0 + with: + name: linux-arm64 + path: target/linux-arm64 + - run: | + chmod +x target/linux-arm64/datadog-serverless-compat + upx target/linux-arm64/datadog-serverless-compat --lzma + - run: zip -j datadog-serverless-compat-linux-arm64.zip target/linux-arm64/datadog-serverless-compat + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # 4.3.0 + with: + name: windows-amd64 + path: target/windows-amd64 + - run: upx target/windows-amd64/datadog-serverless-compat.exe --lzma + - run: zip -j datadog-serverless-compat-windows-amd64.zip target/windows-amd64/datadog-serverless-compat.exe + - uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 + with: + draft: true + generate_release_notes: true + files: | + datadog-serverless-compat-linux-amd64.zip + datadog-serverless-compat-linux-arm64.zip + datadog-serverless-compat-windows-amd64.zip diff --git a/Cargo.toml b/Cargo.toml index 0ce470ad..1c9f528c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,9 @@ resolver = "2" members = [ "crates/*", ] +exclude = [ + "crates/.claude", +] [workspace.package] edition = "2024"