Add integration testing infrastructure with Podman Compose

- Add docker/podman-compose.yml for Immich server (no ML)
- Add test-data/sample-photos/ with 3 public domain images
- Add scripts/start-immich.sh for container startup + admin/API key creation
- Add scripts/seed-data.sh for uploading test photos and creating albums
- Add scripts/stop-immich.sh for cleanup with volume destruction
- Add scripts/run-example.sh wrapper (fixed env var export)
- Update examples to use IMMICH_URL and IMMICH_API_KEY env vars
- Add .github/workflows/integration-test.yml for CI
- Update assets.list() to use /search/metadata endpoint
- Update AGENTS.md with example running instructions
- Add 5 new examples: search_metadata, album_management, timeline_browsing,
  delete_assets, server_info
This commit is contained in:
Joakim Hulthe
2026-04-14 19:56:41 +00:00
parent c55d2b9080
commit 2e7db3b35a
22 changed files with 1327 additions and 22 deletions

63
docker/podman-compose.yml Normal file
View File

@@ -0,0 +1,63 @@
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v2
command: ['start.sh', 'immich']
ports:
- 2283:2283
environment:
UPLOAD_LOCATION: /usr/src/app/upload
DB_HOSTNAME: postgres
DB_USERNAME: postgres
DB_PASSWORD: postgres
DB_DATABASE_NAME: immich
REDIS_HOSTNAME: redis
DB_PORT: 5432
volumes:
- uploads:/usr/src/app/upload
depends_on:
postgres:
condition: service_started
redis:
condition: service_started
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:2283/api/server/ping']
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
restart: unless-stopped
postgres:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg16-v0.3.0
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: immich
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
restart: unless-stopped
redis:
container_name: immich_redis
image: redis:7-alpine
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 10s
timeout: 5s
retries: 5
start_period: 5s
restart: unless-stopped
volumes:
uploads:
pgdata: