From 6b5026fa695742aed80ae3b137c4dab1b3e31760 Mon Sep 17 00:00:00 2001 From: Kyle Mendell Date: Sun, 8 Mar 2026 15:36:24 -0500 Subject: [PATCH] try faster s3 --- .github/workflows/e2e-tests.yml | 22 +++------------------- tests/setup/docker-compose-s3.yml | 26 +++++++++++++------------- tests/setup/localstack-init-s3.py | 22 ++++++++++++++++++++++ 3 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 tests/setup/localstack-init-s3.py diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index b7c8b993..e2979d34 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -67,12 +67,12 @@ jobs: id: postgres-cache with: path: /tmp/postgres-image.tar - key: postgres-18-${{ runner.os }} + key: postgres-17-${{ runner.os }} - name: Pull and save PostgreSQL image if: matrix.db == 'postgres' && steps.postgres-cache.outputs.cache-hit != 'true' run: | - docker pull postgres:18 - docker save postgres:18 > /tmp/postgres-image.tar + docker pull postgres:17 + docker save postgres:17 > /tmp/postgres-image.tar - name: Load PostgreSQL image if: matrix.db == 'postgres' && steps.postgres-cache.outputs.cache-hit == 'true' run: docker load < /tmp/postgres-image.tar @@ -108,22 +108,6 @@ jobs: if: matrix.storage == 's3' && steps.s3-cache.outputs.cache-hit == 'true' run: docker load < /tmp/localstack-s3-image.tar - - name: Cache AWS CLI Docker image - if: matrix.storage == 's3' - uses: actions/cache@v4 - id: aws-cli-cache - with: - path: /tmp/aws-cli-image.tar - key: aws-cli-latest-${{ runner.os }} - - name: Pull and save AWS CLI image - if: matrix.storage == 's3' && steps.aws-cli-cache.outputs.cache-hit != 'true' - run: | - docker pull amazon/aws-cli:latest - docker save amazon/aws-cli:latest > /tmp/aws-cli-image.tar - - name: Load AWS CLI image - if: matrix.storage == 's3' && steps.aws-cli-cache.outputs.cache-hit == 'true' - run: docker load < /tmp/aws-cli-image.tar - - name: Install test dependencies run: pnpm --filter pocket-id-tests install --frozen-lockfile diff --git a/tests/setup/docker-compose-s3.yml b/tests/setup/docker-compose-s3.yml index 533afee9..25660387 100644 --- a/tests/setup/docker-compose-s3.yml +++ b/tests/setup/docker-compose-s3.yml @@ -9,21 +9,21 @@ services: service: scim-test-server localstack-s3: image: localstack/localstack:s3-latest - healthcheck: - test: ["CMD", "curl", "-f", "http://localstack-s3:4566"] - interval: 1s - timeout: 3s - retries: 10 - create-bucket: - image: amazon/aws-cli:latest environment: AWS_ACCESS_KEY_ID: test AWS_SECRET_ACCESS_KEY: test AWS_DEFAULT_REGION: us-east-1 - depends_on: - localstack-s3: - condition: service_healthy - entrypoint: "aws --endpoint-url=http://localstack-s3:4566 s3 mb s3://pocket-id-test" + volumes: + - ./localstack-init-s3.py:/etc/localstack/init/ready.d/10-init-s3.py + healthcheck: + test: + [ + "CMD-SHELL", + 'curl -fs http://localstack-s3:4566/_localstack/init/ready | grep -q ''"completed": true''', + ] + interval: 1s + timeout: 3s + retries: 10 pocket-id: extends: file: docker-compose.yml @@ -37,8 +37,8 @@ services: S3_SECRET_ACCESS_KEY: test S3_FORCE_PATH_STYLE: true depends_on: - create-bucket: - condition: service_completed_successfully + localstack-s3: + condition: service_healthy volumes: pocket-id-test-data: diff --git a/tests/setup/localstack-init-s3.py b/tests/setup/localstack-init-s3.py new file mode 100644 index 00000000..8c7c8671 --- /dev/null +++ b/tests/setup/localstack-init-s3.py @@ -0,0 +1,22 @@ +import boto3 +from botocore.exceptions import ClientError + +BUCKET_NAME = "pocket-id-test" + + +def main() -> None: + s3 = boto3.client( + "s3", + endpoint_url="http://localhost:4566", + aws_access_key_id="test", + aws_secret_access_key="test", + region_name="us-east-1", + ) + + try: + s3.head_bucket(Bucket=BUCKET_NAME) + except ClientError: + s3.create_bucket(Bucket=BUCKET_NAME) + + +main()