supabase-postgres.git / summary / log / commit / refs
commit 0ee92001127e8013b2a4cbdff12ffc9a9ddbf685
Author: Joey Freeland <30938344+jfreeland@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
Date: Thu Jun 11 20:20:08 2026 +0000
fix(ci): clean up dangling EBS volumes left by Packer builds (#2165)
.github/workflows/ami-release-nix-single.yml | 13 +++++++++++--
.github/workflows/ami-release-nix.yml | 2 ++
.github/workflows/base-image-nightly.yml | 2 ++
.github/workflows/testinfra-ami-build.yml | 14 ++++++++++++++
amazon-amd64-nix.pkr.hcl | 5 +++--
amazon-arm64-nix.pkr.hcl | 5 +++--
6 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/ami-release-nix-single.yml b/.github/workflows/ami-release-nix-single.yml
index 73ff48c5..536e913f 100644
--- a/.github/workflows/ami-release-nix-single.yml
+++ b/.github/workflows/ami-release-nix-single.yml
@@ -163,15 +163,24 @@ jobs:
SLACK_MESSAGE: 'Building Postgres AMI failed'
SLACK_FOOTER: ''
+ - name: configure aws credentials for cleanup
+ if: ${{ always() }}
+ uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1
+ with:
+ role-to-assume: ${{ secrets.DEV_AWS_ROLE }}
+ aws-region: "us-east-1"
+
- name: Cleanup resources after build
if: ${{ always() }}
run: |
EXECUTION_ID="${{ steps.build-ami.outputs.execution_id }}"
- aws ec2 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --instance-ids
+ aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
- name: Cleanup resources on build cancellation
if: ${{ cancelled() }}
run: |
EXECUTION_ID="${{ steps.build-ami.outputs.execution_id }}"
- aws ec2 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --instance-ids
+ aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
diff --git a/.github/workflows/ami-release-nix.yml b/.github/workflows/ami-release-nix.yml
index fb34ef37..0deebe77 100644
--- a/.github/workflows/ami-release-nix.yml
+++ b/.github/workflows/ami-release-nix.yml
@@ -326,9 +326,11 @@ jobs:
run: |
EXECUTION_ID="${{ env.EXECUTION_ID }}"
aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
- name: Cleanup resources on build cancellation
if: ${{ cancelled() }}
run: |
EXECUTION_ID="${{ env.EXECUTION_ID }}"
aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
diff --git a/.github/workflows/base-image-nightly.yml b/.github/workflows/base-image-nightly.yml
index d6572836..9d8d21d5 100644
--- a/.github/workflows/base-image-nightly.yml
+++ b/.github/workflows/base-image-nightly.yml
@@ -70,8 +70,10 @@ jobs:
if: ${{ always() }}
run: |
aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
- name: Cleanup resources on build cancellation
if: ${{ cancelled() }}
run: |
aws ec2 --region us-east-1 describe-instances --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" --query "Reservations[].Instances[].InstanceId" --output text | xargs -r aws ec2 terminate-instances --region us-east-1 --instance-ids
+ aws ec2 --region us-east-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text | xargs -r -n1 aws ec2 --region us-east-1 delete-volume --volume-id
diff --git a/.github/workflows/testinfra-ami-build.yml b/.github/workflows/testinfra-ami-build.yml
index 4dde6909..ee71c795 100644
--- a/.github/workflows/testinfra-ami-build.yml
+++ b/.github/workflows/testinfra-ami-build.yml
@@ -123,6 +123,13 @@ jobs:
else
echo "No packer build instances to clean up"
fi
+ VOLUME_IDS=$(aws ec2 --region ap-southeast-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text)
+ if [ -n "$VOLUME_IDS" ]; then
+ echo "Deleting orphaned packer volumes: $VOLUME_IDS"
+ echo "$VOLUME_IDS" | xargs -r -n1 aws ec2 --region ap-southeast-1 delete-volume --volume-id
+ else
+ echo "No orphaned packer volumes to clean up"
+ fi
- name: Cleanup resources after build
if: ${{ always() }}
@@ -135,6 +142,13 @@ jobs:
else
echo "No testinfra instances to clean up"
fi
+ VOLUME_IDS=$(aws ec2 --region ap-southeast-1 describe-volumes --filters "Name=tag:packerExecutionId,Values=${EXECUTION_ID}" "Name=status,Values=available" --query "Volumes[*].VolumeId" --output text)
+ if [ -n "$VOLUME_IDS" ]; then
+ echo "Deleting orphaned packer volumes: $VOLUME_IDS"
+ echo "$VOLUME_IDS" | xargs -r -n1 aws ec2 --region ap-southeast-1 delete-volume --volume-id || true
+ else
+ echo "No orphaned packer volumes to clean up"
+ fi
- name: Cleanup stage 2 AMI
if: always()
diff --git a/amazon-amd64-nix.pkr.hcl b/amazon-amd64-nix.pkr.hcl
index 443387d6..f3d2f462 100644
--- a/amazon-amd64-nix.pkr.hcl
+++ b/amazon-amd64-nix.pkr.hcl
@@ -152,8 +152,9 @@ source "amazon-ebssurrogate" "source" {
packerExecutionId = "${var.packer-execution-id}"
}
run_volume_tags = {
- creator = "packer"
- appType = "postgres"
+ creator = "packer"
+ appType = "postgres"
+ packerExecutionId = "${var.packer-execution-id}"
}
snapshot_tags = {
creator = "packer"
diff --git a/amazon-arm64-nix.pkr.hcl b/amazon-arm64-nix.pkr.hcl
index 4faa8aac..ac64fe35 100644
--- a/amazon-arm64-nix.pkr.hcl
+++ b/amazon-arm64-nix.pkr.hcl
@@ -152,8 +152,9 @@ source "amazon-ebssurrogate" "source" {
packerExecutionId = "${var.packer-execution-id}"
}
run_volume_tags = {
- creator = "packer"
- appType = "postgres"
+ creator = "packer"
+ appType = "postgres"
+ packerExecutionId = "${var.packer-execution-id}"
}
snapshot_tags = {
creator = "packer"