From c6ca3a6906c054fb92abea8f7af1a90d088686d5 Mon Sep 17 00:00:00 2001 From: Juan P Lopez Date: Tue, 22 Oct 2024 21:33:06 -0500 Subject: [PATCH] chore: add short lived cache key --- .github/workflows/e2e-test2.yml | 187 ++++++++++++++++++++++---------- 1 file changed, 131 insertions(+), 56 deletions(-) diff --git a/.github/workflows/e2e-test2.yml b/.github/workflows/e2e-test2.yml index 71114b9144..9f437a4049 100644 --- a/.github/workflows/e2e-test2.yml +++ b/.github/workflows/e2e-test2.yml @@ -6,30 +6,35 @@ on: jobs: build: - name: parallel buck2 builds + name: clustered buck2 builds runs-on: ubuntu-latest - timeout-minutes: 10 + timeout-minutes: 15 strategy: matrix: - target: - - //core/api - - //core/api-ws-server - - //core/api-trigger - - //core/api-exporter - - //apps/dashboard - - //apps/consent - - //apps/pay - - //apps/admin-panel - - //apps/map - - //apps/voucher - - //core/api-keys - - //core/notifications - - //bats/helpers/callback:run - - //bats/helpers/subscriber:run - - //bats/helpers/totp:generate + cluster: + - name: core-apis + targets: "//core/api //core/api-ws-server //core/api-trigger //core/api-exporter" + - name: core-apps + targets: "//apps/dashboard //apps/consent //apps/admin-panel" + - name: apps + targets: "//apps/pay //apps/map //apps/voucher" + - name: core-services + targets: "//core/api-keys //core/notifications" + - name: bats-helpers + targets: "//bats/helpers/callback:run //bats/helpers/subscriber:run //bats/helpers/totp:generate" fail-fast: false steps: + - id: vars + run: echo "short_sha=${GITHUB_SHA:0:7}" >> $GITHUB_ENV + + - name: Maximize build space + uses: easimon/maximize-build-space@master + with: + root-reserve-mb: 15360 + temp-reserve-mb: 12288 + remove-dotnet: "true" + - uses: actions/checkout@v4 - name: Install Nix @@ -38,22 +43,31 @@ jobs: - name: Run the Magic Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v8 - - name: Build + - name: Create cache directories + run: | + mkdir -p ~/.buck2 ~/.cache/buck2 buck-out/v2 + + - name: Build cluster + run: | + nix develop -c buck2 build ${{ matrix.cluster.targets }} + + - name: Prepare cache directory run: | - nix develop -c buck2 build ${{ matrix.target }} + # Create a cluster-specific directory + mkdir -p cluster-cache/${{ matrix.cluster.name }} + # Move buck-out contents to cluster-specific directory + cp -r buck-out/* cluster-cache/${{ matrix.cluster.name }}/ + + - name: Debug cache content + run: | + echo "Cluster ${{ matrix.cluster.name }} cache size:" + du -sh cluster-cache/${{ matrix.cluster.name }} - uses: actions/cache/save@v4 with: - path: | - ~/.buck2 - buck-out - .buck-cache - prebuilt - installed - target - .buckd - buck-out/cache - key: buck2-${{ runner.os }}-${{ matrix.target }} + path: cluster-cache/${{ matrix.cluster.name }} + key: b2-${{ matrix.cluster.name }}-${{ env.short_sha }} + enableCrossOsArchive: true tests: name: execute via bats @@ -62,6 +76,16 @@ jobs: needs: build steps: + - id: vars + run: echo "short_sha=${GITHUB_SHA:0:7}" >> $GITHUB_ENV + + - name: Maximize build space + uses: easimon/maximize-build-space@master + with: + root-reserve-mb: 15360 + temp-reserve-mb: 12288 + remove-dotnet: "true" + - uses: actions/checkout@v4 - name: Install Nix @@ -70,36 +94,87 @@ jobs: - name: Run the Magic Nix Cache uses: DeterminateSystems/magic-nix-cache-action@v8 - - uses: actions/cache/restore@v4 + - name: Create cache directories + run: | + mkdir -p ~/.buck2 ~/.cache/buck2 buck-out/v2 cluster-cache + + # Restore each cluster cache separately + - name: Restore core-apis cache + uses: actions/cache/restore@v4 + with: + path: cluster-cache/core-apis + key: b2-core-apis-${{ env.short_sha }} + fail-on-cache-miss: true + + - name: Restore core-apps cache + uses: actions/cache/restore@v4 + with: + path: cluster-cache/core-apps + key: b2-core-apps-${{ env.short_sha }} + fail-on-cache-miss: true + + - name: Restore apps cache + uses: actions/cache/restore@v4 + with: + path: cluster-cache/apps + key: b2-apps-${{ env.short_sha }} + fail-on-cache-miss: true + + - name: Restore core-services cache + uses: actions/cache/restore@v4 + with: + path: cluster-cache/core-services + key: b2-core-services-${{ env.short_sha }} + fail-on-cache-miss: true + + - name: Restore bats-helpers cache + uses: actions/cache/restore@v4 with: - path: | - ~/.buck2 - buck-out - .buck-cache - prebuilt - installed - target - .buckd - buck-out/cache - key: buck2-${{ runner.os }}- + path: cluster-cache/bats-helpers + key: b2-bats-helpers-${{ env.short_sha }} + fail-on-cache-miss: true + + - name: Merge cluster caches + run: | + # Remove existing buck-out if it exists + rm -rf buck-out + + # Move the first cluster's contents directly to buck-out + if [ -d "cluster-cache/core-apis" ]; then + echo "Moving core-apis cache to buck-out" + mv cluster-cache/core-apis buck-out + fi + + # For remaining clusters, move their contents into the existing buck-out + for cluster in core-apps apps core-services bats-helpers; do + if [ -d "cluster-cache/$cluster" ]; then + echo "Merging cache from $cluster" + # Use find to move all contents, handling any permission issues + find "cluster-cache/$cluster" -mindepth 1 -maxdepth 1 -exec mv -f {} buck-out/ \; + fi + done + + # Ensure correct permissions + chmod -R u+w buck-out + + - name: Debug restored caches + run: | + echo "Buck-out size after merge:" + du -sh buck-out + echo "Buck-out structure:" + find buck-out -type d + echo "Permissions:" + ls -la buck-out/ - name: Run bats tests run: | - nix develop -c buck2 build //core/api \ - //core/api-ws-server \ - //core/api-trigger \ - //core/api-exporter \ - //apps/dashboard \ - //apps/consent \ - //apps/pay \ - //apps/admin-panel \ - //apps/map \ - //apps/voucher \ - //core/api-keys \ - //core/notifications \ - //bats/helpers/callback:run \ - //bats/helpers/subscriber:run \ - //bats/helpers/totp:generate + echo "Buck build status before tests:" + nix develop -c buck2 build --show-output \ + //core/api //core/api-ws-server //core/api-trigger //core/api-exporter \ + //apps/dashboard //apps/consent //apps/pay //apps/admin-panel //apps/map //apps/voucher \ + //core/api-keys //core/notifications \ + //bats/helpers/callback:run //bats/helpers/subscriber:run //bats/helpers/totp:generate + nix develop -c bats --setup-suite-file bats/ci_setup_suite.bash -t bats/core/** - name: Rename Tilt log