Switch to hatchling, uv sources, and from_artifact() APIs #48
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD Pipeline | |
| on: | |
| push: | |
| branches: [master, release] | |
| pull_request: | |
| branches: [master] | |
| release: | |
| types: [published] | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v5 | |
| - name: Create virtualenv | |
| run: uv venv | |
| - name: Install dependencies | |
| run: | | |
| uv pip install \ | |
| "git+https://github.com/vicentebolea/vtk-knowledge" \ | |
| "git+https://github.com/vicentebolea/vtk-validate" | |
| uv pip install -e ".[dev]" | |
| - name: ruff lint | |
| run: .venv/bin/ruff check src/ | |
| - name: ruff format check | |
| run: .venv/bin/ruff format --check src/ | |
| actionlint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install actionlint | |
| run: | | |
| bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) | |
| echo "${PWD}" >> "$GITHUB_PATH" | |
| - name: Run actionlint | |
| run: actionlint | |
| test: | |
| name: Test (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| needs: [lint, actionlint] | |
| strategy: | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v5 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install ${{ matrix.python-version }} | |
| - name: Create virtualenv | |
| run: uv venv --python ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| uv pip install \ | |
| "git+https://github.com/vicentebolea/vtk-knowledge" \ | |
| "git+https://github.com/vicentebolea/vtk-validate" | |
| uv pip install -e ".[dev]" | |
| - name: Run unit tests | |
| run: .venv/bin/pytest -m unit -v | |
| - name: Run client tests | |
| run: .venv/bin/pytest tests/test_client_no_server.py -v | |
| - name: Run integration tests | |
| run: .venv/bin/pytest -m integration -v | |
| docker-deploy: | |
| name: Build and Push Deployment Image | |
| runs-on: ubuntu-latest | |
| needs: [lint, actionlint, test] | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/master' || github.event_name == 'release' | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install Podman | |
| run: | | |
| sudo apt update | |
| sudo apt install -y podman | |
| - name: Log in to GitHub Container Registry | |
| run: | | |
| echo "${{ secrets.GITHUB_TOKEN }}" | podman login ghcr.io -u ${{ github.repository_owner }} --password-stdin | |
| - name: Get short SHA | |
| id: slug | |
| run: echo "SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)" >> "$GITHUB_OUTPUT" | |
| - name: Build and push deployment image | |
| run: | | |
| GITHUB_REPOSITORY="$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" | |
| podman build -f deploy.Dockerfile \ | |
| -t "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:latest" \ | |
| -t "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:${{ github.sha }}" \ | |
| -t "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:${{ steps.slug.outputs.SHORT_SHA }}" \ | |
| . | |
| podman push "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:latest" | |
| podman push "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:${{ github.sha }}" | |
| podman push "ghcr.io/${GITHUB_REPOSITORY}/vtk-mcp:${{ steps.slug.outputs.SHORT_SHA }}" |