From de2da168c096279cbe22f63086c13615914ff8e2 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 28 May 2025 14:17:45 +0200 Subject: [PATCH 1/2] chore: add integration test to validate docker-compose --- .../workflows/docker-compose-integration.yml | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/docker-compose-integration.yml diff --git a/.github/workflows/docker-compose-integration.yml b/.github/workflows/docker-compose-integration.yml new file mode 100644 index 00000000..33917be3 --- /dev/null +++ b/.github/workflows/docker-compose-integration.yml @@ -0,0 +1,61 @@ +name: Docker Compose Integration + +on: + pull_request: + branches: [ main ] + +permissions: + contents: read + +jobs: + docker-compose-integration: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Start services + run: docker compose up -d + + - name: Wait for services to be healthy + run: | + echo "Waiting for all services to be healthy..." + # Wait for services with health checks to be healthy (4 services) and all services to be up + timeout 300 bash -c 'until [ $(docker compose ps --format "{{.Health}}" | grep -c "healthy") -ge 4 ] && [ $(docker compose ps --format "{{.Status}}" | grep -c "Up") -ge 5 ]; do sleep 5; done' + docker compose ps + + - name: Test dashboard endpoints + run: | + curl -f http://localhost:8081/dashboard/ || exit 1 + curl -f http://localhost:8082 || exit 1 + + - name: Test API endpoints + run: | + # Test sticker award API with sample user data + curl -f -X GET "http://localhost:8080/api/award/v1/users/user-001/stickers" || exit 1 + # Test user management health endpoint + # TODO! + # curl -f -X GET "http://localhost:8080/api/users/v1/health" || exit 1 + + - name: Show service logs on failure + if: failure() + run: | + echo "=== Docker Compose Services Status ===" + docker compose ps + echo "=== Traefik Logs ===" + docker compose logs traefik + echo "=== Sticker Award Logs ===" + docker compose logs sticker-award + echo "=== User Management Logs ===" + docker compose logs user-management + echo "=== Database Logs ===" + docker compose logs sticker-award-db + docker compose logs user-management-db + + - name: Cleanup + if: always() + run: docker compose down -v From 2086f34068e3a3e5bd0deadb17cf5ccb5ee15fc8 Mon Sep 17 00:00:00 2001 From: Scott Gerring Date: Wed, 28 May 2025 14:38:43 +0200 Subject: [PATCH 2/2] chore: only fire other workflows if their directories are touched --- .github/workflows/docker-compose-integration.yml | 1 - .github/workflows/user-management-test.yml | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-compose-integration.yml b/.github/workflows/docker-compose-integration.yml index 33917be3..765633a0 100644 --- a/.github/workflows/docker-compose-integration.yml +++ b/.github/workflows/docker-compose-integration.yml @@ -37,7 +37,6 @@ jobs: run: | # Test sticker award API with sample user data curl -f -X GET "http://localhost:8080/api/award/v1/users/user-001/stickers" || exit 1 - # Test user management health endpoint # TODO! # curl -f -X GET "http://localhost:8080/api/users/v1/health" || exit 1 diff --git a/.github/workflows/user-management-test.yml b/.github/workflows/user-management-test.yml index 121ad579..00ceebc2 100644 --- a/.github/workflows/user-management-test.yml +++ b/.github/workflows/user-management-test.yml @@ -3,8 +3,12 @@ name: User Management Tests on: push: branches: ["main"] + paths: + - "user-management/**" pull_request: branches: ["main"] + paths: + - "user-management/**" workflow_dispatch: jobs: