@@ -41,51 +41,22 @@ jobs:
4141 run : |
4242 curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
4343 k3d version | cat
44- - name : Start LocalStack (S3) on host
45- run : |
46- # Start LocalStack on the host to simulate external S3 (like production)
47- # Stop any existing LocalStack containers
48- docker stop localstack-k3d 2>/dev/null || true
49- docker rm localstack-k3d 2>/dev/null || true
50- # Start LocalStack using host network mode so it's directly accessible
51- # This ensures it's accessible from k3d pods via host.k3d.internal
52- docker run -d --name localstack-k3d \
53- --network host \
54- -e SERVICES=s3,cloudformation,ecs,kinesis,cloudwatch,logs \
55- -e DEBUG=1 \
56- -e DOCKER_HOST=unix:///var/run/docker.sock \
57- -e LOCALSTACK_HOST=0.0.0.0 \
58- localstack/localstack:latest
59- # Wait for LocalStack to be ready
60- echo "Waiting for LocalStack to be ready..."
61- for i in {1..30}; do
62- if curl -s http://localhost:4566/_localstack/health > /dev/null 2>&1; then
63- echo "LocalStack is ready"
64- break
65- fi
66- echo "Waiting for LocalStack... ($i/30)"
67- sleep 2
68- done
69- # Verify LocalStack is accessible
70- curl -s http://localhost:4566/_localstack/health | head -5 || echo "LocalStack health check"
71- # Show network info
72- echo "LocalStack container network info:"
73- docker inspect localstack-k3d | grep -i network -A 5 || true
74- - name : Install awscli-local
75- run : |
76- pip install awscli-local || pip3 install awscli-local || echo "awslocal installation skipped"
44+ - name : Start LocalStack (S3)
45+ uses :
localstack/[email protected] 46+ with :
47+ install-awslocal : true
7748 - name : Create S3 bucket for tests (host LocalStack)
7849 run : |
79- awslocal s3 mb s3://$AWS_STACK_NAME || aws --endpoint-url=http://localhost:4566 s3 mb s3://$AWS_STACK_NAME || true
80- awslocal s3 ls || aws --endpoint-url=http://localhost:4566 s3 ls || echo "S3 bucket listing completed"
50+ awslocal s3 mb s3://$AWS_STACK_NAME || true
51+ awslocal s3 ls
8152 - name : Create k3s cluster (k3d)
8253 timeout-minutes : 5
8354 run : |
8455 # Create cluster - host.k3d.internal will allow pods to access host services
8556 # No port mapping needed - LocalStack is on host, accessible via host.k3d.internal:4566
8657 k3d cluster create unity-builder --agents 1 --wait
8758 kubectl config current-context | cat
88- - name : Verify cluster readiness and LocalStack connectivity
59+ - name : Verify cluster readiness
8960 timeout-minutes : 2
9061 run : |
9162 for i in {1..60}; do
@@ -100,23 +71,6 @@ jobs:
10071 kubectl get storageclass
10172 # Show node resources
10273 kubectl describe nodes | grep -A 5 "Allocated resources" || true
103- # Get host gateway IP that k3d uses
104- HOST_IP=$(docker inspect k3d-unity-builder-agent-0 | grep -i gateway | head -1 | grep -oE '"Gateway":"[^"]*"' | cut -d'"' -f4 || echo "")
105- if [ -z "$HOST_IP" ]; then
106- # Try alternative method
107- HOST_IP=$(docker network inspect k3d-unity-builder | grep -i gateway | head -1 | grep -oE '"Gateway":"[^"]*"' | cut -d'"' -f4 || echo "")
108- fi
109- echo "Host gateway IP: $HOST_IP"
110- echo "Testing LocalStack from host (should work):"
111- curl -s --max-time 5 http://localhost:4566/_localstack/health | head -5 || echo "Host connectivity failed"
112- echo "Testing LocalStack from k3d cluster via host.k3d.internal:4566..."
113- kubectl run test-localstack-dns --image=curlimages/curl --rm -i --restart=Never --timeout=10s -- \
114- curl -v --max-time 5 http://host.k3d.internal:4566/_localstack/health 2>&1 | head -15 || echo "DNS-based connectivity test completed"
115- if [ -n "$HOST_IP" ]; then
116- echo "Testing LocalStack from k3d cluster via host IP $HOST_IP:4566..."
117- kubectl run test-localstack-ip --image=curlimages/curl --rm -i --restart=Never --timeout=10s -- \
118- curl -v --max-time 5 http://$HOST_IP:4566/_localstack/health 2>&1 | head -15 || echo "IP-based connectivity test completed"
119- fi
12074 - uses : actions/setup-node@v4
12175 with :
12276 node-version : 20
@@ -166,9 +120,9 @@ jobs:
166120 versioning : None
167121 KUBE_STORAGE_CLASS : local-path
168122 PROVIDER_STRATEGY : k8s
169- # Set lower resource requests for tests to prevent evictions in k3d
170- containerCpu : ' 512 '
171- containerMemory : ' 512 '
123+ # Set resource requests for tests - increased memory to prevent OOM kills
124+ containerCpu : ' 1000 '
125+ containerMemory : ' 1024 '
172126 AWS_ACCESS_KEY_ID : test
173127 AWS_SECRET_ACCESS_KEY : test
174128 AWS_S3_ENDPOINT : http://localhost:4566
0 commit comments