pypi-publish.yaml•1.92 kB
# This workflow will upload Python Packages using uv when a release is created
# It builds and publishes multiple packages for different Elasticsearch versions
name: PyPI Publish
on:
workflow_run:
workflows: ["Release"]
types:
- completed
env:
UV_PUBLISH_TOKEN: '${{ secrets.PYPI_API_TOKEN }}'
jobs:
deploy:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
strategy:
matrix:
variant:
- name: "elasticsearch-mcp-server-es7"
elasticsearch_version: "7.13.0"
- name: "elasticsearch-mcp-server"
elasticsearch_version: "8.17.2"
- name: "elasticsearch-mcp-server-es9"
elasticsearch_version: "9.0.0"
- name: "opensearch-mcp-server"
elasticsearch_version: "8.17.2"
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.10.x'
- name: Install dependencies
run: |
python -m pip install uv
uv sync
- name: Modify pyproject.toml for ${{ matrix.variant.name }}
run: |
# Update package name
sed -i 's/^name = .*$/name = "${{ matrix.variant.name }}"/' pyproject.toml
# Update elasticsearch version
sed -i 's/elasticsearch==.*/elasticsearch==${{ matrix.variant.elasticsearch_version }}",/' pyproject.toml
# Update script name to match package name (only for non-opensearch packages)
if [[ "${{ matrix.variant.name }}" != "opensearch-mcp-server" ]]; then
sed -i 's/^elasticsearch-mcp-server = /"${{ matrix.variant.name }}" = /' pyproject.toml
fi
- name: Build ${{ matrix.variant.name }} package
run: uv build
- name: Publish ${{ matrix.variant.name }} package
run: uv publish
- name: Clean dist directory
run: rm -rf dist/*