name: Main Release on: push: branches: [main] jobs: hadolint: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: hadolint/hadolint-action@06be81baf89a55ffd0e24b8f04a4185738dd3387 # v3.5.0 continue-on-error: true with: dockerfile: pkg/Dockerfile test: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 with: python-version: "3.13" - name: Install dependencies run: pip install -r requirements.txt pytest - name: Run unit tests run: pytest tests/ -v env: # indexer/server read env at import; unit tests need no real backend QDRANT_URL: http://localhost:6333 COLLECTION_NAME: test integration-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Cleanup old Qdrant container run: | docker rm -f qdrant-${{ github.run_id }} 2>/dev/null || true - name: Start Qdrant run: | docker run -d --name qdrant-${{ github.run_id }} \ --network "container:$(hostname)" \ docker.io/qdrant/qdrant:latest - name: Wait for Qdrant run: | for i in $(seq 1 30); do curl -s http://localhost:6333/healthz \ && echo "QDRANT ready" && break echo "Waiting for Qdrant... ($i/30)" sleep 1 done curl -s http://localhost:6333/healthz > /dev/null - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 with: python-version: "3.13" - name: Install dependencies run: pip install -r requirements.txt pytest - name: Run integration tests run: pytest tests/ -v -m integration env: QDRANT_URL: http://localhost:6333 COLLECTION_NAME: test_mcp_maildir - name: Cleanup Qdrant if: always() run: docker rm -f qdrant-${{ github.run_id }} || true build: needs: [test, integration-test] runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4 - run: docker build -f pkg/Dockerfile -t jcabillot/mcp-maildir:${{ github.sha }} . tag: needs: [build] runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 - name: Configure git auth run: | git remote set-url origin "https://x-access-token:${{ secrets.SA_TOKEN_ACTION_PUSH_TAGS }}@scm.cabillot.eu/perso/mcp-maildir.git" - uses: anothrNick/github-tag-action@4ed44965e0db8dab2b466a16da04aec3cc312fd8 # v1.75.0 env: GITHUB_TOKEN: ${{ secrets.SA_TOKEN_ACTION_PUSH_TAGS }} DEFAULT_BUMP: patch RELEASE_BRANCHES: main WITH_V: true GIT_API_TAGGING: false