diff --git a/.dockerignore b/.dockerignore index d7a0073482..8b20aaef99 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,6 +9,7 @@ # Platform - Backend !autogpt_platform/backend/backend/ +!autogpt_platform/backend/test/e2e_test_data.py !autogpt_platform/backend/migrations/ !autogpt_platform/backend/schema.prisma !autogpt_platform/backend/pyproject.toml diff --git a/.github/workflows/platform-frontend-ci.yml b/.github/workflows/platform-frontend-ci.yml index ed57d5d1fe..4e3357ffb3 100644 --- a/.github/workflows/platform-frontend-ci.yml +++ b/.github/workflows/platform-frontend-ci.yml @@ -37,7 +37,7 @@ jobs: - name: Generate cache key id: cache-key - run: echo "key=${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}" >> $GITHUB_OUTPUT + run: echo "key=${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml', 'autogpt_platform/frontend/package.json') }}" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@v4 @@ -45,6 +45,7 @@ jobs: path: ~/.pnpm-store key: ${{ steps.cache-key.outputs.key }} restore-keys: | + ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }} ${{ runner.os }}-pnpm- - name: Install dependencies @@ -72,6 +73,7 @@ jobs: path: ~/.pnpm-store key: ${{ needs.setup.outputs.cache-key }} restore-keys: | + ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }} ${{ runner.os }}-pnpm- - name: Install dependencies @@ -102,6 +104,7 @@ jobs: path: ~/.pnpm-store key: ${{ needs.setup.outputs.cache-key }} restore-keys: | + ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }} ${{ runner.os }}-pnpm- - name: Install dependencies @@ -136,6 +139,7 @@ jobs: path: ~/.pnpm-store key: ${{ needs.setup.outputs.cache-key }} restore-keys: | + ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }} ${{ runner.os }}-pnpm- - name: Install dependencies @@ -185,7 +189,7 @@ jobs: uses: actions/cache@v4 with: path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-frontend-test-${{ github.sha }} + key: ${{ runner.os }}-buildx-frontend-test-${{ hashFiles('autogpt_platform/docker-compose.yml', 'autogpt_platform/backend/Dockerfile', 'autogpt_platform/backend/pyproject.toml', 'autogpt_platform/backend/poetry.lock') }} restore-keys: | ${{ runner.os }}-buildx-frontend-test- @@ -197,12 +201,52 @@ jobs: BUILDX_CACHE_FROM: type=local,src=/tmp/.buildx-cache BUILDX_CACHE_TO: type=local,dest=/tmp/.buildx-cache-new,mode=max + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + if [ -d "/tmp/.buildx-cache-new" ]; then + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + fi + + - name: Wait for services to be ready + run: | + echo "Waiting for rest_server to be ready..." + timeout 60 sh -c 'until curl -f http://localhost:8006/health 2>/dev/null; do sleep 2; done' || echo "Rest server health check timeout, continuing..." + echo "Waiting for database to be ready..." + timeout 60 sh -c 'until docker compose -f ../docker-compose.yml exec -T db pg_isready -U postgres 2>/dev/null; do sleep 2; done' || echo "Database ready check timeout, continuing..." + + - name: Create E2E test data + run: | + echo "Creating E2E test data..." + # First try to run the script from inside the container + if docker compose -f ../docker-compose.yml exec -T rest_server test -f /app/autogpt_platform/backend/test/e2e_test_data.py; then + echo "✅ Found e2e_test_data.py in container, running it..." + docker compose -f ../docker-compose.yml exec -T rest_server sh -c "cd /app/autogpt_platform && python backend/test/e2e_test_data.py" || { + echo "❌ E2E test data creation failed!" + docker compose -f ../docker-compose.yml logs --tail=50 rest_server + exit 1 + } + else + echo "⚠️ e2e_test_data.py not found in container, copying and running..." + # Copy the script into the container and run it + docker cp ../backend/test/e2e_test_data.py $(docker compose -f ../docker-compose.yml ps -q rest_server):/tmp/e2e_test_data.py || { + echo "❌ Failed to copy script to container" + exit 1 + } + docker compose -f ../docker-compose.yml exec -T rest_server sh -c "cd /app/autogpt_platform && python /tmp/e2e_test_data.py" || { + echo "❌ E2E test data creation failed!" + docker compose -f ../docker-compose.yml logs --tail=50 rest_server + exit 1 + } + fi + - name: Restore dependencies cache uses: actions/cache@v4 with: path: ~/.pnpm-store key: ${{ needs.setup.outputs.cache-key }} restore-keys: | + ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }} ${{ runner.os }}-pnpm- - name: Install dependencies diff --git a/autogpt_platform/backend/test/__init__.py b/autogpt_platform/backend/test/__init__.py new file mode 100644 index 0000000000..67d696d6d0 --- /dev/null +++ b/autogpt_platform/backend/test/__init__.py @@ -0,0 +1 @@ +# This file makes the test directory a Python module