From 7417ddb6933c681c12fb8acbbcb07c49e84fe2bd Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Tue, 27 Oct 2026 13:58:56 -0400 Subject: [PATCH 1/3] split check size job into parallel builds --- .github/workflows/check-size.yml | 47 ++++++++++++++++---------------- scripts/build_layers.sh | 23 ++++++++++++---- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml index 6d3e1f57..abdae9db 100644 --- a/.github/workflows/check-size.yml +++ b/.github/workflows/check-size.yml @@ -3,35 +3,36 @@ name: check-size on: pull_request jobs: - check-size: - runs-on: ubuntu-latest + build: + name: ruby ${{ matrix.ruby }} ${{ matrix.arch }} + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} + strategy: + fail-fast: false + matrix: + ruby: ["3.2", "3.3", "3.4", "4.0"] + arch: ["amd64", "arm64"] steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Set up Node 14.15 - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 - with: - node-version: 14.15 - - - name: Cache Node modules - id: cache-node-modules - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: "**/node_modules" - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Install dependencies - if: steps.cache-node-modules.outputs.cache-hit != 'true' - run: yarn install - - - name: Install Crossbuild dependencies - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - name: Build Layers + env: + RUBY_VERSION: ${{ matrix.ruby }} + ARCH: ${{ matrix.arch }} run: ./scripts/build_layers.sh - name: Check Size + env: + RUBY_VERSION: ${{ matrix.ruby }} + ARCH: ${{ matrix.arch }} run: ./scripts/check_layer_size.sh + + # Keeps the required status check name stable. Matrix jobs are reported + # individually, so branch protection that requires "check-size" still matches. + check-size: + needs: build + runs-on: ubuntu-latest + if: always() + steps: + - name: Require all layer builds + run: test "${{ needs.build.result }}" = "success" diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 9cd1b65a..67b0b5af 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -11,6 +11,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog-lambda_ruby" RUBY_VERSIONS=("3.2" "3.3" "3.4" "4.0") +ARCHITECTURES=("arm64" "amd64") if [ -z "$RUBY_VERSION" ]; then echo "Ruby version not specified, running for all ruby versions." @@ -24,6 +25,18 @@ else fi fi +if [ -z "$ARCH" ]; then + echo "Architecture not specified, running for all architectures." +else + echo "Architecture is specified: $ARCH" + if (printf '%s\n' "${ARCHITECTURES[@]}" | grep -xq $ARCH); then + ARCHITECTURES=($ARCH) + else + echo "Unsupported architecture found, valid options are : ${ARCHITECTURES[@]}" + exit 1 + fi +fi + function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } @@ -61,11 +74,11 @@ mkdir $LAYER_DIR for ruby_version in "${RUBY_VERSIONS[@]}" do - echo "Building layer for Ruby ${ruby_version} arch=arm64" - docker_build_zip ${ruby_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${ruby_version}.zip arm64 $GIT_REF - - echo "Building layer for Ruby ${ruby_version} arch=amd64" - docker_build_zip ${ruby_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${ruby_version}.zip amd64 $GIT_REF + for arch in "${ARCHITECTURES[@]}" + do + echo "Building layer for Ruby ${ruby_version} arch=${arch}" + docker_build_zip ${ruby_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${arch}-${ruby_version}.zip ${arch} $GIT_REF + done done From 39b9a38ad7de3680058fd6a88e758d9d953594e6 Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Tue, 27 Oct 2026 14:50:33 -0400 Subject: [PATCH 2/3] drop unused qemu install from integration tests --- .github/workflows/build.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e515b1c8..5131af26 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,11 +80,6 @@ jobs: working-directory: integration_tests run: yarn install - - name: Install Crossbuild dependencies - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - name: Run tests env: BUILD_LAYERS: true From 07878435260f27652b7b3115cc869a3d0d19bebb Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Tue, 27 Oct 2026 22:47:48 -0400 Subject: [PATCH 3/3] pin to 24.04 --- .github/workflows/check-size.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml index abdae9db..d4e29c85 100644 --- a/.github/workflows/check-size.yml +++ b/.github/workflows/check-size.yml @@ -5,7 +5,7 @@ on: pull_request jobs: build: name: ruby ${{ matrix.ruby }} ${{ matrix.arch }} - runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} strategy: fail-fast: false matrix: @@ -31,7 +31,7 @@ jobs: # individually, so branch protection that requires "check-size" still matches. check-size: needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: always() steps: - name: Require all layer builds