2026-09-13 11:42:55 +09:00
|
|
|
apiVersion: batch/v1
|
|
|
|
|
kind: Job
|
|
|
|
|
metadata:
|
|
|
|
|
name: api-gateway-integration-test
|
|
|
|
|
namespace: api
|
|
|
|
|
spec:
|
|
|
|
|
template:
|
2026-09-13 11:48:04 +09:00
|
|
|
metadata:
|
|
|
|
|
labels:
|
|
|
|
|
app: api-gateway
|
|
|
|
|
managed-by: test
|
|
|
|
|
role: integration-test
|
2026-09-13 11:42:55 +09:00
|
|
|
spec:
|
|
|
|
|
serviceAccountName: api-gateway
|
|
|
|
|
restartPolicy: Never
|
|
|
|
|
containers:
|
|
|
|
|
- name: integration-tester
|
2026-09-13 13:51:46 +09:00
|
|
|
image: forgejo.riotpiao.com/rock/api-gateway:latest
|
|
|
|
|
imagePullPolicy: Always
|
|
|
|
|
workingDir: /app
|
2026-09-13 11:42:55 +09:00
|
|
|
command:
|
2026-09-13 13:51:46 +09:00
|
|
|
- /bin/sh
|
2026-09-13 11:42:55 +09:00
|
|
|
- -c
|
|
|
|
|
- |
|
|
|
|
|
set -e
|
|
|
|
|
echo "Starting integration tests..."
|
2026-09-13 13:51:46 +09:00
|
|
|
echo "Gateway URL: http://api-gateway:8080"
|
2026-09-13 11:42:55 +09:00
|
|
|
|
2026-09-13 13:51:46 +09:00
|
|
|
# Wait for gateway service to be ready
|
2026-09-13 11:42:55 +09:00
|
|
|
echo "Waiting for gateway service to be ready..."
|
2026-09-13 13:51:46 +09:00
|
|
|
for i in $(seq 1 30); do
|
|
|
|
|
if curl -s http://api-gateway:8080/healthz > /dev/null 2>&1; then
|
2026-09-13 11:42:55 +09:00
|
|
|
echo "✓ Gateway is ready"
|
|
|
|
|
break
|
|
|
|
|
fi
|
2026-09-13 13:51:46 +09:00
|
|
|
echo "Waiting for gateway... ($i/30)"
|
2026-09-13 11:42:55 +09:00
|
|
|
sleep 2
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Run integration tests
|
|
|
|
|
echo "Running integration tests..."
|
|
|
|
|
go test -v -tags=integration -timeout=5m ./internal/integration/...
|
|
|
|
|
|
|
|
|
|
echo "✓ Integration tests completed"
|
|
|
|
|
env:
|
|
|
|
|
- name: GATEWAY_URL
|
|
|
|
|
value: "http://api-gateway:8080"
|
2026-09-13 13:51:46 +09:00
|
|
|
- name: CI
|
|
|
|
|
value: "true"
|
2026-09-13 11:42:55 +09:00
|
|
|
resources:
|
|
|
|
|
requests:
|
|
|
|
|
cpu: 250m
|
|
|
|
|
memory: 512Mi
|
|
|
|
|
limits:
|
|
|
|
|
cpu: 500m
|
|
|
|
|
memory: 1Gi
|
|
|
|
|
securityContext:
|
|
|
|
|
runAsNonRoot: true
|
|
|
|
|
runAsUser: 65532
|
|
|
|
|
allowPrivilegeEscalation: false
|
|
|
|
|
capabilities:
|
|
|
|
|
drop:
|
|
|
|
|
- ALL
|
|
|
|
|
readOnlyRootFilesystem: true
|
|
|
|
|
volumeMounts:
|
|
|
|
|
- name: tmp
|
|
|
|
|
mountPath: /tmp
|
|
|
|
|
- name: home
|
|
|
|
|
mountPath: /home/nonroot
|
|
|
|
|
volumes:
|
|
|
|
|
- name: tmp
|
|
|
|
|
emptyDir: {}
|
|
|
|
|
- name: home
|
|
|
|
|
emptyDir: {}
|
2026-09-13 13:51:46 +09:00
|
|
|
imagePullSecrets:
|
|
|
|
|
- name: regcred
|
2026-09-13 11:42:55 +09:00
|
|
|
backoffLimit: 1
|