diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0912c3c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +name: CI Pipeline + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + install: true + + - name: Install Docker Compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + docker-compose --version + + - name: Start Docker Compose services + run: | + docker-compose up -d + env: + COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: 1 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.9' + + - name: Install uv + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "$HOME/.cargo/bin" >> $GITHUB_PATH + + - name: Install dependencies + run: | + uv pip install --system -r pyproject.toml --group dev + + - name: Generate protobuf files + run: make generate + + - name: Run tests + env: + PYTHONPATH: ./src + run: make test + + - name: Cleanup + if: always() + run: | + docker-compose down -v + rm -rf __pycache__ tests/__pycache__ \ No newline at end of file diff --git a/tools/tests/run_tests.sh b/tools/tests/run_tests.sh index 33054f2..756335b 100755 --- a/tools/tests/run_tests.sh +++ b/tools/tests/run_tests.sh @@ -41,8 +41,11 @@ print_emoji_line "=>" "${YELLOW}" docker-compose up -d mongodb-test uv run src/tests/tools/wait_for_mongo.py PYTHONPATH=./src python -m pytest src/tests/ -if [ $? -eq 0 ]; then +pytest_exit_code=$? +if [ $pytest_exit_code -eq 0 ]; then echo -e "${GREEN}🎉 Tests passed successfully!" + exit 0 else echo -e "${RED}❌ Tests failed!" + exit $pytest_exit_code fi \ No newline at end of file