diff --git a/.github/workflows/testinfra-nix.yml b/.github/workflows/testinfra-nix.yml index c486dfc34..2b07e716f 100644 --- a/.github/workflows/testinfra-nix.yml +++ b/.github/workflows/testinfra-nix.yml @@ -19,6 +19,12 @@ jobs: - uses: DeterminateSystems/nix-installer-action@main + - name: Clean Nix store before build + run: | + sudo nix-collect-garbage -d || true + sudo nix-store --optimize || true + df -h / # Display available space + - name: Set PostgreSQL versions id: set-versions run: | @@ -80,13 +86,27 @@ jobs: packer init amazon-arm64-nix.pkr.hcl GIT_SHA=${{github.sha}} packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var-file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "ansible_arguments=" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" -var "ansible_arguments=-e postgresql_major=${POSTGRES_MAJOR_VERSION}" amazon-arm64-nix.pkr.hcl - + + - name: Clean up after AMI stage 1 + if: always() # Run even if previous steps fail + run: | + sudo nix-collect-garbage -d # Delete old generations of all profiles + sudo rm -rf /tmp/* # Clean temporary files + df -h / # Display available space + - name: Build AMI stage 2 run: | packer init stage2-nix-psql.pkr.hcl GIT_SHA=${{github.sha}} packer build -var "git-head-version=${GIT_SHA}" -var "packer-execution-id=${GITHUB_RUN_ID}" -var "postgres_major_version=${POSTGRES_MAJOR_VERSION}" -var-file="development-arm.vars.pkr.hcl" -var-file="common-nix.vars.pkr.hcl" -var "postgres-version=${{ steps.random.outputs.random_string }}" -var "region=ap-southeast-1" -var 'ami_regions=["ap-southeast-1"]' -var "force-deregister=true" -var "git_sha=${GITHUB_SHA}" stage2-nix-psql.pkr.hcl + - name: Clean up after AMI stage 2 + if: always() # Run even if previous steps fail + run: | + sudo nix-collect-garbage -d # Delete old generations of all profiles + sudo rm -rf /tmp/* # Clean temporary files + df -h / # Display available space + - name: Run tests timeout-minutes: 10 env: diff --git a/nix/ext/wrappers/default.nix b/nix/ext/wrappers/default.nix index 67be926ea..e87dfb372 100644 --- a/nix/ext/wrappers/default.nix +++ b/nix/ext/wrappers/default.nix @@ -38,11 +38,21 @@ buildPgrxExtension_0_12_9 rec { NIX_LDFLAGS = "-L${postgresql}/lib -lpq"; - # Set necessary environment variables for pgrx + # Set necessary environment variables for pgrx in darwin only env = lib.optionalAttrs stdenv.isDarwin { POSTGRES_LIB = "${postgresql}/lib"; RUSTFLAGS = "-C link-arg=-undefined -C link-arg=dynamic_lookup"; - PGPORT = "5435"; + # Calculate unique port for each PostgreSQL version: + # - Check if version contains underscore (indicating OrioleDB) + # - Add 1 to port if it's OrioleDB + # - Add 2 for each major version above 15 + # Examples: + # - PostgreSQL 15.8 → 5435 + 0 + (15-15)*2 = 5435 + # - PostgreSQL 17_0 (OrioleDB) → 5435 + 1 + (17-15)*2 = 5440 + # - PostgreSQL 17.4 → 5435 + 0 + (17-15)*2 = 5439 + PGPORT = toString (5435 + + (if builtins.match ".*_.*" postgresql.version != null then 1 else 0) + # +1 for OrioleDB + ((builtins.fromJSON (builtins.substring 0 2 postgresql.version)) - 15) * 2); # +2 for each major version }; OPENSSL_NO_VENDOR = 1;